머신 러닝의 다양한 기법에 대해 알아보겠다.
from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier(n_neighbors=10) # k=10인 경우의 KNN model
from sklearn.linear_model import LogisticRegression
logreg_model = LogisticRegression()
from sklearn.svm import SVC
svc_model = SVC()
관측값과 목표값을 decision tree를 이용해서 연결시키는 예측 모델이다. 위의 그림은 titanic 문제를 decision tree를 이용하여 각 feature와 생존 여부 예측을 연결시킨 것이다.
decision tree 역시 scikit-learn으로 구현되어 있다.
from sklearn.tree import DecisionTreeClassifier
decision_model = DecisionTreeClassifier()
여러 개의 간단한 모델을 생성한 후 그 모델들의 예측값을 종합하여 하나의 최종 모델 또는 예측값을 도출하는 기법이다. Ensemble 기법은 내용이 많으므로 별개의 포스팅에서 따로 다루도록 한다. (→ https://velog.io/@kupulau/Ensemble)
feature들이 독립적이라고 가정하여 각 feature에 대해 확률 계산을 한 후 이를 학습시켜 예측을 하는 기법이다. 독립적이라고 임의로 가정했기 때문에 예측 성능에 한계가 있을 수 있다. scikit-learn의 GaussianNB, BernoulliNB, MultinomialNB 등으로 구현할 수 있다. 보통 GaussianNB는 연속적인 데이터를 다룰 때 (웬만한 데이터는 거의 다 다룰 수 있다), BernoulliNB는 텍스트 데이터 또는 이진 데이터, MultinominalNB는 텍스트 데이터를 다룰 때 많이 사용한다. 자세한 것은 나이브 베이즈 포스팅 참조 (→ https://velog.io/@kupulau/%EB%82%98%EC%9D%B4%EB%B8%8C-%EB%B2%A0%EC%9D%B4%EC%A6%88-%EB%B6%84%EB%A5%98)
scikit-learn에서 GaussianNB 구현된 것을 사용할 수 있다.
from sklearn.naive_bayes import GaussianNB
nb_model = GaussianNB()
https://en.wikipedia.org/wiki/K-nearest_neighbors_algorithm
https://ai.plainenglish.io/why-is-logistic-regression-called-regression-if-it-is-a-classification-algorithm-9c2a166e7b74 (regression image credit)
https://en.wikipedia.org/wiki/Support_vector_machine
https://en.wikipedia.org/wiki/Decision_tree_learning