지도 학습 & 비지도 학습
지도학습 : 정답(Label)과 문제(feature) 이 있는 데이터셋을 사용해 모델을 학습하는 방법입니다. 주어진 입력 데이터에 대해 올바른 출력을 예측할 수 있도록 모델을 훈련시킵니다.
종류
1. Classifier(분류)
2. Regreession(회귀)
비지도 학습 : 정답(Label)이 없는 데이터를 이용해 패턴이나 구조를 찾아내는 기계 학습 방식입니다. 즉, 입력 데이터에 대한 명확한 정답이 주어지지 않은 상태에서 데이터를 이해하고, 이를 바탕으로 그룹화하거나 특징을 추출합니다.
종류
1. 군집
2. 차원 축
저희는 저번에 Iris 품종 구별(Classifier)를 하였습니다. 이번에는 회귀 중 선형 회귀에 대해 알아 볼 것입니다.
우선 선형 그래프란 x축과 y축의 값으로 구성되는 일반적인 일직선인 그래프입니다.
수식으로는 ax+b가 제일 일반적인 수식입니다. 여기서 a(기울기), b(절편)이라 합니다. 그리고 그래프는 이 두 개의 계수를 통해 그래프가 그려집니다.
그렇다면 선형 회귀를 통해 a값과 b값을 알아낸다면 데이터가 없던 x값을 넣어도 y값을 예측할 수 있게 됩니다.
선형 회귀(Linear Regression)
기계 학습과 통계에서 y값과 기울기 값, 절편 값 사이의 관계를 직선 방정식을 이용해 모델링하는 방법입니다. 즉, 주어진 데이터에 가장 적합한 직선을 찾아서, 새로운 데이터에 대해 예측을 할 수 있게 합니다.
이제 python을 통해 선형 회귀로 모델링 하여 y값을 예측해보겠습니다.
1.
import pandas as pd
data={'x':[1., 2.,3.,4.,5.], 'y':[1.,3.,4.,6.,5.]}
df = pd.DataFrame(data)
df
먼저 x와 y 값을 만들었습니다.
2. 이제 scatter 그래프를 통해 어떻게 되어있는지 알아보겠습니다.
import matplotlib.pyplot as plt
plt.scatter(df['x'], df['y'])
plt.grid();
x축과 y축에 점이 찍힌 것이 확인 됩니다.
3. 이제 저희는 선형회귀 모델을 통해 기울기와 절편 값을 알아내겠습니다.
from sklearn.linear_model import LinearRegression
X= df[['x']]
y= df['y']
reg = LinearRegression() # 모델링
reg.fit(X, y) # 주어진 값들을 통해 훈련 -> 기울기, 절편을 알 수 있다.
네 이렇게 하여 저희는 모델링을 통해 기울기와 절편을 알아냈습니다.(매우 간단하죵?)
4. 이제 저희가 추출해낸 기울기와 절편을 통해 y값을 받아오겠습니다.
import numpy as np
from sklearn.metrics import mean_absolute_error
pred = reg.predict(X) # predict를 통해 X를 주고 y값을 받아오는 것
array([1.6, 2.7, 3.8, 4.9, 6. ])
위의 코드가 실행 한 결과입니다. 실제 y 값과는 조금씩은 다르나 그래도 값을 예측 해낸 것을 알 수 있습니다.
해당 값들은 무조건 일직선을 맞춰야 하기에 최소 제곱법(OLS: Ordinary Least Squares)을 사용해, 실제 데이터 점과 예측된 직선 사이의 오차(잔차)를 최소화하는 방식으로 회귀선을 계산합니다. 그래서 완전히 똑같은 값을 추출하지 못한 것입니다.
5. 이제 그래프로 확인 해보겠습니다.
plt.scatter(y, pred)
plt.plot([0, 6], [0, 6], 'r')
plt.xlabel('Actual')
plt.ylabel('Predict')
plt.title('Real VS Predict')
plt.grid()
plt.show()
해당 빨간 선이 저희가 예측해낸 선형 그래프입니다. 눈으로 보기에도 조금씩의 오차(잔차)가 있긴 하지만 해당 값들을 이용 해서 선형그래프를 만들 수 있었습니다. 그럼 다음 x값을 주었을 때 y값을 예측할 수 있을 것입니다.
그럼 이 모델링을 통해 주택 가격 예측이나, 매출 예측 같은 다양한 방법을 할 수도 있을 것 같습니다.
다음에는 선형 회귀를 이용한 보스턴 집 값 예측을 해보겠습니다.
이 글은 제로베이스 데이터 분석 취업 스쿨의 강의 자료 일부를 발췌하여 작성되었습니다.
'Data Analyst > ML' 카테고리의 다른 글
[Zero-base] Linear Regression(Wine 구별, Scaler) (0) | 2024.10.01 |
---|---|
[Zero-base]Linear Regression 2(보스턴 집 값 예측) (0) | 2024.09.30 |
[Zero-Base] Machine Learning - 1 (0) | 2024.09.27 |
ML - Matplotlib SubPlots (1) | 2024.09.16 |
ML - Matplotlib Figure Object (1) | 2024.09.10 |