[AIVLE SCHOOL] 머신러닝(3) - 선형회귀

춤추는 머쉬룸·2024년 10월 15일

AIVLE SCHOOL 6기

목록 보기
47/80
post-thumbnail

10/15 6세션

A. 회귀모델

오차의 합이 최소가 되는 모델

  • model.coef_ : 회귀 계수 (= 가중치)
  • model.intercept_ : 편향

A-1. 단순회귀 (Simple Regression)

독립변수 하나가 종속변수에 영향을 미치는 선형 회귀

A-2. 다중회귀

독립변수 여러개가 종속변수에 영향을 미치는 선형 회귀


B. Linear Regression

  • 회귀 모델에서만 사용 가능
# 모델링
> from sklearn.linear_model import LinearRegression

> model = LinearRegression()
> model.fit(x_train, y_train)
> y_pred = model.predict(x_test)
# 회귀계수 확인
> print(model.coef_)
> print(model.intercept_)

[3.91046344]
-16.373364149357656
Distance=3.91×Speed16.37Distance = 3.91 \times Speed - 16.37
  • 위의 가중치와 편향이 가장 오차가 적게 하기 위해 그린 직선이다
# 회귀식 만들기
> a = model.coef_
> b = model.intercept_

> x_min = x_train.min()
> x_max = x_train.max()

> speed = [x_min, x_max]

> distance = a * speed + b
> print(distance)

[[-0.73151039]
 [81.38822188]]
  • x_min, x_max 는 시리즈(배열) 이므로 사칙연산 계산이 가능하다
# 회귀선 시각화

> plt.scatter(x_train, y_train, label='Train') # 학습했던 값
> plt.scatter(x_test, y_test, label='Test') # 예측 했어야할 값
> plt.scatter(x_test, y_pred, label='Predicted') # 예측한 값
> plt.plot(speed, distance, color='r') #회귀선
> plt.legend()
> plt.show()

  • 가중치가 크다고 해서 가장 중요한 변수는 아니다.
  • 변경 가능한 변수가 있고, 아닌 변수가 있다.
  • ex) 인구, 경쟁사 가격은 변경 불가능 / 광고비, 진열 정도는 변경 가능
  • 변수마다 값의 범위가 모두 다르다.

C. 최소제곱법

  • LinearRegression 함수는 최소제곱법으로 가중치와 편향을 계산한다
w=(XTX)1XTy\large w = (X^T X)^{-1} X^T y

0개의 댓글