Simple Regression


Linear Models


1. 기준모델(Baseline Model)

Q . 기준모델이란?
A . 예측 모델을 구체적으로 만들기 전에 가장 간단하면서도 직관적이면서 최소한의 성능을 나타내는 기준이 되는 모델을 기준모델 이라고 한다.

  • 변수 간의 관계를 설명하는 최초의 모델, 직관적인 모델, 초소한의 성능이 되는 모델
  • 기준을 잡기 위한 기초 공사이다.
  • 평균값을 기준으로 사용하는 모델을 평균기준모델이라고 말한다.
  • 문제에 따라 설정하는 기준 모델
    • 분류문제: 타겟의 최빈 클래스
    • 회귀문제: 타겟의 평균값
    • 시계열회귀문제: 이전 타임스탬프의 값

2. 예측모델(Predictive Model)

Q . 예측모델이란?
A . scatterplot에 가장 잘 맞는(best fit) 직선을 그려주면 그것이 회귀 예측모델이 된다. 가장 잘 맞는 직선을 회귀선이라고 한다.

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

  • 잔차 : 예측값과 관측값 차이
    ( 오차( error )는 모집단에서의 예측값과 관측값 차이를 말한다. )

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

    • RSSSSE( Sum of Square Error )라고도 말하며 이 값이 회귀모델의 비용함수( Cost function )가 된다.

    • 머신러닝에서는 이렇게 비용함수를 최소화 하는 모델을 찾는 과정을 학습이라고 한다.

    • RSS=i=1n(εi)2=i=1n(yif(xi))2=i=1n(yi(αxi+β))2{\displaystyle \operatorname {RSS} =\sum _{i=1}^{n}(\varepsilon _{i})^{2}=\sum _{i=1}^{n}(y_{i}-f(x_{i}))^{2}=\sum _{i=1}^{n}(y_{i}-(\alpha x_{i} + \beta))^{2}}

    • 여기서 계수 α\alphaβ\betaRSS를 최소화 하는 값으로 모델 학습을 통해서 얻어지는 값입니다.

    • β=yˉαxˉ\beta =\displaystyle {\bar {y}}-\alpha{\bar {x}}

    • α=SxySxx\alpha ={\frac {S_{xy}}{S_{xx}}}

    • Sxy=i=1n(xixˉ)(yiyˉ){\displaystyle S_{xy}=\sum _{i=1}^{n}(x_{i}-{\bar {x}})(y_{i}-{\bar {y}})}, Sxx=i=1n(xixˉ)2{\displaystyle S_{xx}=\sum _{i=1}^{n}(x_{i}-{\bar {x}})^{2}}

Q . Ordinary least squares(OLS)란 ?
A . RSS를 최소화하는 방법. OLS최소제곱회귀라고도 부른다.

Q . 선형회귀에서 외삽을 할 때 문제점은?
A . 외삽을 하면 지금까지 훈련했던 데이터가 아니기 때문에 전혀 다른 예측이 될 수 있다. 아주 작게 독립변수를 0에 두고 외삽을 했을 때 음수가 나오는 것도 외삽의 문제이다.

  • 보간 : 데이터 범위 내의 값을 예측
  • 외삽 : 데이터 범위 밖의 값을 예측

3. Simple Linear Regression (단순 선형 회귀)

# Scikit-Learn의 예측모델 클래스( LinearRegression )를 import
from sklearn.linear_model import LinearRegression

# 예측모델 인스턴스를 만든다.
model = LinearRegression()

# X 특성들의 테이블과, y 타겟 벡터를 만든다. // 통상적으로 Matrix는 대문자, vector는 소문자로 표기
feature = ['GrLivArea']
target = ['SalePrice']
X_train = df[feature]
y_train = df[target]

# 모델을 학습(fit)
model.fit(X_train, y_train)

# 새로운 데이터 한 샘플을 선택해 학습한 모델을 통해 예측
X_test = [[4000]]
y_pred = model.predict(X_test)

print(f'sqft GrLivArea : {X_test[0][0]}')
print(f'주택의 예상 가격 : ${int(y_pred)}')
# sqft GrLivArea : 4000
# 주택의 예상 가격 : $447090

# 전체 test 데이터를 모델을 통해 예측
X_test = [[x] for x in df_t['GrLivArea']]
y_pred = model.predict(X_test)

# train 데이터에 대한 시각화
plt.scatter(X_train,
            y_train,
            color='black',
            linewidth=0.8)

# test 데이터에 대한 예측을 파란색 점으로 시각화
plt.scatter(X_test,
            y_pred,
            color='blue',
            linewidth=1);

< 전체 Machine Learning Flow Chart >

ex) 데이터셋에서 living 데이터를 feature vector화시키고,
label인 price로 ML 알고리즘으로 선형회귀모델을 학습시킨다.
그 후 test data를 이용하여 4000인 값을 학습한 모델에 적용해 예상하는 label인 price를 얻는다.

3.1 선형회귀모델의 계수( Coefficients )

# 회귀계수(coefficient)
model.coef_

# 절편(intercept)
model.intercept_

Q . 상관계수는 선형회귀 전에 타겟과의 관계도가 강한 특성을 찾으려는지, 상관계수와 선형회귀의 관계는 어떻게 될까요?
A . 선형회귀의 설득력하고 관계가 있다고 말할 수 있습니다.
선형관계에 없어도 선형회귀선은 그릴 수 있는데,
상관관계가 낮으면 그 선형회귀선은 별로 쓸모가 없기 때문입니다.



👉 과정 한눈에 보기

profile
기록하지 않으면 기록되지 않는다.

0개의 댓글