지도학습: 분류
지도학습: 분류
- 주요 개념:
- LDA
- SVM
- NN
분류 알고리즘
- Linear Discriminant Analysis
- Support Vector Machine
- Nearest Neighbors
- Decision Tree
- Naive Bayes
- Artificial Neural Network
Linear Discriminant Analysis
- 집단 간 분산은 최대화하고 집단 내 분산은 최소화하는 낮은 차원을 찾음
- 해당 차원에서 집단을 구분
Support Vector Machine
- 회귀 및 분류
- 분류의 경우 두 집단 간의 최대 마진을 찾는 초평면을 학습하여 데이터를 분류
- 커널 트릭(kernel trick)을 사용하여 비선형 데이터도 고차원 공간에서 선형적으로 분류할 수 있음
- 저차원 공간에서 분류가 어려운 문제도 고차원 공간에서는 분류가 쉬움
- 실제 데이터를 고차원 공간으로 매핑하는 것은 계산이 많음
- 커널(쉽게 말하면 두 점의 거리를 측정하는 방식)만을 변경하여 마치 데이터가 고차원 공간에 매핑된 것처럼 계산하는 트릭을 사용할 수 있음
- SVM은 커널 트릭을 사용할 수 있는 모형
Nearest Neighbors
- 회귀 및 분류
- 새로운 데이터 포인트의 클래스나 값을 예측하기 위해 가장 가까운 K개의 이웃을 참조
- 다수결 투표나 평균을 통해 예측을 수행
- K가 작으면 노이즈에 민감해지고, K가 커지면 계산 비용이 증가
- 훈련 단계가 없고, 모든 계산이 예측 시에 이루어지는 게으른 학습(lazy learning) 방식
종양 분류 데이터
- 종양
import pandas as pd
cc = pd.read_excel('cancer.xlsx')
cc.head() - 예측하고자 하는 diagnosis 변수를 y, 나머지를 X
y_orig, X = cc.iloc[:, 0], cc.iloc[:, 1:]
- 악성(M)은 1, 양성(B)은 0으로 변환
y = y_orig.map({'M': 1, 'B': 0})
랜덤 포레스 트
- 데이터 분할
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2,
random_state=42) - 훈련
from sklearn.ensemble import RandomForestClassifier
model = RandomForestClassifier(n_estimators=100, random_state=42)
model.fit(X_train, y_train) - 테스트 데이터에 예측
y_pred = model.predict(X_test)