선형회귀에 대한 페이지입니다.


y)에 영향을 많이 미칠수록 가중치(w) 값이 커짐오차 = 실제값 - 예측값
선형모델은 오차를 줄여나가는 방향으로 학습한다!
→ 그 오차로 ‘MSE’ 를 사용한다~
MSE = Mean Squared Error
MSE 가 최소가 되는 W와 b를 찾는 방법 중 하나
Reference: https://www.analyticsvidhya.com/blog/2020/10/how-does-the-gradient-descent-algorithm-work-in-machine-learning/
X축: 가중치
Y축: J(w) = cost function = 오차
비용 함수의 기울기가 낮은 쪽으로 이동하여 값을 최적화 시키는 방법
# 공부시간에 따른 성적 변화
# 1. 데이터
import pandas as pd
score = pd.DataFrame({'시간':[2,4,6,8], '성적':[20,40,60,80]}, index = ['민정','도한','윤선','영준'])
score
# 2. 선형모델 모델링
from sklearn.linear_model import LinearRegression # target이 성적 수치형이라서 회귀!
linear_model = LinearRegression()
# X, y 분리
X = score[['시간']]
y = score['성적']
# 학습
linear_model.fit(X,y)
# 예측
linear_model.predict([[7]])
# 예측직선과 실제값의 차이 -> loss
# 가설함수 h(x)
def h(w,x):
return w*x + 0 # 지금은 가중치만 볼거라서 b 에 임의로 0 넣기
# 비용힘수 -> mse -> 평균제곱오차
def loss(data, target, weight): # data: X, target: 실제값, weight: 가중치
# 예측값
y_pre = h(weight,data)
# 오차
mse = ((y_pre - target)**2).mean()
return mse
# 예측 w 값의 범위
w_arr = range(-10,31)
# mse 를 리스트에 저장
loss_list = [loss(score['시간'], score['성적'], w) for w in w_arr]
# 시각화
import matplotlib.pyplot as plt
plt.plot(w_arr, loss_list)
