오늘은 머신러닝의 가장 기본이 되는 선형회귀(Linear Regression)와 보스턴 집값 예측 실습을 진행하였다. 또한 오차 평가 방법(MAE, MSE, RMSE), 데이터 전처리, 다중선형회귀, 정규화(Regularization), 로지스틱 회귀(Logistic Regression)의 개념까지 학습하였다.
1. 머신러닝과 지도학습
머신러닝은 데이터를 이용하여 패턴을 학습하고 새로운 데이터에 대한 결과를 예측하는 기술이다.
- 회귀(Regression) : 연속적인 숫자 예측
- 분류(Classification) : 범주 예측
오늘 학습의 중심은 회귀 문제였으며, 대표적인 예제로 보스턴 집값 예측을 수행하였다.
2. 선형회귀(Linear Regression)
선형회귀는 데이터의 특성과 결과의 관계를 직선으로 표현하는 모델이다.
y = wx + b
- x : 입력 데이터(Feature)
- y : 예측값
- w : 가중치(기울기)
- b : 절편(Bias)
머신러닝의 목적은 데이터를 가장 잘 설명하는 최적의 직선을 찾는 것이다.
3. 선형회귀의 오차 평가
좋은 모델은 실제값과 예측값의 차이가 적은 모델이다. 따라서 오차(Error)를 계산하여 모델 성능을 평가한다.
3.1 MAE (Mean Absolute Error)
MAE = |실제값 - 예측값|의 평균
- 오차의 크기만 고려
- 해석이 직관적
3.2 MSE (Mean Squared Error)
MSE = (실제값 - 예측값)²의 평균
- 큰 오차에 큰 패널티 부여
- 이상치에 민감
3.3 RMSE (Root Mean Squared Error)
RMSE = √MSE
- MSE에 루트 적용
- 원래 데이터 단위와 동일
- 회귀 모델 평가 시 가장 많이 사용
4. 데이터 전처리
모델 학습 전 데이터의 품질을 높이기 위한 작업을 전처리라고 한다.
4.1 누락 데이터 처리
df.isnull().sum()
보스턴 집값 데이터는 누락 데이터가 존재하지 않았다.
4.2 Feature(X) 와 Label(y) 분리
X_data = df.drop(columns=['medv']) y_data = df['medv']
- X : 입력 데이터
- y : 정답 데이터
4.3 학습용 데이터와 평가용 데이터 분리
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test =
train_test_split(
X_data,
y_data,
test_size=0.25,
random_state=0
)
전체 데이터 506개를 학습용 379개, 평가용 127개로 분리하였다.
4.4 표준화(Standardization)
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_train_scaled =
scaler.fit_transform(X_train)
X_test_scaled =
scaler.transform(X_test)
각 컬럼의 평균을 0, 표준편차를 1로 맞추어 데이터 분포 차이를 제거한다.
5. 보스턴 집값 예측 실습
5.1 데이터 개요
- 데이터 수 : 506개
- Feature 수 : 13개
- 예측 대상 : MEDV(주택 가격)
5.2 주요 Feature
- CRIM : 범죄율
- ZN : 주거지역 비율
- RM : 평균 방 수
- TAX : 재산세
- PTRATIO : 학생/교사 비율
- LSTAT : 저소득층 비율
5.3 모델 생성
from sklearn.linear_model import LinearRegression lireg = LinearRegression()
5.4 모델 학습
lireg.fit(
X_train_scaled,
y_train
)
선형회귀 모델은 RMSE가 최소화되는 기울기(W)와 절편(b)를 찾는다.
5.5 학습 결과
13개의 Feature에 대한 가중치(coef_)와 1개의 절편(intercept_)이 생성되었다.
y = w1x1 + w2x2 + ... + w13x13 + b
특성이 13개이므로 기울기는 13개이지만, 절편은 모델 전체에 대해 하나만 존재한다.
5.6 예측 수행
pred_test =
lireg.predict(X_test_scaled)
평가용 데이터 127개에 대한 집값을 예측하였다.
5.7 모델 평가
from sklearn.metrics import
root_mean_squared_error
rmse_test =
root_mean_squared_error(
y_test,
pred_test
)
최종 RMSE 결과는 약 5.46이 나왔다. 즉 모델의 평균 예측 오차가 약 5.46 수준임을 의미한다.
6. 다중선형회귀
단순 선형회귀는 Feature가 1개지만, 다중선형회귀는 여러 개의 Feature를 사용한다.
y = w1x1 + w2x2 + w3x3 + ... + wpxp + b
보스턴 집값 예측이 대표적인 다중선형회귀 예제이다.
7. 정규화(Regularization)
모델이 과대적합(Overfitting) 되지 않도록 복잡도를 줄이는 방법이다.
Lasso
- L1 규제
- 불필요한 Feature 제거 가능
Ridge
- L2 규제
- 가중치 크기를 감소시킴
8. 로지스틱 회귀(Logistic Regression)
이름은 회귀지만 실제 목적은 분류이다.
z = wx + b
선형회귀의 결과값을 시그모이드 함수에 넣어 0~1 사이의 확률로 변환한다.
시그모이드 함수 특징
- S자 형태 곡선
- 출력값 범위 : 0 ~ 1
- 0.5를 기준으로 분류
예를 들어 타이타닉 데이터에서 생존 여부를 예측할 수 있다.
9. 오늘 배운 내용 정리
머신러닝
└ 지도학습
├ 회귀
│ ├ 선형회귀
│ ├ MAE
│ ├ MSE
│ ├ RMSE
│ └ 보스턴 집값 예측
│
└ 분류
├ 로지스틱회귀
├ 시그모이드
└ 결정경계
오늘은 머신러닝의 가장 기본이 되는 선형회귀를 학습하고, 실제 보스턴 집값 예측 프로젝트를 통해 데이터 전처리, 학습용/평가용 데이터 분리, 표준화, 모델 학습, 예측, RMSE 평가까지 전체 흐름을 경험하였다. 다음 단계에서는 SVM, 결정트리, 앙상블 모델 등을 통해 더 복잡한 머신러닝 모델을 학습할 예정이다.
``