본문 바로가기

B/Mechine Learning

[ML]로지스틱 회귀에서 회귀계수(가중치)의 이해

로지스틱 회귀로 이항분류를 하는데, 이 안의 가중치(회귀계수)에 대한 이해가 부족하여 골머리를 앓았다.

생각난 김에 주피터를 챙겨 포스팅

사실 포스팅하면서 느꼈는데, 내가 가중치라고 생각했던 것이 결국 회귀계수였다.

내가 아직 회귀계수와 로지스틱회귀 학습구조에 대한 이해가 모자라구나, 싶었다.

갈길이 멀었다..

 

김성범 교수님의 자료 - 고려대학교 산업경영학부

 

위와 같이 로지스틱 함수를 보면, 회귀계수에 대한 직관적인 해석이 어렵다는 것을 느낀다.

기존의 단순선형회귀등에서는 종속변수 y값에 대해 회귀계수와 x가 선형결합으로 이루어져있어

회귀계수에 대한 이해가 직관적으로 가능했는데,

위의 식에서는 이것을 또 비선형함수(시그모이드)에 넣은 값이기 때문에 회귀계수에 대한 해석이 굉장히 불편해진다.

 

로지스틱을 이해하기 위해 가장 좋은 방법은 승산의 개념을 도입해 이해하는 것인데,

그 방법은 아래와 같다.

 

 

김성범 교수님의 자료 - 고려대학교 산업경영학부

 

위와 같이 승산의 개념을 도입하면 회귀계수에 대한 이해 또한 빠르다.

즉, input값이 1단위 증가했을때 성공확률(정확히 말하자면 로그승산)의 증가량 정도로 이해가 가능한것이다.

 

 

이를 아래의 예시로서 실전적으로 이해해보려고 한다.

 

다음은 okt로 에브리타임 강의평을 전처리해준 데이터다.

이를 벡터화하여 로지스틱 회귀로 감성 분석(Sentiment Analysis)을 해볼 예정.

이것을 TF-IDF 방식으로 벡터화해주었다.

 

여기서 토큰화된 단어를 아래와 같은 코드로 뽑아낼수 있다.

 

사용된 단어 리스트

vocablist = [word for word, _ in sorted(vectorizer.vocabulary_.items(), key=lambda x:x[1])

 

그리고 아래와 같이 로지스틱회귀 모델의 회귀계수를 다음과 같이 뽑아낼 수 있다.

coefficients = model.coef_.tolist()

sorted_coefficients = sorted(enumerate(coefficients[0]), key=lambda x:x[1], reverse=True)

 

이를 가지고 이제 단어와 단어가 갖는 회귀계수(가중치)를 가지고 감성분석을 진행하게 된다.

로지스틱 회귀는 결국 학습데이터를 gradient descent 방식으로 w를 업데이트해나가면서,

최적의 w(회귀계수)와 b(편향)값을 찾아내는 것이 모델의 목적이라고 할 수 있겠다.

 

만약 train_text를 tf-idf를 이용해 벡터로 뽑아낸 단어(피쳐)들이 총 10000개라고 가정해보자.

그렇다면 한개의 row(문서)는 10000개의 열을 갖고, 굉장히 sparse한 데이터가 만들어질것이다.

이를 로지스틱회귀모델로 추정한 회귀계수(coef)도 총 10000개가 나올 것이다.

예를 들어 100번째 단어가 '개꿀' 이라는 단어라는 가정하에,

100번째 회귀계수(k라고 하자)에 대한 아래의 해석을 해볼 수 있겠다.

 

k가 클수록 긍정class(label 1)에 가깝다.

전처리시 평점 4,5인 데이터에 라벨링을 1로 하였으므로,

1은 감성분석시 긍정class라고 볼 수 있다.

만약 새로운 문서를 tf-idf로 벡터화했을때 100번째 단어(개꿀)의 값이 높을수록,

다른 단어에 비해 회귀계수가 크므로 로그승산의 값이 상대적으로 더 커질것이고,

이 데이터를 긍정으로 분류할 확률이 높아질 것이다.

 

 

고려대학교 김성범 교수님의 자료

 

이것은 사실 odds ratio를 보면 해석이 아주 말끔해진다.

나머지 변수를 고정시킨 상태에서 '개꿀' 변수를 1단위 증가시키면 odds ratio가 e^b_100 만큼 증가하는 것이다.

위의 자료에서 성공확률은 나의 예시에서 데이터가 긍정으로 분류될 확률이라고 보면 되겠다.

즉 회귀계수가 양수이면 긍정으로 분류될 확률 증가!

 

 

로지스틱회귀식 (시그모이드 그래프)를 잘 보면 알겠지만,

해당 단어가 갖는 가중치가 높을수록 label 1이 될 확률이 높아지고,

낮을수록 label 0이 될 확률이 낮아진다는 것을 알 수 있다.

label 1을 평점이 높은 강의평에 배정하고, label 0을 평점이 낮은 강의평에 배정했으니,

가중치가 높은 단어는 평점이 높은 강의평에 있는 단어일 것이다.

 

시그모이드에서 W의 영향, 빨간선이 W=0.5, 파란선이 W=2, 녹색선 W=1

위 그래프는 시그모이드 함수에서 W, 기울기의 영향을 보여준다.

W값이 커질수록 경사도가 커지는 것을 볼 수 있다.

 

시그모이드에서 b(편향)의 영향, 파란선 b=1.5, 빨간선 b=0.5

b(편향)의 크기에 따른 그래프의 이동이다.

편향이 클수록 왼쪽으로 그래프가 평행이동 하는 것을 볼 수 있었다.

 

 

이기창님의 라츠고 블로그 참고자료