본문 바로가기

Machine Learning

Classification에서의 불확실성 추정

반응형
분류 예측의 불확실성 추정

머신러닝에서 불확실성으로 인해 발생되는 문제는 도메인에 따라 심각한 문제를 초래할 수 있다.

가령, 암환자 예측중 false negative(음성 추측했지만 거짓) 혹은 자율주행 과정에서 보도를 도로로 인식하게 되는 경우
위 두 사례 모두 최악의 상황을 낳게 한다.

이러한, 불확실성을 사전에 파악하기 위해서, scikit-learn에서 제공하는 API중 classification에 대해 예측의 불확실성을 추정하는 기능이 있다.


scikit-learn classification에서 제공하는 함수는 크게 두 개가 있다.
  • decision_function
  • predict_function

GradientBoostingClassifier에서 두함수를 적용해 보겠다.




Decision Function


decision_function의 반환값의 크기는 (n_samples, ) (각 데이터 포인트에 대한 라벨링)이고,
각 sample에 대해 하나의 실수 값이 나온다. 수치는 양성 클래스인 클래스 1에 속한다고 믿는 정도이다.
양수는 양성 클래스, 음수는 음성 (다른) 클래스를 의미한다.
Bin classification에서 음성 클래스는 항상 classes_속성의 첫 번째 원소이고, 양성 클래스는 classes_의 두 번째 원소
classes_[속성 원소 번호]를 출력해보면, 해당 클래스의 label이 나온다.
d_f의 값의 범위가 데이터와 모델 parameter에 따라 달라지고, 임의의 값이라 이해하긴 힘들다.

직접 decision boundary와 비교해보면, 분류기의 확신 정도를 알 수 있지만, 두 클래스 사이 경계 구분에는 어려움이 있다.



Predict proba

각 클래스의 확률을 출력하며, 항상 0~1사이의 값이 나오며, 예측 클래스들에 대한 확률의 합은 항상 1
overfitting model의 경우 잘못된 예측에도 강한 확신을 하는 경향이 있다. 반대로, 복잡도가 낮은 모델은 예측에 불확실성(underfit)이 높다.
불확실성 반영 정도는 모델과 parameter 설정에 달려있다. 
불확실성과 모델 정확도가 동등하면 모델이 calibration(보정) 되었다고 한다.
70%확신을 가진 예측은 보정된 모델에서 70%의 정확도를 나타낼 것.

이전 결정함수에 비해 경계가 뚜렷하게 나타난다.



Multi-Classification

decision_function과 predict_proba는 (n_samples, n_classes)를 출력하고, 
데이터 포인트마다 점수들에서 가장 큰 값을 찾아 예측 결과를 재현할 수 있다.

*decision_function은 binary classification에서 (n_samples, )인 1개열을 출력하고, 양성클래스인 classses_[1]에 대응하는 값이 있어서, 위의 출력( (n_samples, n_classes) )을 일반화하기에 무리가 있다. 

n_classes의 열일때,  클래스가 문자열이나 정수형을 사용하지만 연속적이지 않고 0부터 시작하지 않을 수 있다.
이 때문에 p_p, d_f, predict결과를 비교할때, classes_ 속성을 통해 실제 이름을 이용해 비교해야 한다.



반응형

'Machine Learning' 카테고리의 다른 글

Categorical 변수  (0) 2019.02.04
Supervised Learning Models  (0) 2019.02.03
Kernel Support Vector Machines  (0) 2019.01.27
Decision Tree's Ensemble  (0) 2019.01.25
Naive Bayes, Decision Tree  (0) 2019.01.23