개발자 끄적끄적
다중선형 회귀분석 본문
<다중 선형 회귀분석(Multiple Linear Regression)>
- 다중 : 예측변수가 여러개
- 정량적인 종속변수(목표번수, 출력변수 또는 반응변수) Y와
예측변수(설명변수, 독립변수, 입력변수, 회귀변수, 공변량)인 X1, X2, ..., Xp
사이의 선형관계를 적합하기 위해 사용
- 다중 선형 회귀분석은 분석대상에서 다음과 같은 관계가 있다고 가정
Y(outcome) = B(0) + B(1)x(1) + B(2)x(2) +... + B(p)x(p) + ε
- B(0) : constant, B(1),...B(p) : coefficients, x(1),...,x(p) : predictors, ε : error(noise)
- We assume a linear relationship between predictors and outcome
- Data are used to estimate the coefficients and to quantify the noise
In predictive modeling, the data are also used to evaluate the model performance
- B(0), ..., B(p)는 회귀계수
- ε은 잔차 또는 잡음(noise)로서 회귀계수에 의해 설명되지 않는 항 -> 오차
- 어떤 입력변수를 어떤 형식으로 포함할 지를 선택(ex: x대신에 log(x)사용)
- 선형 회귀분석의 2가지 주된 목적
- 정량적 출력변수와 에측변수들간의 관계를 설명 : 전통적 통계햑(explanatory modeling)
- 새로운 사례에 대해 출력값 예측 : 데이터마이닝(predictive modeling)
- 선형 회귀 모델은 설명모델뿐만 아니라 예측모델로도 매우 유명한 도구이다
- 좋은 예측모델은 높은 예측 정확도를 갖는다(실용적 수준에 유용)
- 예측모델은 학습 데이터 세트를 사용하고 별개의 검증 데이터 세트에서 평가하도록 만들어진다
- 중복 예측변수를 제거하는 것은 예측 정확도와 강건함을 얻는 데 핵심적이다
- 예측 변수들의 부분집합을 선택하는 것은 "좋은" 후보 모델을 찾기 위함이다
후보모델들은 반드시 실행 및 평가되어야 한다
<설명 모델(Explanatory Modeling)>
- 목표 : 예측변수들(설명변수들)과 목표변수(종속변수, 타깃변수)사이의 관계 설명
- 모델 목표
- 모집단의 데이터를 가장 잘 적합한 최적의 적합 모델 추정
- 목표변수에 대한 설명 변수들의 관계(contribution)를 이해
- 적합도 검증 방법
- R^2, 잔차 분석, p-values
- Y' = B'(0) + B'(1)x(1) + B'(2)x(2) +... + B'(n)x(n)
- x(2)~x(p)가 고정되어 있을 때, x(1)의 한 단위 증가는 Y에 평균적(Y의 평균값)으로 B(1)만큼 상승하는 관계
<예측 모델(Predictive Modeling)>
- 목표 : 데이터에 예측변수 값은 있지만 목표변수의 값이 없는 경우 예측변수를 이용하여 목표변수의 값을 예측
- 전통적 데이터마이닝 맥락
- 모델 목표 : 예측 정확성 최적화
- 성능 평가는 얼마나 '새로운 사례를 잘 예측'하는지에 의존한다
- 데이터를 학습과 검증데이터로 분할
- 학습 데이터에서 모델 추정
- 검증 데이터에서 성능 평가
<회귀 방정식의 추정과 예측>
- 최소자승법(ordinary least squares : OLS)을 이용하여 데이터로부터 이들 계수 B(0), B(1), ..., B(p)를 추정
- 실제값(Y)와 모형에 의해 에측된 값(Y')간의 차이 제곱의 합계를 최소화하는 추정치 B'(0), B'(1), ..., B'(p)를 찾는다
Y' = B'(0) + B'(1)x(1) + B'(2)x(2) +... + B'(n)x(n) -> 예측식(학습데이터로 모델을 찾는다)
- 회귀분석의 가정
1. 가정 1 : 잡음(또는 종속변수)은 정규분포에 따른다
2. 가정 2 : (종속변수와 독립변수간의) 선형관계가 존재한다
3. 가정 3 : 레코드(사례)들은 서로 독립적이다
4. 가정 4 : 예측변수들이 주어진 상황에서 Y값의 변동성은 예측변수값과 관계 없이 일정하다(등분산성 : homoscedasticity)
<단순선형회귀 모형>
- 단순선형회귀 모형
- 확률변수 Y(목표변수), 예측변수 x(1개), 오차 : 확률변수 ε
Y(i) = B(0) + B(1)x(i) + ε(i), i(데이터의 갯수)=1,2,...n //x라는 변수가 Y에 어떤 영향을 주는 지
- 조건 : n개의 레코드
(1) B(0)과 B(1)은 미지의 회귀모수(존재하는 것은 알지만, 모르기때문에 찾아야하는 파라메터)
(2) 오차 ε(i)~N(0, δ^2), ε(i)는 서로 독립(오차는 +-값)
(3) Y(i)는 예측변수를 x(i)로 고정시켰을 때의 종속변수의 값
- 주어진 자료로부터 회귀모수를 추정하여 회귀직선을 추정하는 통계적 기법이 회귀분석이다
<최소제곱법을 이용한 모수의 추정>
- 최소제곱추정량
- 추정된 회귀직선
- 예측값
- 예측오차(residual)
<선형관계의 강도>
- 주어진 자료가 추정된 모형에 얼마나 적합한가의 강도를 측정한다
- 총제곱합의 분해
- 총제곱합 : SS(t)
- 회귀제곱합 : SS(R)
- 오차제곱합 : SS(E)
- y의 총 변동 중에서 선형회귀모형에 의하여 설명되는 변동부분의 비율을 결정계수라하며 적합도 측도로 사용한다
- R^2 = SSR/SST= 1 - (SSE/SST) = r^2 //R square가 높을수록 좋은 모델
<가변수 만들기(pandas.get_dummies)>
- Pandas provides a method to convert factors into dummy variables.
pandas.get_dummies(data, prefix=None, prefix_sep='_', dummy_na=False, columns=None, sparse=False, drop_list=False, dtype=None)
- data : One-hot encoding을 적용할 데이터
- prefix : 생성할 dummy variable의 column 이름 앞에 붙을 prefix를 지정한다. 범주형 column에 따라 리스트나 딕셔너리를 통해 column별 prefix를 따로 지정할 수 있다
- prefix_sep : prefix와 범주 사이의 separator로 '_'가 default로 지정되어 있다
- dummy_na : NAN도 dummy variable에 포함시킬 지 여부, defaut는 False
- columns : One-hot encoding될 column
- drop_first : k개의 범주에서 k-1개로 dummy variable을 만들 때 사용. 나머지 하나는 다른 dummy로 표현된다
- dtype : 새로운 column의 데이터 타입. default는 np.unit8
<예측변수의 변수 선택>
- 목표 : 예측변수의 수를 줄여서 간단명료한 모델 찾기(충분히 잘 작동할 가장 간단한 모델)
- 예측변수가 많을수록 데이터에 결측치 발생 가능성이 높아진다
- 많은 변수를 사용하는 모형에서 발생하는 다중공선성(Multicollinearity)문제 발생
- 다중공선성은 2개 이상의 예측변수가 출력변수와 동일한 선형관계의 정보를 공유하는 경우를 말한다(ex. 월 급여, 연봉(월 급여*12))
- 목표변수와 상관관계가 없는 예측변수들을 이용하는 것은 예측의 분산을 증가시킬 수 있다
- 실제로 목표변수와 상관관계가 존재하는 예측변수를 누락시킬 경우 예측의 평균 오차 혹은 편기(bias)를 증가시킬 수 있다
- Assess predictive accurancy on validation data
- 예측변수 축소 방법
- 전역 탐색 : exhaustive search -> best subset
- 부분 탐색 알고리즘
- 전방선택, 후방제거, 단계적 선택
<전역 탐색(Exhaustive Search)>
- 예측변수들의 모든 가능한 부분집합들을 평가
- 변수의 개수가 하나, 두 개, ..., 순차적으로 그 이상의 경우
- p가 작으면서 Mallow's C(p) = (p+1)일 때 모델이 좋다
- R^2는 모델이 설명할 수 있는 변동성의 비율로 높을수록 좋은 모델이며 "1"이 최대치이다
- adjusted R^2 : p가 증가할 수록 R^2가 감소한다
- AIC, BIC : 두 지표는 같은 데이터를 적합시킨 여러 모델을 비교할 때 사용한다(예측 에러를 측정)
- 작은 값을 갖는 모델이 좋은 모델이다
- p = 모델에 포함된 예측변수의 개수
- AIC(Akaike Information Criterion)
- BIC(Schwartz's Bayesian Information Criterion)
- AIC = n*ln(SSE/n) + n*(1+ln(2π)) + 2(p+1)
- BIC = n*ln(SSE/n) + n*(1+ln(2π)) + ln(n)*(p+1)
- ex)
pred_y = car_lm.predict(train_x)
print('adjusted r2 : ', adjusted_r2_score(train_y, pred_y, car_lm))
print('AIC : ', AIC_score(train_y, pred_y, car_lm))
print('BIC : ', BIC_score(train_y, pred_y, car_lm))
<전방선택(Forward Selection)>
- 예측변수 수가 많을 때 사용
- 예측변수 없이 시작하여 예측변수를 하나씩 추가(모델의 R^2를 가장 크게 기여하는 변수 추가)
- 추가된 예측변수들의 기여도가 통계적으로 유의하지 않을 때 중단
- 단점 : 둘 이상의 에측변수들이 함께 사용될 때는 효과적이나 단일 변수로 사용될 때 낮은 성능을 보이는 에측변수들을 누락
- Start with no predictors
- Add them one by one(add the with largest contribution)
- Stop when the addition is not statistically significant
<후방소거법(Backward Elimination)>
- 모든 예측변수를 사용하는 것으로 시작
- 단게별로 가장 유용하지 않은 예측변수를 하나씩 연속적으로 제거
- 남아 있는 모든 예측변수들이 통계적으로 중요한 기여를 한다고 판단될 때 중단
- 단점 : 모든 예측변수를 포함하는 초기모델을 계산하는데 시간이 많이 걸린다
<정규화(수축 모델)>
- 철저한 검색 = 최상위 하위 집합
- 평가된 에측 변수의 모든 가능한 서브셋
- 가장 일반적인 수축법으로 릿지 회귀와 라쏘
- 릿지 회귀에서 패널티는 계수의 제곱합을 사용
- 라쏘는 예측변수 p(절편은 제외)에 대한 절댓값의 합을 사용
- 라쏘 패널티는 효과적으로 일부 계수를 0으로 축소하여 예측 변수의 서브셋을 생성
- 선형 회귀 계수는 오차제곱합(SSE)의 학습 데이터셋 합을 최소화하여 추정
- 릿시 회귀 및 라쏘에서는 학습 데이터셋의 SSE를 최소화하여 계수를 추정하며, 패널티 항이 일부 임곗값 t미만일 수 있다
'데이터 마이닝' 카테고리의 다른 글
K-NN 알고리즘 (1) | 2023.05.19 |
---|---|
SNA(Social Network Analysis) (1) | 2023.05.06 |
사회연결망 분석 (0) | 2023.04.27 |