개발/파이썬 머신러닝 완벽가이드 정리 17

추천

실제 우리가 사용하는 서비스들은 개인화된 정보들을 나타납니다. 구글, 넷플릭스 등등 내가 원하는 정보를 가장 위에 올려주게 프로그래밍 되어있습니다. 이 것을 어떻게 하는지 잠깐 알아보면 1)협업 필터링 2)콘텐츠 기반 필터링 이 있습니다. 1)협업 필터링의 경우 내가 어떤 영화를 보고 싶은데, 이 영화가 내가 좋아할지를 알 수가 없습니다. 때문에, 나와 비슷한 취향을 가지고 있는 친구의 영화 취향을 참고해서 선택을 한다면, 내 취향에 딱 맞는지 안 맞는지 높은 확률로 알 수 있습니다. 2)콘텐츠 기반 필터링 의 경우, 내가 고른 영화와 비슷한 장르의 영화는, 내가 더 좋아하지 않을까 라고 예측하는 것이 콘텐츠 기반 필터링입니다.

군집화 용어

군집화를 공부하다보면 새로운 용어가 많이 등장합니다. Mean Shift 라는 애가 나오는데, 데이터를 중심으로 이동하는 방법입니다. bandwidth의 크기에 따라, 군집화 영향도가 큰데, 오버피팅을 방지하기 위해 적당한 bandwidth를 사용해야 합니다. 그리고 KDE(Kernel Density Estimation)인데, 군집화에서 밀도를 추측하는 방법입니다. 또한 모수적 방법과 미보수적 방법이라고 있는데, 어떠한 표본의 경우에 정규분포를 띈다고 가정했을 때, 이 표본이 굉장히 작다면, 정규분포를 띄지 않습니다. 이 때 모수적 방법을 사용하지 않는 비모수적 방법이라는 것을 사용해서 추정을 합니다. 가우시안 분포 라는 것도 나오는데, 정규분포의 다른 말 입니다. GMM(Gaussian Mixture ..

군집화(K-Means)

군집화(Clustering)에 대해서 알아보겠습니다. 이름에서 보이다시피, 어느 그룹에 묶는다고 생각하시면 될 것 같습니다. 그러면 군집화(Clustering)과, 분류(classification)이 뭐가 다른가? 에 대한 의문이 드실 수도 있습니다. 군집화의 경우 Label이 없는 것으로 나눕니다. 그러니깐 컴퓨터에게 이런 것이라고 feature를 정해주지 않고, 알아서 비슷한 것들 끼리 묶는다 라고 생각해주시면 됩니다. 실생활에서는, 고객을 세분화할 때 사용합니다. 고객을 세분화하여 마케팅 전략을 짜거나 이미지들의 특성을 세분화하여 나눠서 사용합니다. K-means알고리즘의 경우 각 클러스트와 거리 차이의 분산을 최소화하는 방식으로 동작됩니다. 장점 - 알고리즘이 간단하고 대용량 데이터에 적용이 용이..

과소적합과 과적합(Overfitting, underfitting)

과소적합과 과적합에 대해서 알아보겠습니다. 머신러닝에서 느낌상 과소적합은 학습이 부족한 느낌이고, 과적합 같은 경우에는 학습이 많이 된 느낌입니다. 그러면 학습이 많이 된 것이 왜 나쁜가? 좋은 것 아닌가 라고 할 수 있는데 아래의 그림을 보고 설명드리겠습니다. Degree1 을 보면은 학습이 조금밖에 안돼서 주황색 선을 따라 학습 곡선이 그려지지 못한 겁니다. 이 경우에는 학습을 더 해야겠죠? Degree4 는 주황색 선을 잘 따라가면서 학습이 잘 되었습니다. Degree15 를 보면 파란색 점을 잘 따라서 찍기는 했지만, 학습하길 원하는 주황색 선의 그래프와는 굉장히 많이 벗어났습니다. 이 때문에, 오버피팅을 방지하고 가장 적합한 만큼만 학습을 하는 방법이 필요합니다. --참조 [1] - https:..

XGBoost, LightGBM

LightGBM와 XGBoost에 대해서 알아보겠습니다. XGBoost는 GBM(Gradient Boosting Algorithm)에 기반하지만, GBM의 단점을 보완하여 각광받고 있습니다. XGBoost는 GBM에 기반하고 있지만, GBM의 단점인 느린 수행시간과 과적한 규제 부재 등의 단점을 해결해서 각광받고 있습니다. 일반적으로 분류와 회귀영역에서 뛰어난 예측성능을 발휘하고, 병렬 수행 및 다양한 기능으로 GBM에 비해 빠른 성능을 보장합니다. LightGBM은 XGBoost에 단점을 보완한 러닝 알고리즘입니다. LightGBM에 경우, 학습에 걸리는 시간이 XGBoost보다 적고, 기능상의 다양한 이점이 있습니다. 또한, 카테고리형 피처의 자동변환과 최적분할을 지원합니다. 참고 [1] - http..

앙상블학습, 배깅, 보팅

앙상블이라는 단어를 무슨 요리 프로그램에서 들어본 것 같습니다. 재료들이 앙상블을 이룬다? 뭐 이런말을 할 때 썻던 것 같은데, 이게 머신러닝에서 어떻게 쓰이냐 하면 머신러닝에서 어떤 데이터의 값을 예측한다고 했을 때, 모델을 하나 만들어서 학습시킨 후, 평가를 실행합니다. 하지만 앙상블 학습법에서는 모델을 여러개 학습시켜, 그 모델들을 결합시켜 좋은 결과를 내는 학습 방법입니다. 이 앙상블 헉습법에는 두 가지가 있는데, 배깅과 부스팅입니다. 하나씩 한번 보겠습니다. 배깅(Bagging) 배깅이란 샘플을 여러번 뽑아서, 각 모델을 학습십켜 집계하여 모델을 만드는 방식입니다. 이 것을 그림으로 나타내면 아래와 같습니다. 그럼 부스팅이란 무엇일까요 얘는 성능이 약한 학습기를 여러가 연결하여, 강한 학습기를 ..

결정트리

결정트리(decision tree)에 대해서 알아보겠습니다. 결정트리라는 이름처럼, 결정을 하는 트리입니다. 그러면 얘가 머신러닝과 무슨 상관이 있는가? 라고 하시면, 일단 사람의 의사결정 과정을 생각해보겠습니다. 사람이 어떠한 결정을 하는데에 굉장히 많은 상황이 고려됩니다. 예를 들면, 오늘 비가 올 것 같다 라고 했을 때, 우산을 들고 갈까 말까 고민을 하다보면, 예전에는 이렇게 바람이 불면 비가 왔었다 라던가 일기예보에서 확률이 몇퍼센트라고 했던가 처럼 많은 상황이 고려가 됩니다. 이 과정에서 저희는 정보획득량이라는 것을 알게 됩니다. 정보획득량은 정보함수와 엔트로피로 구성되어 있습니다. 정보획득량은 어떤 사건이 얼마만큼의 정보를 줄 수 있는지를 수치화한 값입니다. 정보함수와 엔트로피는 어렵게 설명..

ROC, AUC

ROC 커브(Receiver Operating Characteristic curve)란 무엇인지 알고 가봅시다. 우리가 만약 암을 진단하는 머신러닝 모델을 만들었습니다. 그런데, 얘가 암이 아닌데 암이라고 진단해버리면, 갑자기 환자는 멀쩡한데 암 환자가 되겠죠? 이런 일이 없을 수는 없지만, 이런 일이 없도록 노력해야 합니다. 때문에 ROC커브를 통해서, 머신러닝 모델의 정확도를 예측할 수 있습니다. ROC Curve에서 아래 보이는 파란색 주황색 초록색 밑의 라인을 AUC라고 하는데, ROC커브에서 AUC면적이 높을 수록, 이 머신러닝 모델의 정확도가 높다고 평가합니다. 참조 [1] - https://losskatsu.github.io/machine-learning/stat-roc-curve/#3-ro..

classification성능평가와 accuracy

분류(Classification)과 정확도(Accurancy)에 대해 알아보겠습니다. 자, 차근차근히 알아볼텐데, 이진 분류 문제에서 정확도 예측을 어떻게 하느냐? 를 물어봅니다. 예를 들면 "암"에 걸린 경우 암의 양성(positivie)데이터와 음성(negative)데이터를 가지고 있다고 생각해봅시다. 위의 경우 양성, 밑의 경우 음성인 그림을 볼 수 있는데, 현실 세계에서는 저렇게 아름답게 데이터가 분류되지 않습니다. 위의 그림처럼, 애매하게 Classification 이 걸쳐있어, False Positive 부분과 False Negative부분이 생깁니다. 이 때문에 100%의 정확도로 예측할 수 없습니다.(물론 현실 세계의 사람도 마찬가지입니다.) 자 얘네들을 표로 나타내보면 Positive N..

데이터 전처리

머신러닝에서 데이터를 학습시킬 때, 당연히 데이터를 컴퓨터가 학습할 수 있게 가공해야 합니다. 그 중에 원 핫 인코딩과, 피처 스케일링에 대해 알아보겠습니다. 원 핫 인코딩 (one-hot encoding) : 원 핫 인코딩에 대해서 알아보겠습니다. ["머신러닝", "딥러닝", "배우기"] 라는 애들의 데이터 집합이 있다고 생각해보겠습니다. 머신러닝 : 0 딥러닝 :1 배우기 : 2 라고 해서 숫자값을 해당되는 문자에 부여해서 컴퓨터가 읽을 수 있는 값으로 변환시킵니다. 얘를 벡터 형태로 바꾸면 [[0,0,1] [0,1,0] [1,0,0]] 와 같이 벡터 형태로도 변경해서 사용할 수 있습니다. 다만 원 핫 인코딩의 경우 단어의 개수가 늘어나면 벡터의 크기가 계속 커진다는 단점이 있습니다. 또한, 단어들간..