Skip to content

Latest commit

 

History

History
33 lines (17 loc) · 1.59 KB

softmax.md

File metadata and controls

33 lines (17 loc) · 1.59 KB

Softmax

소프트맥스함수 (Softmax Funnction)는 다중분류에서 각클래스별 예측출력값을 0에서 1사이의 확률로 압축하고 전체 합이 1이 되도록 변환합니다.

k차원의 벡터에서 i번째 원소를 z_i, i번째 클래스가 정답일 확률을 p_i로 나타낸다고 하였을 때, 소프트맥스 함수는 를 다음과 같이 정의합니다.

image

만약 k=3이라면, 소프트맥스 함수는 아래와 같은 출력을 리턴합니다. 여기서, p1은 1번 class일 확율을 나타내고, 전체 확율의 합은 1입니다.

image

Logistric regression의 다중분류를 한 예로 보면, 아래와 같이 Fish 데이터가 어떤 class일 확율을 scikit-learn의 Logistic Regression을 이용하여 softmax 함수로 구하고 있음을 알수 있습니다.

from sklearn.linear_model import LogisticRegression

lr = LogisticRegression(C=20, max_iter=1000)
lr.fit(train_scaled, train_target)

decision = lr.decision_function(test_scaled[:5])

proba = softmax(decision, axis=1)
print(np.round(proba, decimals=3))

이때의 결과는 아래와 같습니다. 여기서, Fish0의 데이터는 Perch인 확율이 0.841임을 알수 있습니다.

image