4기(20200711)/1팀

소프트맥스 회귀와 클러스터링

KAU-Deeperent 2020. 7. 25. 03:01

소프트맥스 회귀

소프트맥스 회귀는 3개 이상의 다중클래스 분류에서 주로 사용된다.

참고로 앞서 공부했던 로지스틱 회귀는 이진 분류기에서 많이 사용된다. 소프트 맥스는 다중 클래스 문제의 각 클래스에 소수 확률을 할당해준다. 이 때 소소 확률의 합은 1이다.

소프트맥스 회귀의 가설은 다음과 같다.

x1, x2, x3의 값을 3, 4, 1을 입력했을 때 이것들을 소프트맥스 회귀식을 이용하면 각 값들의 차이가 확연하게 드러난다. 또한 위 그래프를 보면 값이 클수록 확률값도 크게 나타난다.

소프트맥스 회귀식을 통해 도출해낸 s1, s2, s3의 총 합은 1이다.

소프트맥스 함수는 이와 같은 형태로 출력된다. 분류하고자 하는 클래스가 k개일때, k차원의 벡터를 입력받아서 모든 벡터 원소의 값을 0과 1 사이의값으로 변경하여 다시 k차원의 벡터를 리턴한다. p1, p2, p3은 각 클래스에 대한 확률을 의미한다.

 



x1, x2, x3이 각각 정결합으로 연결되어있고 서로 영향을 미칠 수 있다. 그리고 소프트 맥스를 통해 예측값이 나온다. 케라스에서는 예측값과 실제값의 차이를 위해 손실함수 설정값을 카테고리컬 크로스엔트로피로 설정한다.

그리고 크로스엔트로피를 통해 두 확률분포간의 차이를 알 수 있다. 예측값에 대한 분포와 실제값에 대한 분포의 차이를 –log를 통해서 차이 알 수 있다.

앞서 말했듯이 소프트맥스 회귀의 특징상 전체 확률값 각 카테고리 클래스별 확률이 1이므로 각각의 x는 서로 서로 결과값이 영향을 미친다. 이 값들이 교차 엔트로피를 지나면 원 핫 인코딩(one-hot encoding) 값이 나타난다.  원 핫 인코딩은 여러개의 결과값을 0과 1로 이루어진 형태로 바꿔주는 기법을 말한다. 가장 확률이 높은 값은 1로, 나머지는 0으로 만드는 기법이다. 그래서 1이 나타내는 값이 가장 높은 값이라는 것을 바로 알아낼 수 있다. 





클러스터링

클러스터링(군집 분석)은 군집에 속한 데이터들의 유사성과 서로 다른 군집에 속한 데이터가 얼마나 다른지 규명하는 분석방법이다. 클러스터링에서는 군집내 분리 최대화(Centeroid간의 거리를 최대로), 군집내 응집도 최대화(Centeroid와 데이터간의 거리 최소화)한다. 즉, 그림에서보면 초록선은 최소로 빨간선은 최대로 한다. 

군집분석은 포함관계를 갖을 수 있는 계층적 군집과 포함관계를 갖을 수 없는 비계층적 군집으로 분류할 수 있다. 군집에서 포함관계를 갖는 다는 것은 아래 그림처럼 D가 E,F를 포함하는 것이다. 계속 포함관계를 갖다보면 결국 한 개의 군집으로 나타낼 수 있다. 

그렇다면 어떻게 데이터를 군집으로 묶는것일까? 그것은 바로 유사성 측정을 기준으로 군집화할 수 있다. 측정방법은 거리와 상관계수가 있는데 우리는 거리는 아래 세 가지 방법으로 측정 가능하다.

 

 

위 세가지 방법으로 거리행렬을 만들 수 있다. 

예를 들어 d12는 1번 데이터와 2번 데이터간의 거리를 나타낸다. 그리고 행렬의 모습을 생각해보면 모든 대각성분은 0을 갖으면 dij=dji이기 때문에 거리의 행렬의 반만 구해도 전체행렬을 채울 수 있다. 

 

그럼 이제 계층적 군집의 최단 연결법에 대해 알아보자.

아래의 예제에서는 p3,p6의 거리가 가장 가까워 둘을 묶어준다.

그 다음 작은 거리 행렬은 p2,p5로 둘을 또 묶어 준다.

계속 묶어주다보면 최종적으로 아래와 같이 한개로 군집화가 가능하다!!

 

다음으로 알아볼 방법은 비계층적 방식의 K-means clustering이다. K-means clustering은 Centeroid와 데이터간 거리의 평균을 계산해 K개의 군집을 만든다.

(1)처음 시작시 랜덤한 K개의 centeroid를 찾는다. (2)그리고 각 centeroid와 데이터 간의 거리를 계산해 군집으로 할당한다. (3)군집내 데이터의 평균값을 Centeroid의 값으로 갱신한다. (4) 2,3번 과정을 반복한다.