-
[Linear model for classification]이진 분류공부/A.I 2021. 5. 15. 19:47
파이썬 라이브러리를 활용한 머신러닝(번역개정판)
사이킷런 핵심 개발자에게 배우는 머신러닝 이론과 구현 현업에서 머신러닝을 연구하고 인공지능 서비스를 개발하기 위해 꼭 학위를 받을 필요는 없습니다. 사이킷런(scikit-learn)과 같은 훌륭
books.google.co.jp
- 이진 분류, Binary Classification
선형 회귀에서 쓰던 위 방적식을 분류용 선형 모델에서도 사용한다.
특성들의 가중치 합을 임계치 0과 비교하여, 0보다 작거나 큰지에 따른 예측한다. (타겟 값이 임계치보다 큰지 작은지)
가장 널리 쓰는 두개의 선형 분류 알고리즘으로 아래 두개가 있다.
1. logistic regression
2. support vector machine
위 선형 분류 알고리즘에서는 C값이 규제의 강도를 결정한다.
매개변수 C값이 높아지면 규제가 감소하고, 반대로 C값이 작아지면 규제가 커져 모델의 계수가 0에 가까워지도록 만든다.
C값이 커진다. → 과대적합의 가능성이 있다.
C값이 작아진다. → 과소적합의 가능성이 있다.- forge데이터 셋
from sklearn.linear_model import LogisticRegression from sklearn.svm import LinearSVC import matplotlib.pyplot as plt import numpy as np import mglearn X, y = mglearn.datasets.make_forge() #print(X, y) c=100 # 매개변수 C 값 (100, 10, 1, 0.1. 0.001 등등) fig, axes = plt.subplots(1, 2, figsize=(10, 3)) for model, ax in zip([LinearSVC(max_iter=5000, C=c), LogisticRegression(C=c)], axes): clf = model.fit(X, y) mglearn.plots.plot_2d_separator(clf, X, fill=True, eps=0.5, ax=ax, alpha=.7) mglearn.discrete_scatter(X[:, 0], X[:, 1], y, ax=ax) ax.set_title(clf.__class__.__name__) ax.set_xlabel("feature0") ax.set_ylabel("feature1") axes[0].legend()
C = 100 C = 10 C = 1 C = 0.1 C = 0.01 - breast_cancer데이터 셋
C = 100 C = 1 C = 0.01 C = 0.00001 C값이 작아질수록 일반화가 높아짐을 볼 수 있다.
'공부 > A.I' 카테고리의 다른 글
Naive Bayes Classifier (0) 2021.05.30 [Linear model]다중 클래스 분류 (0) 2021.05.16 [Linear model]라소 회귀 (0) 2021.05.15 [Linear model]리지 회귀 (0) 2021.05.12 [Linear model]선형회귀(최소제곱법) (0) 2021.05.11