필기) 3과목-08 분석 기법 - 로지스틱 회귀(분류)
S3-02 분석 기법
1. 회귀 분석
2. 로지스틱 회귀 분석
3. 의사결정나무, SVM
4. 앙상블
5. 인공신경망, 딥러닝
6. 연관분석
7. 군집분석
2-1 로지스틱 회귀
- 분류를 위한 모형 앞서 배운 선형회귀와는 완전 다름
- 선형회귀(Linear Regression)는 x값의 변화에 따라서 y가 -∞에서 +∞방향으로 가고있다
선형회귀에서는 y가 0과 1을 초과할 수 있다
- 로지스틱회귀(Logistic Regression)는 x값의 변화에따라서 y가 0에서 1 사이의 확률값을 갖고 있는것
로지스틱회귀에서는 0에서 1범위에 포함
- 로지스틱 회귀분석에서는 시그모이드 함수를 사용해서 y를 0에서 1사이의 값으로 바꿔준다
위에 식에 x값을 넣었을 때 y값이 0에서 1사이 값으로 나온다
선형 회귀 분석 | 로지스틱 회귀 분석 | 선형 회귀, 로지스틱 회귀의 공통점 |
- 회귀!! Regression - 정규분포를 따름 - 종속변수는 연속형 - -∞ ~ +∞ 사이의 값 - 모형 탐색 : 최소자승법 - 모형 검정 : F-test, t-test |
- 분류!! Classficassion - 이항분포를 따름 - 종속변수는 범주형 - 0 ~ 1 사이의 확률 값 - 최대우도법, 가중최소자승법(WLS) - 모형 검정 : X² test |
- 지도학습(Supervised Learning) (x,y값 독립변수, 종속변수 다 있다는것) - 결정계수는 모두 파라미터 - 독립변수는 연속형, 범주형 모두 사용 |
- WLS(Weighted Least Squares) : 회귀 모수의 오차항 분산에 반비례하는 가중치를 부여하여 가중 오차제곱합을 최소화하는 방법
2-2 로지스틱 회귀분석
- 종속변수를 전체 실수 범위로 확장하여 분석하고, sigmoid 함수를 사용해 연속형 0~1 값으로 변경
- 우리가 필요한것은 확률값 probability 0 ~1 사이의 값
- odds를 적용시킨다
- odds에 log를 취함 p=확률값, log(odds(p)) = ax + b의 선형형태 Linear Regression에서 썼던 형태로 분석가능
- sigmoid함수식으로 범주형 → 연속형으로 바꿈
2-3 로지스틱 회귀분석
- prob(=확률) = 0.8인것에 대해서
- odds = 0.8 / 0.2 = 4
- log(odds(p))도 구해보고
- sigmoid함수도 적용
- Values table보면 probability하고 r하고 확률이 똑같음
- 성공확률이 0.8일때 실패확률이 0.2로 성공이 일어날 확률이 실패할 확률보다 4배 많다(= 승산)
ㆍ승산(odds) = 성공률/ 실패율
- 성공이 일어날 가능성이 높은 경우는 1.0 보다 큰 값
- 실패가 발생할 가능성이 높은 경우는 1.0 보다 작은 값
ex) 간장, 설탕을 사용한 소스를 만들 때 비율 표현
- 확률 표현 : 80% 간장, 20% 설탕 사용
- 승산 표현 : 4:1 (간장:설탕)
- 로지시틱의 회귀계수, 확률에 대해 0 ~ ∞로 변환한 값
ㆍlog odds, logit transformation = log(odds)
- 선형화(linearization)의 하나로, odds값에 log를 취하여 값의 범위를 전체 실수 범위로 확장함
ㆍsigmoid 함수
- Logistic 함수라 불리기도 하며, log odds 값을 연속형 0~1 사이의 값으로 바꾸는 함수
- 비선형 값을 얻기 위해 사용
2-4 로지스틱 회귀분석 해석
- 승산비 : a변수 b변수의 확률이 나왔을 때, 각각의 odds를 구하고 a와 b의 odds로 비율을 구하는 것
- Values table에서 승산비는 4가 나왔고 이는 a와 b의 승산율을 보았을 때 a가 4배 더 승산이 있다
- a(0.5)와 b(0.2)의 값 차이는 0.3이지만 승산비로 따졌을 때는 4배차이가 나게되는 것
ㆍ승산비(odds ratio) = 관심있는 사건이 발생할 상대 비율, x=1일 떄, y=1이 되는 상대적 비율
- odds_a / odds_b = exp(coef) = exp(5.140336) = 170.7731385
- 로지스틱 회귀에서 exp(x1)의 의미 (단, x1 : 회귀계수)
- 나머지 변수가 주어질 때 x1이 한 단위 증가할 때마다 성공(Y=1)의 odds가 몇 배 증가하는지를 나타냄
※ exp(coef)=회귀계수에 지수를 취한것
예) 불꽃data라는것을 사용해서 로지스틱 회귀분석한 것
- iris라는 데이터는 범주를 예측하는 데이터로 분류모델에 사용되는 데이터
- 범주는 원래 3가지가 있지만 여기서는 'setosa'와 'versicolor'라는 두가지 범주만 사용할 것이고
- 이것을 factor타입으로 만들었을 때, 'setosa'=0, 'versicolor'=1이라는 값을 가진다 (우리가 관심을 가지고있는 것은 1이므로 'versicolor'가 우리가 관심있는 사건으로 볼 수 있다)
- 'setosa'인지 'versicolor'인지 Sepal의 Length를 가지고 범주를 예측한다
이런식으로 b를 구했을 때 b에 대한 회귀계수를 보게되면
> codf(b)
(Intercept는 절편)이고 Sepal.Length에서 회귀계수가 5.140336이 나오는 것을 볼 수 있다
그리고 승산비를 알고싶다면 b에대한 회귀계수에 지수를 취해서 Sepal.Length에 관한것만 표시해보면
> exp(coef(b))['Sepal.Length']
Sepal.Length 는 170.7732가 나오고
ㆍY=1은 versicolor 일 경우, Sepal.Length가 한 단위 증가하면 versicolor일 odds가 170배 증가를 의미함
- 이렇게 회귀계수에 대해서 exp을 취한것이 승산비라는것을 기억하고 성공에 대한 odds가 170배 증가한다
[출처] - EduAtoZ - Programming [빅데이터 분석기사 필기 3과목]