빅데이터 서비스 교육/머신러닝

Linear Model

Manly 2022. 6. 29. 17:47
반응형

Linear Model

 

오차:실제 데이터와 모델이

  예측한 값의 차이

 

 

 

 

 

 

 

 

 

H(x) : 예측값        y : 실제값

예측값에서 실제값을 뺀 오차를

제곱 후 더하고 데이터 수로 나눈다

 

2 -2 가 나왔을때 0이 되지않게 하기위해 제곱하는데

절대값이아니라 제곱하는이유:

cost값을 크게 만들어 학습을 빠르게 시키기위해

 

 

 

Linear Model - Regression(Gradient descent algorithm) 경사하강법

Learnig rate

                                 Cost값(기울기)이 가장 낮은 지점을 찾는다

 

 

Learning rate가 클때는 크게 움직이며 완벽한 지점을 찾지는 못하고

 

작을때는 좀 더 정확한 지점을 찾지만 학습시간이 오래걸린다

 

 

 

 

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

 

data = pd.DataFrame([[2,20],
                     [4,40],
                     [8,80],
                     [9,90]] , index = ['태양', '민호', '채윤', '연이'],
                     columns = ['시간','성적'])
data

시간	성적
태양	2	20
민호	4	40
채윤	8	80
연이	9	90

1. 수학 공식을 이용한 해석적 모델

  • LinearRegression

from sklearn.linear_model import LinearRegression

l_model = LinearRegression()

l_model.fit(data[['시간']],data['성적'])

LinearRegression()

print(l_model.coef_)  # w, 가중치값
print(l_model.intercept_) # b, 절편(편향)값

[10.]
7.105427357601002e-15       # 0에 가깝다

2. 경사하강법

  • SGDRegressor (Stochastic Gradient Descent)

from sklearn.linear_model import SGDRegressor

sgd_model = SGDRegressor(max_iter=1000, # 가중치 업데이트 반복횟수(epoch)
                        eta0=0.01, # 학습률(learning rate)
                        verbose = 1    # 1: 학습과정을 확인할 수 있다.
                        )

 

sgd_model.fit(data[['시간']],data['성적'])

-- Epoch 1
Norm: 8.92, NNZs: 1, Bias: 1.101983, T: 4, Avg. loss: 926.737253
Total training time: 0.00 seconds.
-- Epoch 2
Norm: 9.60, NNZs: 1, Bias: 1.199155, T: 8, Avg. loss: 9.937324
Total training time: 0.00 seconds.
-- Epoch 3
Norm: 9.76, NNZs: 1, Bias: 1.214055, T: 12, Avg. loss: 0.899245
Total training time: 0.00 seconds.
-- Epoch 4
Norm: 9.81, NNZs: 1, Bias: 1.217313, T: 16, Avg. loss: 0.234643
Total training time: 0.00 seconds.
-- Epoch 5
Norm: 9.82, NNZs: 1, Bias: 1.213543, T: 20, Avg. loss: 0.163976
Total training time: 0.00 seconds.
-- Epoch 6
Norm: 9.84, NNZs: 1, Bias: 1.210979, T: 24, Avg. loss: 0.157413
Total training time: 0.00 seconds.
-- Epoch 7
Norm: 9.83, NNZs: 1, Bias: 1.206037, T: 28, Avg. loss: 0.152554
Total training time: 0.00 seconds.
..........................................
-- Epoch 37
Norm: 9.85, NNZs: 1, Bias: 1.113796, T: 148, Avg. loss: 0.127976

Total training time: 0.00 seconds.
-- Epoch 48
Norm: 9.85, NNZs: 1, Bias: 1.087605, T: 192, Avg. loss: 0.122182
Total training time: 0.00 seconds.

Norm: 9.85, NNZs: 1, Bias: 1.074026, T: 216, Avg. loss: 0.119024
Total training time: 0.01 seconds.
Convergence after 54 epochs took 0.01 seconds

Norm : 가중치,  loss : Cost값,  Bias : b값.

 

sgd_model.predict([[7]])

 
array([70.04650285])

print(sgd_model.coef_)  # w, 가중치값
print(sgd_model.intercept_) # b, 절편(편향)값

[9.85321092]
[1.07402638]

 

 

Lasso 규제는 값을 정하고 가중치에서 규제값을 빼주기 때문에 특정계수가 0이 될 수 있다.

 

 

Linear Model - Regression

 

Linear Model - Classification

 

 

 

 

sigmoid식으로 값이 들어가서

다음 식의 결과

0~1사이의 값으로 변환된다.

 

 

 

 

 

 

                      분류시에 나누는 선(예측값)이 데이터들과 떨어져 있는게 좋다 

 

반응형

'빅데이터 서비스 교육 > 머신러닝' 카테고리의 다른 글

앙상블 모델  (0) 2022.07.05
Linear Model 실습  (0) 2022.07.01
예제 타이타닉 생존자 예측분석  (0) 2022.06.24
Cross validation  (0) 2022.06.24
머신러닝 Decision Tree  (0) 2022.06.24