본문 바로가기

전체 글123

Elastic Search 톺아보기 #4 Aggregations Aggregations은 검색 결과에 대한 집계 데이터를 생성하는 기능이다. 검색 결과를 좀 더 쉽게 요약해서 보고 싶을 때 사용할 수 있다. Aggregations를 사용하여 총 수익, 월별 수익 등 다양한 집계 데이터를 생성할 수 있다. 이를 통해 엘라스틱에서 더 효율적인 검색결과 분석이 가능하다. Query가 원하는 검색에 대한 문서 정보를 반환하는 목적이라면, Aggregations은 원하는 검색에 대한 문서들의 요약을 반환한다. Metric Aggregations Metric Aggregations은 검색 결과에 대한 숫자 데이터 집계를 수행하는 기능이다. 이 기능은 수치 데이터의 요약정보를 쉽게 이해할 수 있도록 해준다. 예를 들어, sum, min, max, avg, .. 2023. 4. 17.
Elastic Search 톺아보기 #3 문장 검색하기 Elastic Stack에서는 match_phrase 쿼리를 사용하여 정확한 문장 검색을 할 수 있다. 이를 사용하면 원하는 구문에 대한 정확한 쿼리를 받을 수 있다. 또한, multi_match 쿼리를 사용하여 여러 필드에서 한 번에 검색할 수 있으며, 필드 당 가중치를 다르게 주어 원하는 결과를 얻을 수 있다. Bool Query를 사용하여 여러 쿼리를 조합하여 검색할 수도 있다. 이러한 문장 검색에 사용되는 쿼리들을 실제 프랙티스에서는 어떻게 적용할 수 있는지 확인해보자. 먼저, 뉴스 헤드라인 데이터셋에서 에드 시런의 "Shape of you"를 검색하는 시나리오를 상상해보자. GET news_headlines/_search { "query": { "match": { "headline.. 2023. 4. 12.
OPIc AL 후기 지난 주 사내오픽 시험을 보고, 긴가민가한 마음으로 성적을 확인하였는데 AL이 나온 것을 확인하였다. 솔직히 더 유창하게 답변했다고 생각했는 데 IH가 나왔던 이전 시험들을 생각했을때 약간 의아했지만, 그래도 좋았다. 점수가 나온 김에 나의 시험준비 단계부터 AL 취득기를 정리해보려고 한다. 시작하며 본인은 일단 따로 학원에서 수강하지 않고, 유튜브에서 실전연습 강의들만 찾아듣고 모의고사 위주로 풀이를 녹음하면서 연습하였다. 나는 영어로 소통하고 의사를 표현하는 기본적인 영어회화 실력이 있지만, 비즈니스 회화 스킬이 아직 완벽하지 않다. 기본적인 영어 문장 구성이나 생각한 논리를 영어로 표현하는 것에는 문제가 없지만, 상황과 문맥에 완벽하게 맞는 고급 어휘를 사용하지 못하고 익숙한 쉬운 단어들을 사용하는.. 2023. 3. 19.
Elastic Search 톺아보기 #2 Precision vs Recall Precision과 Recall은 정적분석에서도 사용되지만 데이터 분석에서도 자주 나타나는 중요한 개념이다. 이 둘은 머신러닝 모델의 성능을 평가하거나, 검색 엔진의 검색 결과를 평가하는 등 다양한 분야에서 사용된다. Precision은 모델이 예측한 결과 중 실제로 정답인 것의 비율이다. 즉, 모델이 Positive로 예측한 것 중에서 실제로 Positive인 것의 비율을 나타낸다. Precision = TP / (TP + FP) 여기서 TP(True Positive)는 모델이 Positive로 예측하고 실제로 Positive인 것의 수를, FP(False Positive)는 모델이 Positive로 예측했지만 실제로 Negative인 것의 수를 나타낸다. Recal.. 2023. 3. 14.
Elastic Search 톺아보기 #1 Elastic Stack은 대용량의 로그, 네트워크, 보안 데이터, 시계열 데이터 및 기타 데이터를 수집, 저장, 검색, 분석하고 시각화할 수 있는 4가지 기술을 의미한다. Elastic Search: 대용량의 데이터를 검색하고 분석 Logstash: 데이터 수집, 가공, 적재 Kibana: 데이터 시각화 웹 인터페이스 Beats: 시스템, 네트워크, 보안 데이터 등을 수집 이 중에서, Elastic Search는 데이터를 저장/검색/분석하는 Elastic Stack의 심장부 역할을 한다. Elastic Search는 언제 사용하는가? Elastic Search는 데이터 검색에서 Speed & Relevancy를 해결해주는 도구이다. 1. 고객이 제품을 검색 Elastic Search는 데이터베이스의 규.. 2023. 2. 12.
XPS 13 9360 인텔 랜카드 자가교체 후기 서문 노트북을 사용하면서 와이파이가 간헐적으로 자주 끊기는 현상이 발생하였다. 내가 사용하는 노트북은 5년전 구매한 XPS 13 9360 모델인데, 처음에는 사용하는 네트워크의 문제인 줄 알고 공유기도 교체하여 보았지만 나아지지 않았다. 구글링을 통해 나와 비슷한 증상을 가진 사람들이 랜카드 교체를 통해 문제를 해결한 것을 확인하였다. 나는 Aliexpress에서 인텔 9260 랜카드 구매하였고, 자가교체한 후기를 작성해보려고 한다. 교체방법 먼저, 알리에서 배송받은 랜카드는 이렇게 생겼다. 이 랜카드를 교체하기에 앞서, 먼저 인텔 홈페이지에서 와이파이/블루투스 드라이버를 인텔 홈페이지에서 로컬에 다운받아 놓는다. 그리고, 이전 글에서 소개했던 것처럼 배터리를 교체하는 것과 동일하게 노트북 후면을 분해한.. 2022. 12. 17.
Pandas Series와 DataFrame의 차이 데이터 분석시 사용되는 Pandas 라이브러리 API 등의 리턴타입이 Series와 DataFrame으로 나뉘는 경우가 있다. Series와 DataFrame은 거의 유사하지만, 동시에 다른 점이 존재한다. Series/DataFrame이란? Series: Pandas Series는 테이블의 열과 같다. 모든 유형의 데이터를 보유하는 1차원 배열이다. DataFrame: Pandas DataFrame은 2차원 배열 또는 행과 열이 있는 테이블과 같은 2차원 데이터 구조이다. 그래서 뭐가 다른가? Series는 개념적으로 뿐 아니라 말그대로 DataFrame의 단일 열에 대한 데이터 구조이다. 즉, DataFrame의 데이터가 실제로 메모리에는 Series의 컬렉션으로 저장되는 것이다. 또한 행렬은 리스트.. 2022. 11. 19.
객체 참조, 가변성, 재활용 변수는 상자가 아니다 린 안드레아 스타인 교수는 흔히 비유하는 '상자로서의 변수' 개념이 실제로는 객체지향 언어에서 참조 변수를 이해하는 데 방해가 된다고 강조했다. 파이썬 변수는 자바에서의 참조 변수와 같으므로 변수는 상자보다는 객체에 붙은 포스트잇 같은 레이블이라고 생각하는 것이 더 좋다. 변수는 단지 레이블일 뿐이며 객체에 여러 레이블을 붙이지 못할 이유가 없다. 여러 레이블을 붙이는 것을 별명이라고 부른다. 정체성, 동질성, 별명 >> charles = {'name': 'Charles L. Dogson', 'born': 1832} >> lewis = charles >> lewis is charles True >> lewis['balance'] = 950 >> charles {'name': 'Cha.. 2022. 11. 15.
일급 함수 디자인패턴 일급 함수 파이썬의 함수는 일급 객체다. 파이썬에서 함수는 다음과 같은 작업을 수행할 수 있다. 런타임에 생성할 수 있다. 데이터 구조체의 변수나 요소에 할당할 수 있다. 함수 인수로 전달할 수 있다. 함수 결과로 반환할 수 있다. 이러한 파이썬의 일급 함수 성질을 이용하여 함수형 스타일로 프로그래밍할 수 있다. 이 글에서는 함수 객체를 이용하여 전략 패턴을 리팩토링하는 방법을 정리한다. 클래스를 사용한 전략 패턴 위 전략 패턴에 대한 UML에서 들어가는 구성요소는 다음과 같다. 콘텍스트: 일부 계산을 서로 다른 알고리즘을 구현하는 교환 가능한 컴포넌트에 위임하여 서비스를 제공 전략: 여러 알고리즘을 구현하는 컴포넌트에 공통된 인터페이스 구체적인 전략: 전략의 구성 서브클래스 중 하나 전략 패턴의 예는 .. 2022. 11. 14.
dict와 set의 내부구조 많은 사람들은 파이썬 dict와 set이 빠른 것을 안다. 또한 이들의 key 순서가 유지되지 않는 것도. 이러한 dict와 set의 특성을 내부구조를 파악하며 설명해보려고 한다. 성능 실험 다음과 같은 예제에서 haystack 안에 있는 needles를 검색하고 발견된 횟수를 찾는 프로그램을 비교 실험한다. found = 0 for n in needles: if n in haystack: found += 1 실험결과는 fluentpython.com의 아래 테이블을 참조하였다. haystack의 크기를 10배씩 늘려가며 각각의 자료구조에서 키를 검색하는데 걸리는 시간을 비교하였다. 예상했던 바와 같이 haystack의 크기가 10,000X로 천만단위가 되어도 dict와 set의 키 검색시간은 3.5~5... 2022. 11. 12.
+= 복합 할당 문제 파이썬 튜플은 Immutable Sequence이다. 그러나, 튜플에는 복합 타입의 원소들을 다룰 수 있고, 이에 대해 += 연산자를 사용하였을 때 이상한 일이 발생한다. 아래와 같은 (int, int, list[int]) 타입의 튜플에 += 연산자를 사용하면 무슨 일이 발생하겠는가? >> t = (1, 2, [3, 4]) >> t[2] += [5, 6] t가 (1, 2, [3, 4, 5, 6])가 된다. 튜플 객체는 item assignment 연산을 지원하지 않는다는 에러메세지와 함께 타입에러 발생 놀랍게도 두가지 일이 동시에 일어난다. >> t = (1, 2, [3, 4]) >> t[2] += [5, 6] Traceback (most recent call last): File "", line 1, .. 2022. 11. 12.
Machine Learning for Production (MLOps) 이 강의에서 앤드류 응 교수는 머신러닝 모델을 잘 개발하는 것 뿐 아니라, 머신러닝 시스템을 운용하고 모델 및 데이터의 오류분석을 수행하는 MLOps의 전체 과정에 대해서 설명한다. 강의 내용은 좀 더 포괄적이지만 이 글에서는 핵심의 내용 위주로 정리해보려고 한다. MLOps란 무엇인가? MLOps, Machine Learning Operations의 약자로, 머신러닝 프로젝트 라이프사이클의 전체 프로세스를 각각의 단계에서 지원하는 도구들의 집합과 원칙들을 포함하는 전부를 이야기한다. 이는 머신러닝 프로젝트에서의 문제정의, 데이터 생성, 모델링(학습), 배포의 단계를 모두 포함한 것이다. 또한, 각각의 시스템적 단계에서 그것들을 지원하는 SW 도구까지 모두 포함하는 것이 MLOps이다. 머신러닝 시스템에.. 2022. 10. 6.
A Taste of GPU 이 프레젠테이션에서 발표자인 라프 르비엔은 GPU에 프로그래밍 하는 좋은 방법은 사실 함수형 프로그래밍이며, 함수형 프로그래밍이야말로 문제를 작은 단위로 쪼개어 각 상태끼리의 의존관계가 진짜 함수 단위로 명백한 것이라고 한다. 그는 GPU 위에서 동작하는 고성능의 렌더링 프로그램 예시를 들어 GPU 프로그래밍의 구조를 설명한다. 왜 GPU에서 코드를 돌리고 싶을까? 기존의 칩 제작자들은 무어에 법칙에 따라 칩 위에 트랜지스터 갯수를 늘리는 트렌드에 따랐지만 15년전후로부터는 데너드 스케일: 칩이 또한 속도가 계속 빨라진다는 법칙을 따랐다. 이 말인즉슨, 이제 싱글코어 성능을 향상에 퍼포먼스 향상을 기대하는 것은 끝났고, 현대의 컴퓨터 칩에서 성능향상을 도모할 수 있는 방법은 병렬화와 멀티코어 뿐이라는 것.. 2022. 9. 12.
Columnar Database는 무엇인가? Columnar Database는 무엇인가? Columnar Database, 열 기반 데이터베이스는 데이터를 행 기반이 아닌 열 기반으로 저장하는 데이터베이스를 의미한다. 이러한 열 기반 데이터베이스의 목적은 쿼리로부터 처리하는 속도를 높이기 위해 하드디스크 스토리지에 데이터를 효과적으로 읽고쓰기 위함이다. 이러한 열 기반 데이터베이스는 디스크 입출력 성능을 현저히 증가시키며 특히 데이터 분석과 데이터 웨어하우스 작업에 용이하다. Columnar vs. Row-base 열 기반 데이터베이스를 전통적인 행 기반 데이터베이스와 비교해보면 장단점은 아래와 같다. (전통적인) 행 기반 데이터베이스 더 잘하는 것 Incremental한 데이터 로드 온라인 트랜잭션 처리 용도 적은 수의 행을 포함하는 쿼리 열 기.. 2022. 8. 15.
OpenAI DALL·E 체험기 요즘 한창 뉴스 및 여러 업계에서 주목하는 OpenAI DALL·E를 체험해보았다. 각설하고 사용하는 방법을 설명하자면, DALL·E 공식 홈페이지에 들어가면 등록페이지가 있다. 이메일로 회원가입을 한 뒤, 며칠 기다리면 이렇게 메일이 온다! Get started의 링크를 따라가면 공식 홈페이지와 연결되어 있고, 기본 40개의 쿼리를 날릴 수 있는 쿼타를 주는데 한 달마다 조금씩 더 주는 정책인 것 같다. 그래서 신중하게 아껴 써야한다... 한 개의 자연어 쿼리를 날리면 4개의 이미지 출력을 반환해준다. DALL·E 생성 이미지 결과물 내가 좋아하는 코기를 주인공으로 몇 가지 주제로 쿼리를 날려보았다. 1. 마티스 풍의 체스하는 휴머노이드 로봇 코기(나쁘지 않은) Query: an oil painting.. 2022. 8. 13.