Rucrazia's Blog

Regression Model(Linear, Logistic,Naive Bayes) 본문

기술 - Data Science/Data Science

Regression Model(Linear, Logistic,Naive Bayes)

DoyoungJ 2017. 7. 31. 22:19

Regression Model(회귀 분석)

변수들 간의 상호 관련성을 구명하고 어떤 변수들의 변화로부터 다른 변수들의 변화를 예측하는 통계 기법
모델을 만든 다음 독립변수들을 이용해서 종속변수 결과를 내는것 -> Prediction.

ex)
- 매출액은 광고 횟수에 따라 어떻게 변하는가?
- 담배 판매량과 폐암 환자수와의 관계는 어떠한가?

Least Square Method(최소자승법)
모델의 파라미터를 구하기 위한 대표적인 방법 중 하나로서 모델과 데이터와의 Residual^2의 합을 최소화 하도록 파라미터를 결정하는 방법.
여기서 Residual은 실제값과 예측값의 차이 제곱의 합을 의미한다.

 

 

최소자승법으로 만든 회귀선은 선형이 overfitting의 문제를 피할수 있다.

회귀 예측 모델은 잔차(실제값 - 예측값)의 최소가 되는 선을 만드는것(회귀선)


모형의 평가
모형 평가는 걸정계수, 모수 추정치의 유의도, 표준에러 정보를 참고하여 판단.

- 결정계수(Coefficient of determination) : R^2
   = 회귀식에 의해 독립변수가 종속변수를 설명할 수 있는 비율
   = 전체 변동에 있어 회귀선의 영향력

잔차가 작아질수록 결정계수는 커진다.(잔차=에러가 작아질수록 설명력이 좋아지므로.)

결정계수(R^2)
SST = SSE + SSR
SST - (실제값과 평균값의 차를 제곱한 것의 합.)
SSE - (실제값과 예측값의 차를 제곱한 것의 합)
SSR - (예측값과 평균값의 차를 제곱한것의 합).

SSR/SST = R^2

Adjusted R^2 = 독립 변수가 늘어나면 불필용한 변수가 늘어나고 효율성이 떨어지므로, 독립 변수가 늘어나면 R^2이 줄어들도록 만든것.

R^2이 1이면 x와 y가 서로 관련이 있다.
R^2가 0이면 x와 y가 서로 관련이 없다.

R^2가 0.8일때는 80%의 설명력을 가짐.


P-Value < 0.05 이하면 유의 하다고라고 판단. = 오차범위가 5% 이내.

모형의 평가
RMSE(Root Mean Squared Error : 제곱근 평균 오차)
MAE(Mean Absolute Error)
같은 데이터 셋으로 했을 때 내 모델의 RMSE가 더 작다고 하면 나의 모델의 우수성 증명가능.


Partial Search Algorithms
- Forward : 하나씩 넣기
- Backward : 모두 넣고 하나씩 빼기
- Stepwise : Forward Backward 혼합


## Linear Regression by R

setwd("C:/Users/rucrazia/Google 드라이브/GBSA Data scientist academy")
insuranceData <- read.csv("insurance.csv", stringsAsFactors = TRUE)
str(insuranceData)

summary(insuranceData$age)

hist(insuranceData$charges)

cor(insuranceData[c("age","bmi","children","charges")])

pairs(insuranceData[c("age","bmi","children","charges")])

insuranceModel <- lm(charges ~ children+age+sex+bmi+smoker+region, data = insuranceData)  #lm(y ~ x1+x2+x3, data = dataName)
insuranceModel <- lm(charges ~ ., data = insuranceData)  #lm(y ~ ., data = dataName)  .(comma는 전체를 의미) 
#Linear Regression에서 Coefficients에서 만약 Rogistic 값이면 자동으로 더미변수를 만들어준다.

insuranceModel
나이가 1살 많아질수록 보험비가 256.9 달러가 높아진다.
남자이면 여성보다 -131.3 달러가 덜 낸다.
bmi는 1이 커질수록 339.2 달러가 높아진다.
northwest에 살면 northeast보다 -353 달러가 덜 낸다.


Rogistic Regression

0과 1 처럼 범주형 변수로 이루어진 변수들을 판별하는 분석법

결과도 class(x)로 나오게 한다.(0,1)

Odds(승산)
사건이 일어날 가능성 대 그 사건이 일어나지 않을 가능성에 대한 비율.
ex) 확률 = 0.9 -> Odds = 90:10 즉, 9
 
Log Odds(로그 승산)
Odds에 로그(밑 2)를 취한다.
ex) Log_2(9) = 2.19


 
Odds Ratio는 두개의 오즈에 대한 비율을 의미한다.
A라는 상점의 주인과 B라는 샐러리 맨이 있는데, default(파산) 날 확률이 A는 0.25이고 B는 0.10이다.
A가 파산이 될 확률은 0.25/0.75 = 1/3
B가 파산이 될 확률은 0.1/0,9 = 1/9
Odds Ratio (A:B) = 1/3 / 1/9 = 3
확률을 직접 자영업자가 샐러리맨보다 망할 위험이 2.5배라고 하면 잘못된 해석이고, 그렇기 때문에 Odds Ratio를 구해서 자영업자가 샐러리맨보다 망할 위험이 3배라고 해야 한다.

해석 방법 = Odds Ratio (A:B) = 1.5 => 'A가 B에 비해 ~~ 할 가능성이 1.5배 크다'


상대 위험도 ( relative risk ) =
 Bassassinator를 사용하고 물고기를 잡을 확률 /no bait의 경우  물고기를 잡을 확률  =  0.5/0.02 = 25
 
위에서 보듯 누구에게나 직관적이고 쉬운 개념은 상대위험도이다. 위의 경우 해석을 한다면 당신이 Bassassinator을 사용한 경우에 물고기를 잡을 확률이 25배가 높다고 할 수 있다. 너무나 간단하게 해석이 된다. 그렇다면 왜 오즈비를 사용하는 것일까?
여기서 이런 의문이 생길 수 밖에 없다.  이 답은 다음과 같다.

거의 모든 연구는 실제로 처리(treatment)그룹과 대조(control)그룹의 모집단수를 알 수  없다. 왜냐하면 연구자가 할 수 있는 것은 샘플수를 조정할 수 있을 뿐이다. 가령 위의 예를 다음과 같이 바꿔보자.
아래의 표는 물고기를 잡은 100명의 낚시꾼을 조사한 결과 이들중 40명이 Bassassinator를 사용하였다. 그리고 100명의 물고기를 한마리도 잡지 못한 낚시꾼을 조사한 결과 단지 이들중 20명이 Bassassinator를 사용한 것으로 조사되었다. 즉 전체 물고기를 잡은 사람수를 구할 수 있는 방법은 없다.  즉, 연구자는 각각의 모집단의 수를 알 수 없다.

그래서 이때 모집단을 알 수 없기 때문에 대신 오즈비를 사용하게 된다.

로지스틱 실습 결과

Coefficients: (2 not defined because of singularities)
              Estimate Std. Error z value Pr(>|z|)   
(Intercept)  2.0683207  0.9773496   2.116 0.034323 * 
AGE         -0.0373678  0.0044538  -8.390  < 2e-16 ***
BUY12        0.0819698  0.1376431   0.596 0.551493   
BUY6        -0.0866235  0.1621316  -0.534 0.593149   
CLIMATE20   -0.2154789  0.1786084  -1.206 0.227651   
CLIMATE30   -0.3229123  0.1982291  -1.629 0.103316   
COA6         0.2310992  0.2023611   1.142 0.253448   
DISCBUY     -0.0653153  0.0889775  -0.734 0.462909   
FICO        -0.0048295  0.0013312  -3.628 0.000286 ***
INCOME      -0.0004107  0.0025064  -0.164 0.869846   
LOCB         0.0509743  0.1302057   0.391 0.695435   
LOCC         0.2898139  0.2063472   1.404 0.160171   
LOCD         0.3018812  0.2068856   1.459 0.144518   
LOCE         0.0681187  0.1243186   0.548 0.583736   
LOCF                NA         NA      NA       NA   
LOCG         0.0347984  0.1739315   0.200 0.841426   
LOCH                NA         NA      NA       NA   
MARRIED1     0.5297440  0.0900078   5.886 3.97e-09 ***
ORGSRCC      0.0517075  0.2062089   0.251 0.802005   
ORGSRCD     -0.0852036  0.1995547  -0.427 0.669402   
ORGSRCI      0.1268947  0.4353997   0.291 0.770712   
ORGSRCO      0.1271104  0.1928021   0.659 0.509717   
ORGSRCP      0.1808338  0.1982894   0.912 0.361785   
ORGSRCR      0.0769986  0.2059555   0.374 0.708508   
ORGSRCU      0.0911348  0.1976674   0.461 0.644762   
OWNHOME     -0.4111145  0.0922824  -4.455 8.39e-06 ***
RETURN24    -0.0580683  0.1555311  -0.373 0.708884   
SEXM        -0.0864359  0.0798599  -1.082 0.279100   
VALUE24      0.0011545  0.0002784   4.147 3.37e-05 ***

연령이 한살 적어질수록 -0.0373678이 작아진다라고 하면 안된다. 왜냐하면, Odds Ratio를 구해야 하므로.
오즈비를 구하려면 coef를 구해줘야 한다.
> exp(coef(buyRogisticModel))
(Intercept)         AGE       BUY12        BUY6   CLIMATE20   CLIMATE30        COA6     DISCBUY        FICO      INCOME
  7.9115263   0.9633218   1.0854230   0.9170223   0.8061553   0.7240374   1.2599842   0.9367721   0.9951821   0.9995894
       LOCB        LOCC        LOCD        LOCE        LOCF        LOCG        LOCH    MARRIED1     ORGSRCC     ORGSRCD
  1.0522958   1.3361788   1.3524005   1.0704923          NA   1.0354110          NA   1.6984974   1.0530677   0.9183253
    ORGSRCI     ORGSRCO     ORGSRCP     ORGSRCR     ORGSRCU     OWNHOME    RETURN24        SEXM     VALUE24
  1.1352975   1.1355424   1.1982160   1.0800406   1.0954167   0.6629110   0.9435855   0.9171944   1.0011552

연령이 한살 높아질수록 0.9633218배 만큼 늘어난다.(1보다 작으므로 낮아진다.)
집을 가지고 있는 사람은 0.6629110배 만큼 집이 없는 사람보다 구매율이 차이난다.


Naive Bayes

실제로는 생길 수 없는 강한 독립 사건에 대한 가정을 포함한다는 사실 때문에 의도적으로 naive 라는 말을 사용한다.

조건부 확률 (A가 일어났을때 B가 일어날 확률)
- 확률이 0이 아닌 두 사건 A,B에 대하여 사건 A가 일어났다고 가정했을 때 사건 B가 일어날 확률을 조건부 확률 P(B|A)로 정의한다.
즉, 사건 A의 발생여부에 따라 B가 일어날 확률이 달라질수 있음을 의미.

P(A교집합B) = P(B)*P(A|B) = P(A)*P(B|A)


  VEH_INVL
Y            1          2          3
  0 0.29612018 0.63641376 0.06746606
  1 0.31145577 0.56892764 0.11961659

2대의 자동차가 부딛혔을때,
부상안했을 확률이 0.63
부상했을 확률이 0.56


3대의 자동차가 부딛혔을때,
부상안했을 확률이 0.0675
부상했을 확률이 0.11196



CrossTable(test_set$MAX_SEV_IR, test_set$predict_nb, prop.chisq=FALSE, prop.t=TRUE,prop.c=FALSE, prop.r=FALSE)

                  | test_set$predict_nb
test_set$MAX_SEV_IR |         0 |         1 | Row Total |
--------------------|-----------|-----------|-----------|
                  0 |      4154 |      2059 |      6213 |
                    |     0.328 |     0.163 |           |
--------------------|-----------|-----------|-----------|
                  1 |      3010 |      3432 |      6442 |
                    |     0.238 |     0.271 |           |
--------------------|-----------|-----------|-----------|
       Column Total |      7164 |      5491 |     12655 |
--------------------|-----------|-----------|-----------|\\



출처

GBSA 경기도경제과학진흥원 2017 SW - tech 전문교육 2주차