SVM (Support Vector Machine)을 학습 중 SVC 모델의 파라미터에 대해 찾아본 내용의 글입니다.
pipeline = Pipeline([
("scaler",StandardScaler()),
("svm", SVC(random_state=0, probability=True))
], verbose=True)
위 코드 (학습 데이터에 대한 파이프라인을 만드는 과정) 에서 SVC(probability=True)
에서 왜 "probability=True"를 설정하는 지 궁금하였습니다.
probability=True
로 설정하는 이유??
probability=True
로 설정할 경우, SVC 객체는 확률을 예측할 수 있는 모델을 생성합니다. 이 모델은 predict_proba 메서드
를 제공하여 각 클래스에 속할 확률을 반환할 수 있습니다. 확률은 학습된 모델의 결정 함수 값에 기반하여 계산되어지며 predict_proba 메서드를 호출하면 각 클래스에 속할 확률이 반환됩니다.
반대로, probability=False
로 설정할 경우, SVC 객체는 확률 예측을 지원하지 않는 모델을 생성합니다. 따라서 predict_proba()
를 호출하면 오류가 발생할 것입니다. 이 옵션을 선택하면 모델이 예측할 때 클래스 레이블만 반환됩니다.
최종적으로, probability = True
는 predict_proba()
메서드를 활용하기 위해 모델 객체를 생성할 때 필수적으로 추가 해야하는 파라미터인 것을 알 수 있었습니다.
➕ 추가로
predict_proba()
,predict()
메서드의 차이에 대해서..
predict()
는 각각의 모델의 최종적인 예측값을 출력하는 결과입니다. 회귀 모델의 경우 0.98733...과 같이 구체적으로 특정 값을 출력하게 되고, 분류 모델의 경우 0, 1, 2와 같이 가장 확률이 높은 클래스를 출력하게 됩니다.
그리고 이때 분류 모델이 각 클래스에 대한 확률을 일일히 출력하는 것이 predict_proba()
입니다. (predict_proba()
는 "predict probability", 즉 "각 클래스의 확률을 예측"하라는 의미)
따라서 회귀 모델에는 predict_proba()
를 사용할 수 없고, 분류 모델에서 활용됩니다.
잘봤습니다.