Ridge Regression
Pandas-Profiling
- 데이터 타입, 결측값, 중복 등 다양한 정보 확인 가능 매우 유용
- df.profile_report()
위키독스
온라인 책을 제작 공유하는 플랫폼 서비스
wikidocs.net
One Hot Encoding
- 범주형 변수(Categorical)는 순서가 없는 명목형(nominal)과 순서가 있는 순서형(ordinal)로 나뉨.
- pd.get_dummies 활용
# prefix 컬럼에 지정한 글자로 시작하도록
# drop_first 불필요한 요소 제거
pd.get_dummies(df, prefix ['text'], drop_first=True)
- category_encoders 활용
## import OneHotEncoder
from category_encoders import OneHotEncoder
## 원핫 인코딩
encoder = OneHotEncoder(use_cat_names = True)
X_train = encoder.fit_transform(X_train)
X_test = encoder.transform(X_test)
# category_encoders를 사용하면 범주형변수를 가진 특성만 원핫인코딩을 수행함.
- np.percentile 사용해 이상치 제거
df = df[(df['price'] >= np.percentile(df['price'], 0.05)) &
(df['price'] <= np.percentile(df['price'], 99.5))]
- train / test 나누기
# train_test_split 메소드 사용
## Dataset을 나눌 때 test_size 옵션으로 Train, Test의 비율을 설정할 수 있고
## random_state로 seed 값을 지정할 수 있다.
x_train, x_test, y_train, y_test = train_test_split(x_data, y_data, test_size=0.3, random_state=777)
# sample 메소드를 사용
train = df.sample(frac=0.75,random_state=1)
test = df.drop(train.index)
# 타겟 설정 참고
target = df['price']
feature = df.loc[:, df.columns != 'Price']
Feature selection
- SelectKBest : target과 가장 correlated 된 features 를 k개 고르는 것
from sklearn.feature_selection import f_regression, SelectKBest
## selctor 정의합니다.
selector = SelectKBest(score_func=f_regression, k=10)
## 학습데이터에 fit_transform
X_train_selected = selector.fit_transform(X_train, y_train)
## 테스트 데이터는 transform
X_test_selected = selector.transform(X_test)
# 선택된 특성 확인
all_names = X_train.columns
## selector.get_support()
selected_mask = selector.get_support()
## 선택된 특성들
selected_names = all_names[selected_mask]
## 선택되지 않은 특성들
unselected_names = all_names[~selected_mask]
print('Selected names: ', selected_names)
print('Unselected names: ', unselected_names)
- 가장 큰 수의 인덱스 번호 추출
# np.argmax()
a = np.argmax(df)
df[a]
# 이렇게 하면 가장 큰 수의 컬럼 이름 확인 가능
Ridge regression
- Ridge 회귀는 기존 다중회귀선을 훈련데이터에 덜 적합이 되도록 만든다(과적합을 줄이기 위해)
- Ridge 회귀는 이 편향을 조금 더하고, 분산을 줄이는 방법으로 정규화(Regularization)를 수행, 여기서 말하는 정규화는 모델을 변형하여 과적합을 완화해 일반화 성능을 높여주기 위한 기법
- alpha(패널티) 값이 높아질수록 기울기가 0에 가까워지며 평균 기준모델(baseline)과 비슷해짐, 최적의 alpha 값을 구하기 위해 교차검증(RidgeCV)
# Ridge Regression
from sklearn.linear_model import Ridge
ridge = Ridge(alpha=alpha, normalize=True)
ridge.fit()
# RidgeCV를 통한 최적 패널티(alpha, lambda) 검증
from sklearn.linear_model import RidgeCV
alphas = [0.01, 0.05, 0.1, 0.2, 1.0, 10.0, 100.0]
ridge = RidgeCV(alphas=alphas, normalize=True, cv=3)
ridge.fit(ans[['x']], ans['y'])
print("alpha: ", ridge.alpha_)
print("best score: ", ridge.best_score_)
# 이러한 Ridge 회귀 직선의 생김새는 OLS매우 비슷하지만 이상치(outlier) 영향을 덜 받는다
참고블로그
- Ridge와 Lasso 쉬운풀이
Ridge와 Lasso Regression의 쉬운 풀이
왜 linear regression 대신 Ridge,Lasso를 선택할까 | 오늘은 이전 글의 목차에서 다루지 못한 나머지 주제들을 다뤄보려 합니다. *이전 글 https://brunch.co.kr/@itschloe1/9 [목차] 1. Simple models for Prediction 2. Linear
brunch.co.kr
- Ridge regression 간단한 설명과 장점
Ridge regression(능형 회귀) 간단한 설명과 장점
선형 모델(Linear model)의 예측력(accuracy) 혹은 설명력(interpretability)을 높이기 위해 여러 정규화(regularization) 방법들을 사용한다. 대표적인 shrinkage 방법에는 ridge regression과 lasso가 있으며..
modern-manual.tistory.com
'[CodesSates] AI 부트캠프' 카테고리의 다른 글
Decision Trees (0) | 2021.04.12 |
---|---|
Logistic Regression (0) | 2021.04.12 |
Multiple Regression (0) | 2021.04.06 |
Simple Regression (0) | 2021.04.05 |
Clustering (0) | 2021.03.24 |