회귀 분석
회귀는 '되돌아오다', '가지고 있는 속성을 되돌려 받는다'라는 의미로서 종속변수와 독립변수의 관계를 분석하는데 사용한다.
회귀분석에는 단순 회귀 분석과 다중 회귀 분석으로 나뉜다.
단순 회귀 분석
하나의 종속변수와 하나의 독립변수 사이의 관계를 분석하는 것
다중 회귀 분석
- 하나의 종속변수와 여러 독립변수 사이의 관계를 규명
- 연속된 변수에 많이 쓰인다.
예시)주택 가격 예측, 매출액 예측, 주가 예측, 온도 예측
대표 회귀 모델
- 최소제곱법을 활용한 LinearRegression
- 경사하강법을 활용한 SGDRegressor
선형 회귀
from sklearn.linear_model import LinearRegression
# 객체 생성
li_model = LinearRegression()
li1 = li_model.fit(x, y)
pred = li1.predict(x)
plt.scatter(x, y)
plt.plot(x, pred)
li1.score(x, y)
# X, y를 넣으면?
# w0 = 5 # y절편
# w1 = 2 # 회귀 계수
선형 회귀를 사용하면 이렇게 두 변수 사이의 관계를 직선으로 회귀해 준다.
스코어
R2 Score
- 실제 값의 분산 대비 예측 값의 분산 비율을 나타냅니다.
- 분산이 작을수록 회귀 모델의 성능이 좋다.
- 1에 가까울 수록 좋은 모델이고, 음수가 나오면 잘못된 모델이라고 평가된다.
코드로 나타내면 아래와 같다. 여기서 y_true는 y의 실제 값, y_pred는 y의 예측 값이다.
최소제곱법(MSE)
예측 값과 실제 값의 차이에 대한 제곱에 대하여 평균을 낸 값
RMSE
MSE에 루트를 씌어서 실제 값이 과장되는 것을 막아준다.
MAE
- 예측값과 실제값의 차이에 대한 절대값에 대하여 평균을 낸 값
- 스케일에 의존적이라는 단점을 가지고 있습니다.
회귀 모델 평가 기준으로 RMSE가 가장 보편적으로 많이 쓰인다.
보스턴 주택 가격 데이터
- 1978년도 보스턴 외곽 지역의 집값을 보스턴의 506개 조사 구역과 주택 가격에 영향을 주는 13개의 변수와 함께 정리하여 제공
- 해리슨(Harrison, D.)과 루빈펠트(Rubinfeld, D. L.)의 논문 "Hedonic prices and the demand for clean air', J. Environ. Economics & Management"에서 사용된 데이터
데이터프레임 및 피쳐별 상관관계
모델링 및 평가
- 데이터를 독립변수와 나누고 종속변수로 나누고 평가를 진한다.
- Feature Selection하여 Baseline과 비교해본다.
- LinearRegression 말고 다른 모델을 사용해 본다. (XGBRegressor, Ensemble(RandomFroestRegressor와 GradientBoostingRegressor))
Feature Selection
- 사용자가 더 해석하기 쉽게 모델을 단순화
- 훈련 시간의 축소
- 차원의 저주 방지
- 오버피팅을 줄여, 좀 더 gerneralization(일반화)할 수 있다.
상관관계가 가장 높은 5가지의 피쳐로만 모델을 훈련시켜, 집 값을 예측해 보자.
RMSE 값이 더 좋게 나오진 않았다. 아무래도 예제문제에서는 피쳐값들이 다 중요한 변수들인 것으로 판단된다.
다른 모델로 학습 및 평가
XGBRegressor로 학습 및 평가
RMSE 값이 2.56으로 평가되었다.
Emsemble(RandomFroestRegressor와 GradientBoostingRegressor)로 학습 및 평가
RMSE 값이 3.30으로 평가되었다.
LinearRegression보다 다른 모델을 사용하니, RMSE 값을 획기적으로 낮출 수 있었다.
'플레이데이터 빅데이터 부트캠프 12기 > 머신러닝 & 딥러닝' 카테고리의 다른 글
[플레이데이터 빅데이터 부트캠프]머신러닝 & 딥러닝 Ensemble (0) | 2022.08.05 |
---|---|
[플레이데이터 빅데이터 부트캠프]머신러닝 & 딥러닝 회귀(Regression)(2) (0) | 2022.08.05 |
[플레이데이터 빅데이터 부트캠프]머신러닝 & 딥러닝 타이타닉 데이터(캐글 튜토리얼) (0) | 2022.08.04 |
[플레이데이터 빅데이터 부트캠프]머신러닝 & 딥러닝 머신 러닝 기초(2) (0) | 2022.08.03 |
[플레이데이터 빅데이터 부트캠프]머신러닝 & 딥러닝 머신 러닝 기초(1) (0) | 2022.08.01 |