보통 엔트로피라 하면 과학 분야에서 많이 쓰이는 말이지만, 통계학 혹은 데이터 분석쪽에서도 곧잘 쓰이는 용어이다. 일단 엔트로피를 가장 많이 활용하는 것 중 하나가 결정 트리(Decision Tree)이다. 결정 트리의 경우 우리가 엔트로피를 이해하고, 정보 이득(Information Gain)도 공식으로 풀어낼 수 있다면 충분히 결정 트리를 구현할 수 있을 정도이다. 엔트로피의 개념 엔트로피는 노드의 불순성(혹은 무작위성)을 나타내며, 1로 갈수록 불순하고, 0으로 갈수록 불순하지 않다는 의미이다. 여기서 불순하지 않다는 것은 잘 섞이지 않았다는 의미이다. 예를 들어, 백인 10명, 흑인 10명이 한 집단에 있다고 하였을 때, 특정 조건으로 이 집단을 2개의 집단으로 분리했다고 가정을 해보자. 이때 집..
KNN 알고리즘 개념 k최근접 알고리즘(k-nearest neighbors algorithm, KNN) 알고리즘은 분류(classify) 문제에도 사용할 수 있고, 회귀(Regression) 문제에도 사용할 수 있으며, 수많은 알고리즘의 중간 과정(예를 들어 추천 알고리즘인 CF에서도 사용)에서도 자주 쓰이는 알고리즘이다. KNN의 k라는 것은 숫자를 뜻하며 여기에 숫자는 이웃이고, k만큼의 이웃을 지정하여 그 이웃들의 값을 토대로 계산한다. KNN은 쉽게 생각하면 유사 알고리즘과 같다 컬럼별로 유사한 이웃들을 찾아서 값을 계산하고, 이를 통해 최종적으로 분류 및 회귀 문제를 풀기 때문이다. 키와 몸무게를 기반으로 헌병과 그외의 보직을 예측한다고 가정을 해보자. 이는 실제 데이터가 아니라 어디까지나 예시..
DeFi의 개념 DeFi는 Decentralized Finance의 약어로 블록체인 기술을 활용한 탈중앙화 금융 플랫폼을 말합니다. DeFi와 완벽한 안티테제를 생각하면 현재 시중의 은행이나 보험사 등을 생각하면 됩니다. DeFi는 매우 혁신적이면서도 아직 위험한 서비스이자 사상입니다. 모든것을 코딩으로 의존하고 책임을 지는 사람조차 없는 그런 시스템이다보니 작은 버그로 인해서 모든 암호화폐가 탈취 될 수도 있고, 악의적인 공격자로 인해서 시스템이 망가질수도 있는등 아직은 꽤나 불안정한 모습을 보여주고 있고 실제로 그러합니다. DeFi의 서비스 종류 DeFi는 블록체인으로 만들어졌으며, 이더리움과 같이 튜링완전성(자원만 충분하면, 한마디로 모든 것을 프로그래밍 할 수 있다라는 의미)을 지원하는 코인을 기..
자바(Java)로만 엘라스틱서치(Elastic Search)에 대해서 다뤄봤는데 이번에는 파이썬(Python)으로 엘라스틱 서치를 다뤄보도록 하겠습니다. 데이터는 추후 주가 분석을 등을 하기 위해서, 삼성전자의 주식 데이터를 저장해보는 것으로 해보겠습니다. 삼성전자 주식 데이터 야후의 Finance라는 사이트에 가시면, 종목을 입력할 수 있고 삼성전자의 종목(005930.KS)[1]를 입력하면 위와 같이 삼성전자 종목 정보로 넘어갑니다. 화면의 붉은색 네모박스로 체크한 곳을 보면, Download라고 되어 있는데 이 곳을 클릭하면, 삼성전자의 Historical Prices 데이터를 받을 수 있습니다. 귀찮은 분들을 위해서 아래의 파일을 받으셔도 됩니다. 삼성전자 주가 데이터 직접 위 사이트에서 받으시거..
텐서(Tensor)라고 하면 텐서플로우를 떠올리기 쉽지만, 사실 딥러닝에서는 데이터를 처리하기 위한 데이터의 형태라고 이해하면 된다. 0차원의 데이터는 보통 스칼라(Scalar)라고 하는데 파이토치에서는 0-Tensor(랭크 0)이며, 스칼라 데이터의 나열인 벡터는 1-Tensor(랭크 1), 행렬은 2-Tensor(랭크 2)이다. 텐서는 파이썬의 대표적인 라이브러리인 넘파이(numpy)와 유사하고 넘파이와 데이터를 쉽게 서로 변환 할 수도 있다. 위 내용들을 좀 더 쉽게 설명하자면, 우리가 프로그램으로 사용하는 변수들을 딥러닝으로 처리하기 위해서는 변환을 해야 하는데 그 단위가 바로 텐서라고 생각하면 된다. 텐서 데이터타입 [1] 데이터 타입 dtype CPU tensor GPU tensor 32-bi..
파이토치(Pytorch)는 페이스북에서 바톤터치를 한 이후 계속 만들고 잘 관리하고 있으며 한 때 텐서플로우로 딥러닝 시장이 제패될 것 같던 상황에서 파이토치가 기가 막히게 생명력을 유지하면서 최근에는 특정 분야는 더 앞서는 모습을 보여주기도 한다. Pytorch는 그냥 학문에서나 쓰이며 박사나 일부 연구원들이 사용하는 것이라 다짐하며, 다시는 배우지 않을거라 생각했지만 최근 들어 자연어처리쪽의 파이토치의 약진이 무섭다. 그래서 신기술을 빠르게 익히기 위해서 Pytorch를 배운다는 것은 선택이 아니라 필수가 되어 버렸다. 그럼 설치와 사용에 앞서 각각은 언제 사용하는 것이 좋은지 해외 아티클들을 뒤지면서 정리해보았다. Pytorch vs Keras vs Tensorflow 우선 초창기의 텐서플로우(Te..
리눅스(Linux)에서 어플리케이션을 돌려야 될 경우, 크론탭을 알아야 되는 건 필수라 할 수 있다. 크론탭은 특정 시간에 특정 작업을 할 수 있게 도와주는 기능으로 Web의 경우 크론탭(ex: spring scheduler)이 내장되어 있는 경우가 있어서 몰라도 상관 없지만, 어플리케이션은 프로세스가 종료되기 때문에 OS에서 이 기능을 해줘야 한다. 크론탭의 기본 기능 크론탭 리스트 crontab -l 크론탭으로 만든 스케쥴들을 출력한다. 마치 cat으로 텍스트 내용을 출력하는 것과 유사한 모습이다. 크론탭 작성 crontab -e 위와 같은 명령어를 한 경우 vi 편집기같은 화면이 뜨게 된다. 스케쥴링을 작성 한 후 vi 편집기처럼 ESC -> 콜론(:) -> wq를 누르면 저장이 된다. 만약 입력한..
결정 트리 혹은 의사결정 나무(Decision Tree) 분류기는 무언가를 설명할 때, 매우 유용한 퍼포먼스를 보여주는 모델이다. 최근에는 설명 가능한 인공지능(Explainable AI, XAI)이라는 것이 이슈이며, 몇몇 국회의원은 IT 기업들의 알고리즘을 공개해야 된다는 이야기까지 나오기도 하였다. 또다른 관점으로는 새로운 서비스의 창출이다. 예를 들어, 설명을 할 수 있을 정도의 모델이라면 리포트(Report)를 보여준다던지, 설명 값을 토대로 다른 서비스를 만들 수도 있을 것이다. 결정 트리는 바로 이러한 방식에 특화된 알고리즘이며, 설명이 가능한 것을 제외하고 나쁘지 않을까 생각할 순 있지만, 아직도 많이 사용될 정도로 성능 또한 뒤쳐지지 않는다. 결정 트리의 구성도 일단 결정 트리인 이유는 ..
해밍 거리(Hamming Distance)는 리차드 웨슬리 해밍이라는 수학자가 만든 같은 크기를 가진 데이터를 놓고, 같은 위치에 있는 값들끼리 비교를 하는 매우 직관적인 알고리즘이다. 해밍거리 예시 "머신러닝"과 "머신건"이 얼마나 유사한지 해밍 거리로 비교를 해보자. 머 신 러 닝 머 신 건 O O X X 위와 같이 총 2개가 유사하고, 2개는 다르기에 둘간의 거리는 즉 2가 된다. 여기서 머신건은 3글자이고 머신러닝은 4글자이기 때문에 부족한 글자는 공백으로 치환을 하고 계산을 해야 한다. 계산을 할 때 공백을 추가하지 않을 경우 에러가 발생된다. 글자수가 다를 경우 에러 화면 Traceback (most recent call last): File "E:/Python/Post/similar/hamm..
데이터 분석을 해야 하거나 할 줄 아는 사람이라면 처음에 데이터의 형태를 파악해야 할텐데 히스토그램(Histogram)은 데이터의 분포도를 볼 때 매우 유용한 통계 시각화 기법이다. 원래 통계 기법은 R이 상징적인 언어였으나 최근에는 데이터 분석을 하는 사람들이 굳이 R로 하지 않고 파이썬에서 하는 경우가 많아졌다. 히스토그램용 데이터 가져오기 (housing dataset) import os import tarfile import urllib.request as urllib import pandas as pd data_url = "https://raw.githubusercontent.com/ageron/handson-ml2/master/datasets/housing/housing.tgz" data_pa..
이전 포스팅에서는 넷플릭스(Netflix)에 대해서 알아보았다. 다만 많은 추천(Recommendation)을 연구하는 연구원과 다르게 일반 사용자들 특히 대한민국 국민들은 넷플릭스를 추천의 대명사처럼 생각하지는 않을 것이다. 왜냐하면 우리가 추천이라는 것을 별도로 인지하기 힘이 들며, 넷플릭스 추천의 경우 잘 만든 큐레이션 처럼 생각할 수 있기 때문이다. 그에 반해 한국 국민들은 유튜브의 추천 알고리즘을 긍정적이고 핫하게 생각하는 경우가 많다. "알 수 없는 유튜브의 추천 알고리즘이 나를 여기로 이끌었다"[1]와 같은 댓글처럼 유튜브의 추천 알고리즘은 많은 사용자들에게 매우 신기하고 경이로운 영역이며 사람들이 인공지능(AI)을 긍정적으로 평가할 수 있는 요소로 자리잡기도 했다. 브레이브 걸스 역주행 사..
자카드 유사도(Jaccard Similarity)니, 자카드 계수(Jaccard Coefficient)니 자카드 지수(Jaccard Index)니 사실 다 같은 말이지만 여기서는 제목을 자카드 유사도로 지정하였고, 많은 사람들이 자카드 다음에 유사도를 더 많이 검색을 하는 것 같아서 본 포스팅은 자카드 유사도로 용어를 통일하도록 한다. 유사도(Similairy) 유사도란 A라는 아이템과 B라는 아이템이 얼마나 유사한가를 수치로 표현한 값이다. 유사도 측정 방법에는 유클리디안 거리, 맨하튼 거리, 피어슨 상관 계수, 코사인 유사도, 자카드 유사도, 타니모토 유사도 등이 있으며 가장 보편적으로 유클리디안, 자카드, 피어슨 상관 계수, 코사인 등을 활용하고 있다. 사실 자카드 유사도라는 것을 설명해야 될 것인..