본문 바로가기

Data Science/2. 기계학습

[n211]Simple Regression

■ Key words

  ㆍ선형회귀(Linear Regression)

  ㆍ지도학습(Supervised Learning)

  ㆍ기준모델(Baseline Model)

  ㆍScikit-learn

  ㆍTabular Data(row/column)

  ㆍRegression / Classification

  ㆍ선형회귀모델의 계수(coefficients)

 

 주요내용

  ㆍLinear Regression Analysis(선형회귀분석법) : 여러 표본의 분포를 선형으로 회귀분석하는 분석법.

     - 최소제곱법(least square method) : 회귀선과 종속변수(dependent variables, y)의 y값 잔차(편차)의 총합이 

                                              가장 적도록 하는 회귀선을 구하는 법.

  ㆍTabular Data : 테이블 형태의 2차원 데이터. row(가로)의 observations, column(세로)의 variables, 

                    그리고 그들의 relationships으로 구성되어 있다.

  ㆍ지도학습의 방법

     - 분류(Classification) : 주어진 데이터를 바탕으로 하나의 독립변수를 분류하는 것(사진은 고양이인가 개인가)

     - 회귀(Regression) : 주어진 데이터를 바탕으로 하나의 독립변수에 대한 종속변수값을 예측하는 것(유가변동에 따른 주가 변동 예측)

  ㆍ기준모델(Baseline Model) : 예측 모델을 구체적으로 만들기 전에 가장 간단하면서도 직관적이면서 최소한의 성능을 나타내는 기준이 되는 모델

     - 분류문제: 타겟의 최빈 클래스

     - 회귀문제: 타겟의 평균값

     - 시계열회귀문제: 이전 타임스탬프의 값

     * 보다 고도의 Machine Learning을 적용할 경우, Linear regression을 기준모델로 사용하기도 한다.

  ㆍ예측모델(Predictive Model) 활용 : scatter plot에 가장 잘 맞는(best fit) 직선

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

     - 잔차 : 예측값과 관측값 차이

     - 오차(error) : 모집단에서의 예측값과 관측값 차이

     - 회귀선 : RSS(residual sum of squares, 잔차 제곱들의 합)를 최소화 하는 직선

        → 최소제곱회귀(Ordinary least squares, OLS) : 잔차제곱합을 최소화하는 방법

     - 선형회귀는 주어져 있지 않은 점의 함수값을 보간(interpolate) 하여 예측하는데 도움을 줌

     - 선형회귀모델은 기존 데이터의 범위를 넘어서는 값을 예측하기 위한 외삽(extrapolate)도 제공해줌

  ㆍ종속변수와 독립변수

     - 종속변수는 반응(Response)변수, 레이블(Label), 타겟(Target)등으로 불립니다.

     - 독립변수는 예측(Predictor)변수, 설명(Explanatory), 특성(feature) 등으로 불립니다.

  ㆍscikit-learn library를 이용한 linear regression

     - fit() 메소드를 사용하여 모델을 학습

     - predict() 메소드를 사용하여 새로운 데이터를 예측

  ㆍClassical programming과 Machine Learning

     - Classical Programming : Rules과 data를 넣고 답을 구하는 것

     - Machine Learning : Data와 Answers(supervised learning)를 넣고 Rules을 찾는 것

  ㆍ선형회귀모델의 계수(coefficients)

     - 계수(coefficient) : 기울기. 변화도. 해당 독립변수에 대한 민감도.

     - 절편(intercept) : 상수.

 

■ 주요함수

  ㆍBaseline Model

     - predict = df['column'].mean()

     - errors = predict - df['column']

     - mean_absolute_error = errors.abs().mean()

     - print(f'예측한 주택 가격이 ${predict:,.0f}이며 절대평균에러가 ${mean_absolute_error:,.0f}임을 확인할 수 있습니다.')

  ㆍfrom sklearn.linear_model import LinearRegression

     - model = LinearRegression()

     - feature = ['column', 'column', …]

     - target = 'column'

     - X_train = df[feature]

     - y_train = df[target]

     - model.fit(X_train, y_train)

     - X_test = [[x] for x in df_test['column']]

     - y_pred = model.predict(X_test)

  ㆍcoefficients

     - model.coef_

     - model.intercept_

  ㆍfrom ipywidgets import interact

     - # 데코레이터 interact를 추가합니다.

       @interact

       def explain_prediction(sqft=(500,10000)):

           y_pred = model.predict([[sqft]])

           pred = f"{int(sqft)} sqft 주택 가격 예측: ${int(y_pred[0])} (1 sqft당 추가금: ${int(model.coef_[0])})"

           return pred

 

■ Reference

  ㆍScikit Learn : https://engineer-mole.tistory.com/16

  ㆍ최소제곱법(OLS, Ordinary Least Squares) : https://namu.wiki/w/OLS

'Data Science > 2. 기계학습' 카테고리의 다른 글

[n222]Random Forests  (0) 2021.06.21
[n221]결정트리(Decision Trees)  (0) 2021.06.21
[n214]Logistic Regression  (0) 2021.06.21
[n213]Ridge Regression  (0) 2021.06.21
[n212]다중선형회귀(Multiple Linear Regression)  (0) 2021.06.21