다운로드
작성자: admin 작성일시: 2016-06-12 19:46:49 조회수: 3096 다운로드: 216
카테고리: 머신 러닝 태그목록:

다중 클래스 분류

타겟 클래스가 2개 이상인 경우를 다중 클래스 분류(Multi-Class Classification) 문제라고 한다. 다중 클래스 분류 문제는 다음과 같이 여러개의 이진 클래스 분류(Binary Class Classification) 문제로 변환하여 해결한다.

OvO (One-Vs-One)

  • $K$개의 타겟 클래스가 존재하는 경우,
  • 이 중 2개의 클래스 조합을 선택하여 $K(K - 1)/2$개의 이진 클래스 분류 문제를 풀고
  • 투표를 통해 가장 많은 표를 얻은 클래스를 선택
  • 실제로는 정규화된 판결 기준값을 이용
  • OneVsOneClassifier 클래스

OvR (One-vs-the-Rest)

  • $K$개의 타겟 클래스가 존재하는 경우,
  • 각각의 클래스에 대해 표본이 속하는지 속하지 않는지의 이진 클래스 분류 문제를 풀고
  • 판결 기준값이 가장 큰 클래스를 선택
  • OneVsRestClassifier 클래스
In:
from sklearn.multiclass import OneVsRestClassifier, OneVsOneClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import load_iris

iris = load_iris()
model1 = LogisticRegression().fit(iris.data, iris.target)
model2 = OneVsRestClassifier(LogisticRegression()).fit(iris.data, iris.target)
model3 = OneVsOneClassifier(LogisticRegression()).fit(iris.data, iris.target)
In:
ax1 = plt.subplot(211)
pd.DataFrame(model1.decision_function(iris.data)).plot(ax=ax1)
ax2 = plt.subplot(212)
pd.DataFrame(model1.predict(iris.data), columns=["prediction"]).plot(ax=ax2)
plt.show()
In:
ax1 = plt.subplot(211)
pd.DataFrame(model2.decision_function(iris.data)).plot(ax=ax1)
ax2 = plt.subplot(212)
pd.DataFrame(model2.predict(iris.data), columns=["prediction"]).plot(ax=ax2)
plt.show()
In:
ax1 = plt.subplot(211)
pd.DataFrame(model3.decision_function(iris.data)).plot(ax=ax1)
ax2 = plt.subplot(212)
pd.DataFrame(model3.predict(iris.data), columns=["prediction"]).plot(ax=ax2)
plt.show()

Label Binarizer는 y 즉 종속변수의 클래스를 one-hot-encoding 하기 위한 명령이다. 이렇게 하면 각 열은 OvR 문제를 풀기위한 y 값이 된다.

질문/덧글

질문있습니다. rhlf*** 2017년 3월 1일 3:26 오후

pd.DataFrame(model1.decision_function(iris.data)).plot(ax=ax1)
이 코드에서 ax가 의미하는게 무엇인지 궁금합니다. 찾아보니까 axes instance라고 하는데 자세히 설명부탁드려요

답변: 질문있습니다. 관리자 2017년 3월 12일 11:42 오전

그래프의 axes 객체를 의미합니다. 자세한 내용은 matplotlib 설명을 읽어보세요.

[https://www.datascienceschool.net/view-notebook/d0b1637803754bb083b5722c9f2209d0/#그림의-구조](https://www.datascienceschool.net/view-notebook/d0b1637803754bb083b5722c9f2209d0/#그림의-구조)

"타겟 클래스가 2개 이상인 경우를 다중 클래스 분류(Multi-Class Classification) 문제라고 한다"는 3개 이상이 되어야 하는 것 아닌가요?? ggah*** 2018년 3월 25일 9:37 오후

분류문제에서 타겟 클래스가 최소한 2개여야 할 것 같은데, 그렇다면 모든 문제가 multi-class 가 되는건가요??
"타겟 클래스가 2개 이상인 경우를 다중 클래스 분류(Multi-Class Classification) 문제라고 한다"는 혹시 2개가 아니라 3개 이상이 되어야 하는 것 아닌가요??