티스토리 뷰
데이터 분석을 하다보면 같은 데이터를 분석하더라도 같은 X에 관해서도 다양한 상관관계나 나올 수 있다. 이러한 그러한 상관관계 중에 최적의 선택을 하는 것이 데이터 사이언스의 역할이라고 할 수 있다. 이러한 선택을 위해 개발된 것이 바로 졍규화 방법론(Regularized Method)이다. 이렇게 선택에 도움을 주는 정규화 방법론에 대한 이해를 하고, Ridge 알고리즘과 Lasso 알고리즘에 대해 알아보자.
정규화 방법론은 다른 단어로 Regularized Method, Penalized Method, Contrained Least Squares라고도 불리어진다. 그리고 정규화를 하는 이유는 선형회귀 계수(weight)에 제약조건을 추가하여 모델이 과적합되는 것을 막는 것이라고 할 수 있다.
본격적으로 이론을 들어가기 전에 확인해야 할 개념이 있다. 우리는 회쉬분석을 검증 하여 계수를 추정 할 때, 결정론적 모형이나 확률론적 모형으로 성능을 평가한다. 복잡한 식들이 나와있지만, 앞의 두모형은 실제값과 예측값의 차이인 잔차를 이용하여 검증을 진행하는 공통점이 있다는 점을 확인하자. 이러한 관점에서 회귀분석은 y=f(x)를 구하게 되는데, 이때 핵심은 x는 y의 원인으로 접근하면 안되고 [Y-f(x)]^2을 최소로 하는 베타(가중치 = weight)를 추정한다고 생각을 하자. 즉, 정규화 회귀분석 알고리즘(Standard Regression)을 식의 형태는 아래와 같다.
Standard Regression
식에서 알 수 있듯 베타_hat은 실제값과 예측값의 차이의 제곱임을 이해하자. argmin을 모르는 사람이 있을 수 있으니 간단히 설명하고 넘어가겠다.
min함수는 최소값을 출력하는 것은 느낌적으로 다 알 수 있다. argmin은 arguments of min이라는 의미로 함수를 최소로 만드는 정의역이나 매개변수를 출력해 준다. argmin(f(x))의 출력하면, f(x)의 최소값이 출력되는게 아니라 f(x)를 최소로 만드는 x가 출력됨을 이해하면된다.
위의 기본식을 바탕으로 Ridge Regression에 대해 알아보자.
Ridge Regression
Ridge 알고리즘의 식부터 확인해 보자.
식을 보면 standard Regression 식에 오른쪽에 람다가 포함된 항 하나가 추가된 것을 알 수 있다. 새로추가된 항을 보면 람다에 추정할 계수의 제곱(가중치=weight)이 곱해진 것을 볼 수 있다. 우선은 람다에 대해 알아보자.
하이퍼파라미터(람다: ∧)
> 기존의 잔차 제곱합에 추가 제약 조건의 비중을 조절하는 하이터파라미터이다.
- 람다가 0이면 오른쪽 항이 없어지므로 일반적인 선형 회귀모형(OLS)가 된다.
- 람다의 값이 커지는 경우는 정규화 정도가 커지기 때문에 베타값이 커지지 않고 작아진다.
- 람다의 값이 작으면 정규화 정도가 작아지므로 가중치의 값들의 자유도가 높아져서 베타가 커질 수 있다.
다시 Ridge Regression에 대해 알아보자. 식을 보면 오른쪽에 추가된 항에 대해 집중해 보자. 람다는 기본적으로 양수이고, 베타의 값은 제곱이 들어가 있으니 전체값은 양수가 된다. 그리고 베타의 제곱이기 때문에 Ridge Regression은 큰 숫자에 민감하고, 큰 숫자들을 줄이는데 사용된다. 따라서 1보다 큰 숫자들이 1에 가깝게 바꾸려고 함을 이해하자.
정리하면 데이터분석에서 Ridge를 적용을 하면 X(독립변수)의 값들의 크기(scale)을 조정해서 좀 더 현실성 있는 데이터로 만들어 준다.
사용법은 간단하다.
from sklearn.linear_model import Ridge
fit = Ridge(alpha=alpha_weight, fit_intercept=True, normalize=True, random_state=123).fit(X_train, Y_train)
pred_tr = fit.predict(X_train)
pred_te = fit.predict(X_test)
Lasso(Least Absolute Shrinkage and Selection Operator) Regression
아래의 식에서 알 수 있듯 람다(가중치)의 절대값의 합을 최소로 식이다.
베타의 절대값이 포함되어 있기 때문에 바타_hat이 작아지려면, 기본적으로 베타가 작아져야 하는 것은 Ridge와 동일하다. 그러나 Ridge에서는 1보다 큰 숫자에 민감한 반면에, Lasso는 모든 값들이 최소값인 0으로 빠르게 수렴시킨다. 즉, 상관성이 없는 독립변수들을 0으로 바꿔버린다.
이러한 특징을 활용해서 데이터 분석 시 Y(종속변수)에 영향을 적게주는 X를 제거해 줄 수 있다. 이러한 방식은 다중공선성의 제거의 효과가 나타난다. 다중공선성에서는 VIF와 PCA의 방식이 있었는데, 이때 VIF가 비독립 X를 없애주는 것과 같은 효과를 본다고 할 수 있다. 따라서 Lasso는 다중공선성을 제거해 주는 회기 분석이라고도 한다.
사용법은 아래와 같이 간단하다.
from sklearn.linear_model import Lasso
fit = Lasso(alpha=alpha_weight, fit_intercept=True, normalize=True, random_state=123).fit(X_train, Y_train)
pred_tr = fit.predict(X_train)
pred_te = fit.predict(X_test)
'데이터분석' 카테고리의 다른 글
의료데이터 분석하기 입문 (0) | 2021.04.28 |
---|---|
[데이터 분석] 비전공자를 위한 ACF(Autocorrelation Function) 설명하기 (0) | 2021.04.07 |
[데이터분석] 비전공자를 위한 QQ-Plot 설명하기 (0) | 2021.04.05 |
기초 통계 정리_통계량 (0) | 2021.03.30 |
기초 통계 정리_중심 통계량 (0) | 2021.03.26 |
- Total
- Today
- Yesterday
- Queue
- useState
- 자료구조
- pandas
- django
- DFS
- TensorFlow
- Express
- JavaScript
- mongoDB
- 클라우데라
- login
- vuejs
- Vue
- useHistory 안됨
- 자연어처리
- react autoFocus
- nodejs
- Deque
- Python
- typescript
- next.config.js
- logout
- nextjs autoFocus
- error:0308010C:digital envelope routines::unsupported
- read_csv
- UserCreationForm
- NextJS
- BFS
- react
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |