단순 선형 회귀식(Simple Linear Regression)
정의
하나의 독립 변수(입력 변수, x)를 사용하여 종속 변수(출력 변수, y)를 예측하는 선형 회귀 모델
목적
주어진 데이터셋에서 최적의 회귀 계수( \(b_1\) )와 절편( \(b_0\) )을 찾아서, 새로운 x 값이 주어졌을 때 y 값을 예측하는 것
$$ \hat y = b_0 + b_1X_1 $$
- \( \hat y\) : Dependent variable(종속변수) → 예측하려는 값
- \(X_1\) : Independent variable(독립변수)
- \(b_0\) : Constant
- \(b_1\) : Slope coefficient(기울기)
최소 제곱법(Ordinary Least Squares)
- 최적의 \( b_0 \) 과 \( b_1 \) 을 결정하는 방법
- 잔차(residual)가 최소가 되도록 잡는 방법
- \( SUM(y_i - \hat{y_i})^2 \) 이 최소가 되도록 기울기와 상수 설정
- \( y_i \) 는 실제값, \( \hat{y_i} \) 는 예상값
Simple Linear Regression with Python
Importing the libraries
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
Importing the dataset
dataset = pd.read_csv('Salary_Data.csv')
X = dataset.iloc[:, :-1].values
y = dataset.iloc[:, -1].values
Tip) 종속 변수 X의 value는 이중배열로 오는 것을 알 수 있다. 이는 이후 새로운 X 값을 넣어 예측하고자 할 때 이중 배열 형태로 넣어줘야 한다는 것을 알 수 있다.
Splitting the dataset into the Training set and Test set
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
Tip) test_size 매개변수는 전체 dataset에서 얼마나 test set으로 사용할 지 설정하는 역할이고, random_state 매개변수는 데이터 분할 시 랜덤성을 제어하는 역할을 한다. 여기서는 test_size=0.2로 전체 데이터셋의 20퍼센트를 test set으로 사용하고, random_state=0으로 값을 고정해 매번 같은 방식으로 데이터를 섞고, 동일한 train/test set을 유지하도록 한다.
Training the Simple Linear Regression model on the Training set
from sklearn.linear_model import LinearRegression
regressor = LinearRegression()
regressor.fit(X_train, y_train)
주어진 training dataset을 이용해 훈련시켜(fit) 최적의 기울기와 상수를 찾아낸다.
Predicting the Test set results
y_pred = regressor.predict(X_test)
훈련된 모델을 통해 test dataset의 결과가 나온 걸 확인할 수 있다.
Visualising the Training set results
plt.scatter(X_train, y_train, color='red')
plt.plot(X_train, regressor.predict(X_train), color='blue')
plt.title('Salary vs Experience (Training set)')
plt.xlabel('Years of Experience')
plt.ylabel('Salary')
plt.show()
Tip) 빨간색 점산도는 training dataset에서의 X값과 실제 y값, 파란색 선은 training dataset을 통해 학습시킨 단순선형회귀 그래프(예측)이다.
Visualising the Test set results
plt.scatter(X_test, y_test, color='red')
plt.plot(X_test, y_pred, color='blue')
plt.title('Salary vs Experience (Test set)')
plt.xlabel('Years of Experience')
plt.ylabel('Salary')
plt.show()
Tip) 빨간색 점산도는 test dataset에서의 X값과 실제 y값, 파란색 선은 test dataset 을 통해 학습시킨 단순선형회귀 그래프(예측)이다. 이때 X_train이나 X_train으로 예측한 y의 값은 모두 파란색 simple linear regression 모델 위에 존재하기 때문에 plt.plot(X_train, regressor.predict(X_train), color='blue')과 plt.plot(X_test, y_pred, color='blue') 모두 같은 결과를 나타낸다.
한계
1. 선형 관계 가정 : 데이터가 선형 관계가 아닐 경우 부정확한 예측한다.
2. 이상치에 민감 : 데이터에 이상치가 많을 경우 회귀선이 영향을 많이 받는다.
3. 단일 변수만 사용 : 현실 세계에서는 한 문제에 대해 보통 여러 요인들이 작용한다.
'STUDY > Machine Learning' 카테고리의 다른 글
Ch03. 다중 선형 회귀(Multiple Linear Regression) (0) | 2025.02.07 |
---|---|
Ch01. 데이터 전처리(Data Preprocessing) (0) | 2025.01.31 |