-
지도학습 | Ordinary Least Squares (최소제곱법)Machine Learning/ML with Python Library 2024. 3. 25. 20:31
Linear Regression 또는 Ordinary Least Squares(OLS, 최소제곱법)은 가장 간단하면서도 오래된 Regression Linear Algorithm이라고 한다. Linear Regression은 prediction과 training set target들의 평균제곱오차(Mean Squared Error)를 최소화하는 파라미터 w와 b를 찾는다. 여기서, 평균 제곱오차는 prediction과 target값의 차이를 제곱하고 더한 후에 샘플 개수로 나눈것이다.
평균제곱오차 공식(출처=freecodecamp) mglearn의 데이터 샘플을 이용해서 LinearRegression 모델을 만들어보자.
from sklearn.linear_model import LinearRegression from sklearn.model_selection import train_test_split X, Y = mglearn.datasets.make_wave(n_samples=60) X_train, X_test, Y_train, Y_test = train_test_split(X, Y, random_state=42) lr = LinearRegression().fit(X_train, Y_train) print("lr.coef: ", lr.coef_) print("lr.intercept_:", lr.intercept_)
위에서 찾아낸 coefficient(weight)과 bias(y-intercept)는 다음과 같다.
lr.coef: [0.39390555]
lr.intercept_: -0.031804343026759746여기서 coef는 리스트 형태로 되어있는걸 알 수 있다. intercept는 항상 한개의 float(실수)이지만, coefficient는 각 특성에 하나씩 대응되기 때문이다. wave 데이터셋은 특성이 하나뿐이어서 coefficient도 하나일 뿐이다. 테스트의 성능을 측정해보자.
print(lr.score(X_train, Y_train)) print(lr.score(X_test, Y_test))
0.6700890315075756
0.65933685968637R^2 값이 좋지는 않아 보인다. 훈련세트와 트레인 세트의 점수가 매우 비슷한데, 이는 과소적합인 상태로 보인다. 모델이 매우 단순하고 제한적이다. 반대로 말하면 과대적합을 걱정할 필요가 없다. 하지만, 모델을 복잡하게 만든다고 해서 모델의 성능이 무조건 좋다고 단정지을수는 없다. 예시를 들어보겠다.
506개의 샘플이 있는데, 특성이 104개가 있는 예시를 살펴보자.
X, Y = mglearn.datasets.load_extended_boston() X_train, X_test, Y_train, Y_test = train_test_split(X, Y, random_state=42) lr = LinearRegression().fit(X_train, Y_train) print(lr.score(X_train, Y_train)) print(lr.score(X_test, Y_test))
데이터 갯수도 많고, Feature 갯수도 많기 때문에 성능이 좋아지지 않을까? 아니었다. 아래 프린트된 스코어를 보자.
0.9448313975211592
0.77583783933516670.94였던 훈련 성능에 비해, 테스트 성능은 0.77로 많이 떨어졌다. 이 차이는 모델이 과대적합 되었다는 확실한 신호이고, 이를 제어할 수 있도록 Feature Engineering을 해주거나, 다른 모델을 사용해야할것으로 보인다.
Reference
https://www.freecodecamp.org/news/machine-learning-mean-squared-error-regression-line-c7dde9a26b93/
Machine learning: an introduction to mean squared error and regression lines
by Moshe Binieli Machine learning: an introduction to mean squared error and regression lines Introduction imageIntroduction This article will deal with the statistical method mean squared error, and I’ll describe the relationship of this method to the r
www.freecodecamp.org
https://colab.research.google.com/drive/1fzSiPpwbTUplw6G0PJSpGaVBWx5CEMIZ?usp=sharing
_02_supervised_machine_learning.ipynb
Colaboratory notebook
colab.research.google.com
https://www.yes24.com/Product/Goods/42806875
파이썬 라이브러리를 활용한 머신러닝 - 예스24
사이킷런 핵심 개발자에게 배우는 머신러닝 이론과 구현 현업에서 머신러닝을 연구하고 인공지능 서비스를 개발하기 위해 꼭 학위를 받을 필요는 없다. 사이킷런(scikit-learn)과 같은 훌륭한 머신
www.yes24.com
'Machine Learning > ML with Python Library' 카테고리의 다른 글
지도학습 | 라소 회귀 (Lasso Regression) (0) 2024.04.01 지도학습 | 리지 회귀 (Ridge Regression) (0) 2024.03.30 지도학습 | Linear Regression (선형회귀) (0) 2024.03.25 지도학습 | K-NN Regression (최근접 이웃 회귀) (1) 2024.03.24 지도학습 | 알고리즘 - KNN KNeighborsClassifier 분석 (1) 2024.02.07