문제해결 절차
일반적인 문제해결 절차
데이터 기반 문제해결 절차
모델 스스로 데이터를 기반으로 변화에 대응
머신러닝을 통한 학습
지도학습 - 분류 Classification
지도학습 - 회귀 Regression
비지도학습은 레이블 없다
비지도학습 - 군집
비지도학습 - 차원 축소
Regression 회귀
만약 주택의 넓이과 가격이라는 데이터가 있고 주택가격을 예측한다면
머신러닝 모델 만들기
1차함수
선형 회귀
모델을 구성하는 파라미터 찾기
OLS (Ordinary Linear Least Square)
- 데이터를 하나의 직선으로 만든다면
- 직선
- 데이터를 모두 직선에 대입
- 문제를 벡터와 행렬로 표현
- 찾고 싶은 모델
- 행렬로 정리
- 드디어 X를 찾을 수 있다
- 본래의 문제로
- 데이터로
- 원 식
- 정리
- 적용하면 a와 b를 구할수 있다
- 최종 모델
- 모델의 성능을 표현
실습
데이터 만들기
import pandas as pd
data = {'x':[1,2,3,4,5], 'y':[1,3,4,6,5]}
df = pd.DataFrame(data)
df
가설을 세우기
import statsmodels.formula.api as smf
lm_model = smf.ols(formula='y~x', data=df).fit()
결과
lm_model.params
seaborn
import matplotlib.pyplot as plt
import seaborn as sns
sns.lmplot(x='x', y='y', data=df)
plt.xlim([0, 5])
잔차 평가 residue
- 잔차는 평균이 0인 정규분포를 따르는 것 이어야 함
- 잔차 평가는 잔차의 평균이 0이고 정규분포를 따르는 지 확인
잔차 확인
resid = lm_model.resid
resid
결정계수 R-Squared
- y_hat은 예측된 값
- 예측 값과 실제 값(h)이 일치하면 결정계수는 1이 됨(즉 결정계수가 높을 수록 좋은 모델)
결정계수 계산 -numpy
import numpy as np
mu = np.mean(df['y'])
y = df['y']
y_hat = lm_model.predict()
np.sum((y_hat-mu)**2) / np.sum((y - mu)**2)
lm_model.rsquared
잔차의 분포도 확인
sns.distplot(resid, color='black')