Multilayer Perceptron · 학습
이번에 배울 내용
복잡한 모델이 항상 유리한지, 단순한 기준 분류기와 같은 자료에서 비교합니다.
단순 모델을 먼저 두기
MLP는 비선형 관계를 표현할 수 있지만 크기를 늘리면 학습할 Parameter와 조정할 조건도 늘어납니다. 같은 자료에서 단순 분류기를 기준으로 두면 추가 복잡도의 이점을 확인할 수 있습니다.
전처리와 평가를 묶기
Standardization은 학습 자료에서 fit하고 평가 자료에는 같은 변환만 적용합니다. scikit-learn Pipeline으로 변환과 모델을 묶으면 분리·교차검증에서 이 순서를 유지하기 쉽습니다.
ConvergenceWarning은 지정된 반복 안에 최적화의 수렴 기준을 만족하지 못했다는 뜻입니다. 이번 비교에서는 지정된 max_iter를 유지하고 경고 여부와 점수를 함께 기록합니다.
경고가 있는 실행의 점수만으로 모델의 우열을 단정하기 어렵습니다.
풀이 예제
Iris를 위와 같은 70/30 분할로 나누고 Train에서만 StandardScaler를 fit합니다.
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.neural_network import MLPClassifier
X,y=load_iris(return_X_y=True)
Xtr,Xte,ytr,yte=train_test_split(X,y,test_size=.3,random_state=7,stratify=y)
scaler=StandardScaler().fit(Xtr);Xtr=scaler.transform(Xtr);Xte=scaler.transform(Xte)
위에서 준비한 분할·Standardization 결과로 한 모델을 학습하고 평가합니다.
model = LogisticRegression(max_iter=500)
model.fit(Xtr, ytr)
prediction = model.predict(Xte)
print("Train Accuracy:", model.score(Xtr, ytr))
print("Test Accuracy:", model.score(Xte, yte))