본문 바로가기
기계학습(ML)/Linear Models

n211 Simple Regression

by kiimy 2021. 6. 12.
728x90
import pandas as pd
import numpy as np
from sklearn.linear_model import LinearRegression,  LogisticRegression, Ridge, RidgeCV,
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
from sklearn.metrics import r2_score, mean_squared_error

 

*sns.pairplot(df[cols], height=2); ==> 전체 변수와의 관계를 보여줌

*머신러닝이란?

Data, Answer ==> ML model ==> rule

= 지도학습( 데이터와 답을 통해서 법칙을 찾아내는법)

*기준모델(Baseline Model)

가장 간단하면서도 직관적이면서 최소한의 성능을 나타내는 기준이 되는 모델을 기준모델 

평균값을 기준으로 사용했을 때는 평균기준모델

(= 이 예측보다는 좋아야한다)

  • 분류문제: 타겟의 최빈 클래스
  • 회귀문제: 타겟의 평균값
  • 시계열회귀문제: 이전 타임스탬프의 값

predict= price.mean()

error= prdict- price

mae= error.abs.mean()

==>> 큰 이상치의 경우 영향이 있음( but 나온 값을 통해서 이만큼의 차이가 있다라는 것이 직관적임)

Feature = X 독립변수 Target= y 종속변수
예측(Predictor)변수, 설명(Explanatory), 특성(feature) 반응(Response)변수, 레이블(Label), 타겟(Target)

*예측모델(Predictive Model) 

scatterplot에 가장 잘 맞는(best fit) 직선을 그려주면 그것이 회귀 예측모델이됨

회귀분석에서 중요한 개념은 예측값과 잔차(residual) 

 

예측값은 만들어진 모델이 추정하는 값

잔차는 예측값과 관측값의 차이(predict-obsevation)

 

회귀선은 잔차 제곱들의 합인 RSS(residual sum of squares)를 최소화 하는 직선= SSE(Sum of Square Error)

이 값이 회귀모델의 비용함수(Cost function)가 됩니다. 비용함수를 최소화 하는 모델을 찾는 과정을 학습이라고 함

 

알파 베타는 RSS를 최소화하는 값/ 모델 학습을 통해 얻을 수 있음

(= 잔차제곱합을 최소화 방법 OLS 최소제곱회귀 Ordinary least squares)
=sns.regplot(x= df~~~, y= df... , line_kws={'color':'red'})
line_kws(=reg 빨간선)
OLS에 전제조건 == 종속변수가 연속변수여야함

* 선형회귀는 주어진 구간의 점수를 알 수 없는 값을 예측 =  보간(interpolate)
* 기존 데이터의 범위를 넘어서는 값을 예측 = 외삽(extrapolate)

* sklearn 활용

  1. 풀어야 하는 문제를 풀기에 적합한 모델을 선택하여 클래스를 찾아본 후 관련 속성이나 하이퍼파라미터를 확인
  2. 데이터 준비
  3. fit() 메소드를 사용하여 모델을 학습
  4. 'predict()' 메소드를 사용하여 새로운 데이터를 예측

 

  • 모델 설정 model = LinearRegression()
  • feature, target 설정 후 X_train, y_train 모델 설정
  • model.fit( train data ) ==> 훈련데이터를 model으로 학습시킴
  • X_test(해당 값이였을 때 종속변수 값을 알기위해) 값 설정 후
  • y_pred= model.predict(X_test)
  • * 해당 독립변수를 다 알고싶다면 X_test = [[x] for x in df_t['GrLivArea']]

 

 

머신러닝은 데이터와 답을 통해 룰을 찾아내는 방법

 *LinearRegression 객체의 coef_, intercept_ 속성

coef_ 계수 = x가 증가할 때 해당값만 증가 or 감소

intercept_ y절편= x=0일때, y의 평균값(= Data 무작위 noise존재 == 이걸평균내면 0에 가까움)

 

*회귀= continuous 한 데이터를 예측 Regression ( best fit line )

==> SSE(잔차제곱의합)이 최소화 하는 직선 ==> 구하는 방법이 OLS

*분류= category or class 예측 Classification ( decision noundary )

 

오차 VS 잔차

모집단에서 회귀식을 얻었다면, 그 회귀식을 통해 얻은 예측값과 실제 관측값의 차이가 오차
표본집단에서 회귀식을 얻었다면, 그 회귀식을 통해 얻은 예측값과 실제 관측값의 차이가 잔차

 

 

 

- 잔차의 절대값의 합을 식으로 표현하면 미분이 불가능한 형태이다. 최소값을 구하기 위해 잔차를 표현하는 식을 미분을 해야하는데, 절대값을 이용하면 미분이 불가능하다. - 잔차의 제곱의 합은 미분이 가능하며, 유일해를 갖는다.

 

 

잔차의 합이나 절대값을 이용하지 않고 제곱합을 취하는 이유는 다음과 같다.

- 잔차의 합을 0으로 만드는 해는 무수히 많기 때문인데, 즉 유일해가 아니기 때문이다. (Residual이 양수거나 음수임. 각각의 residual들을 더했을때 그 합이 0인 값은 다수 존재)

 

 

 

 

독립변수로 종속변를 예측하기 위한 추세선(회귀선)을 구한다.(y= b+ax)
이 선과 데이터들의 error 가 발생하고 error(잔차) = 측정값 - 예측값이다.

즉, 가장 합리적인 추세선이란 '잔차가 가장 작은 추세선이다'
이 계산을 통해서 +와 -가 나오는데 이것을 방지하기위해 제곱을 해주고('최소제곱법')
제곱의 합이 최소화된 추세선을 통해서 종속변수를 예측할 수 있다.

 

*단순선형회귀 모델을 만들기 위한 좋은 특성 선택

  1. 단순선형회귀분석이란 단일 독립변수에 대한 종속변수의 추이를 분석하는 것이다.
  2. 단순선형회귀모델은 이런 원리를 사용하여 주어진 feature와 target의 관계를 학습하고 정확한 수치(기울기, 절편)로 나타내는 것을 말한다.
  3. target에 영향을 끼치는 feature가 무엇일지 잘 선택하는 것이 중요하다.
  4. 객관적인 수치로 명확한 표현이 가능한 양적변수는 회귀분석에 유용하게 사용된다.
  5. 질적변수도 더미 코딩을 통해 수치로 변환하거나, 전문가들이나 기존 연구에 의해 완성된 신뢰도 높은 방법으로 연속적 수치로 변환할 수 있다면 얼마든지 사용 가능하다.
  6. 시각화를 통해 상관관계를 눈으로 파악하거나, 공분산 혹은 상관계수를 확인해 보거나, 좋은 특성을 분별하는 작업까지 코딩으로 처리하여 정확도를 높이면 좋은 특성을 선택할 수 있다.

*OLS(Ordinary Least Squares)

  1. 최소자승법(Ordinary Least Squares)은 잔차제곱합(RSS: Residual Sum of Squares)을 최소화하는 벡터를 구하는 방법이다.
  2. 분포되어 있는 데이터의 추세선을 그리고자 할 때 주로 사용된다.
  3. 추세선과 데이터 벡터의 오차는 다양한 형태로 표현될 수 있지만 가장 보편적이고 쉽게 이해할 수 있는 지표는 잔차 제곱합이다.
  4. 우리가 오늘 배웠던 단순선형회귀로만 제한하여 생각해 보자. 그리고 어떤 데이터값의 벡터가 (xi,yi) 이고, 단순회귀선의 식이 yi^=axi+b 라고 가정해보자.
  5. 이 때, x1에 따른 y1^과 실제 y1의 값은 동일하지 않다.
  6. 모든 데이터를 지나도록 일차방정식 선을 그릴 수 있으면 좋겠지만, y1^y1인 것 처럼, 단순선형회귀분석으로는 불가능 한 일이다.
  7. 따라서 (xi,yi)에서 y^=ax+b 까지의 거리, 즉 오차를 최소화 할 수 있는 방법을 사용하여 데이터의 분포를 가장 잘 반영하는 직선(회귀선)을 그리는 것으로 최선의 타협을 한다.
  8. 여기서 해당 오차를 최소화 하는 방법 중 하나가 잔차제곱합을 최소화하는 최소자승법이다.
728x90

댓글