머신러닝은 인공지능(AI)의 한 분야이다.
머신러닝에서는 모델/알고리즘을 이용해 주어진 데이터를 컴퓨터가 분석하고 상관관계를 파악해 결과값을 예측한다.
머신러닝이 주목 받았던 이유는 컴퓨터의 능동성이다. 예전과 같이 인간이 하나하나 프로그램해서 컴퓨터에게 명령하는 방식이 아니라 기계가 스스로 데이터를 받아 학습할 수 있다는 점이다.
머신러닝의 한 분야가 딥러닝(deep learning)이다.
머신러닝에서 모델을 학습시키는 방법에는 크게 3가지가 있다.
- 지도학습 (supervised learning)
- 비지도 학습 (unsupervised learning)
- 강화학습 (reinoforcement learning)
지도학습의 과정은 다음과 같다.
예를들어, 서울의 집값을 예측하고 싶다고 할때, 집값은 '답'이 될 것이고, 데이터는 지난 1년간 서울에서 거래되었던 집들의 정보가 될것이다. 데이터에는 집의 주소, 연식, 방의 갯수 등이 들어있을것이다.
지도학습에는 두가지 방식이 있다.
- 분류 (classification): 답이 카테고리일 경우 (예: 유방암의 악성, 양성 판별)
- 회귀 (regression): 답이 연속적인 값으로 나올경우 (예: 집값예측)
컴퓨터의 모델을 학습시킬때, 지도 학습과 반대로, 데이터는 답이 포함되어 있지 않다.
매우 중요한 차이다. 답이 없는데 어떻게 답을 예측하지??!
여기서 머신러닝의 진가가 더욱 빛을 발하는것 같다. 모델은 주어진 데이터에서 스스로 특징(feature) 및 패턴을 알아낸다.
대표적인 알고리즘으로는 클러스트링(clustering)이 있고 대표적인 클러스트링 기법에는 K-means 와 DBSCAN이 있다.
Cluster는 한국어로 '무리'라는 뜻이다. 데이터의 속성에 따라서 k개의 무리로 분류하는 알고리즘이다.
- k개의 랜덤한 centroid를 지정한다. (centroid는 cluster의 중심)
- 각 데이터를 centroid들과의 거리를 계산해서 가장 가까운 centroid를 찾고 해당 cluster에 속하게 한다. (거리계산은 유클리드거리(Eucledian distance, a.k.a. L2 distance))
- 무리마다 속해있는 데이터와 centroid간의 거리를 구하고 평균을 내어준다.
무리마다 3번의 값이 최소가 되는 지점이 centroid가 무리의 중심이라고 할 수 있다. 그러므로, 컴퓨터가 위의 작업을 반복하여 이상적인 centroid를 찾고 cluster를 찾는다.
sklean의 KMeans로 위의 알고리즘을 수행할 수 있다.
K-means clustering의 한계는 다음과 같다.
- 무리의 개수, k를 지정해야 한다. 예측하기 어려운 경우엔 사용하기 어렵다.
- 유클리드 거리에 따라서 무리가 형성되기 때문에 간혹 멀면서 밀접하게 연관된 데이터를 적절히 clustering하지 못한다.
밀도(density)에 기반한 clustering 알고리즘.
K-means clustering 과는 달리 k의 값을 미리 지정할 필요없이 최초의 임의점 하나로 부터 밀도를 기반으로 해서 무리를 이룬다. 아래의 링크에 과정이 시각화 되어있다.
k, 무리의 개수는 미리 지정할 필요없지만, epsilon(클러스터의 반경)과 minPts(클러스터를 구성하는 데이터의 최소값)은 미리 지정해줘야 한다.
수행과정은 다음과 같다.
- 임의의 점을 설정, 그 점을 포함한 epsilon안에 있는 점들의 개수를 계산.
- 점들이 minPts이상이면 임의의 점을 core point로 설정하고 무리에 있는 점들을 모아 한개의 cluster로 설정한다.
- 1-2 과정을 반복하고, 만약 새로운 core point가 기존의 cluster에 속한다면, 두 개의 cluster를 한개의 cluster로 만들어준다.
- 어떠한 cluster에도 속하지 못한 데이터는 noise point로 간주한다.
sklean의 DBSCAN으로 위의 알고리즘을 수행할 수 있다.
DBSCAN의 한계
- 데이터가 많아지면 수행시간이 K-means 방식보다 오래 걸린다.
- k를 지정해줄 필요는 없지만, epsilon과 minPts를 지정해 줘야한다.
행동심리학에서 영감을 받았으며, 어떤 환경 안에서 선택 가능한 행동들 중 보상을 최대화하는 행동 혹은 행동 순서를 선택하는 방법이다.
보통 훈련시킬 데이터가 없을 경우에 많이 쓰이는 방법이라고 한다.