Python에서 선형 회귀 구현
카탈로그
참고 문헌
선형 모형
선형 모델은 입력 특징량의 선형 함수를 사용하여 예측한다.
선형 모델 회귀
회귀 문제에 사용되는 선형 모델의 예측식은 다음과 같다.
$$y=w(0)\times x(0)+w(1)\times x(1)+w(2)\times x(2)+…+w(p)\times x(p)$$
여기에서 $x(0)부터 x(p)$까지 견본의 특징량을 표시합니다.또한 $w$와 $b$는 학습된 모델의 매개 변수이고 $y$는 모델에서 나온 예측입니다.
피쳐 양이 1인 경우 $w(0)$기울어지고 슬라이스가 $b$인 선입니다.
회귀 중의 선형 모델에서의 예측은 특징량이 1인 경우 직선이고 특징량이 2인 경우 평면이며 고차원인 경우 초평면이다.
회귀 모델을 사용하는 회귀에는 다양한 알고리즘이 존재한다.
그것들의 차이점은 두 가지가 있다.
선형 회귀(일반적으로 최소 2승법)
선형 회귀(또는 보통 최소 2승법ordinary least squares:OLS)는 가장 간단한 선형 회귀 방법이다.
선형 회귀는 훈련 데이터에서 $w$와 $b$를 확정하여 실제 회귀 목표 y와 균일한 오차(mean squared error:MSE)를 최소화합니다.
균일 오차
$$MSE =\frac{1}{n}\sum_{n=0}^{p} (y −\hat{y})^2$$
나는 오차를 상상할 수 없는 사람도 있다고 생각한다.그래서 오차를 보여 보았다.
선형 회귀에는 초변수가 없습니다.따라서 모델의 복잡성을 제어할 수 없습니다.
미리 준비하다
$ pip install scikit-learn
$ pip install mglearn
1차원 데이터에 대한 선형 회귀
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
import mglearn
X, y = mglearn.datasets.make_wave(n_samples=60)
print("(サンプル数, 特徴量数): ", X.shape)
# => (サンプル数, 特徴量数): (60, 1)
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42)
lr = LinearRegression().fit(X_train, y_train)
print(f"training dataに対しての精度: {lr.score(X_train, y_train):.2}")
print(f"test dataに対しての精度: {lr.score(X_test, y_test):.2}")
# => training dataに対しての精度: 0.67
# => test dataに対しての精度: 0.66
시찰:
견인 데이터와 테스트 데이터에 대해 정밀도는 매우 낮다.따라서 지나치게 적합하지 않은 것은 적합성이 부족할 가능성이 높다.
아래의'정밀도와 모델의 복잡성'그림으로 보면 스위트룸 왼쪽에 있는 것 같다.
선형 회귀는 1차원 데이터에 대해 모델의 복잡도가 낮고 의합 부족에 빠지기 쉽다.
고차원 데이터의 선형 회귀
X, y = mglearn.datasets.load_extended_boston()
print("(サンプル数, 特徴量数): ", X.shape)
# => (サンプル数, 特徴量数): (506, 104)
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)
lr = LinearRegression().fit(X_train, y_train)
print(f"training dataに対しての精度: {lr.score(X_train, y_train):.2}")
print(f"test dataに対しての精度: {lr.score(X_test, y_test):.2}")
# => training dataに対しての精度: 0.95
# => test dataに対しての精度: 0.61
시찰:
견인 데이터의 정밀도는 매우 좋지만 테스트 데이터의 정밀도는 좋지 않다.이것은 지나치게 일치하는 것일 가능성이 높다.
상술한'정밀도와 모델의 복잡성'의 그림으로 볼 때 스위트룸의 오른쪽에 왔죠.
따라서 범용성능(테스트 데이터에 대한 정밀도)을 높이기 위해서는 모델의 복잡도를 제어해야 한다.
그 방법에는 척추 회귀와 Lasso가 있다.
경품
다음 글에서 척추 회귀와 Lasso에 관한 글을 쓰려고 합니다. 이것은 모델의 복잡성을 제어하는 방법입니다.
Reference
이 문제에 관하여(Python에서 선형 회귀 구현), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kotamatsuoka/items/b2b291a822abbababb9a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)