티스토리 뷰
멀티캠퍼스 AI과정/05 Machine Learning
Machine Learning 02 - Regression, loss function, 오차, 최소제곱법
jhk828 2020. 9. 21. 18:36<Machine Learning에서의 Regression>
- 지도 학습이란, 학습된 결과를 바탕으로 미래의 무엇을 예측하느냐에 따라 크게 2가지로 구분된다.
- 1) Regression
- 1-1) Linear Regression
- Training Data Set를 이용해서 학습된 결과를 만들고 연속적인 숫자값을 예측하는 것
- 1-2) Logistic Regression
- 1-1) Linear Regression
- 2) Classification
- 2-1) binary classification
- 2-2) multinomial classification
문제를 단순화시켜서 다음의 데이터를 이용해 보자
공부시간 (x), 시험시간 (t)를 이용해서 데이터를 표현해 보자.
이 데이터를 2차원 평면에 scatter (산점도)를 이용해서 표현해보자.
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
data = { '공부시간(x)' : [1,2,3,4,5,7,8,10,12,13,14,15,18,20,25,28,30],
'시험점수(t)' : [5,7,20,31,40,44,46,49,60,62,70,80,85,91,92,97,98]}
df = pd.DataFrame(data)
display(df.head())
plt.scatter(df['공부시간(x)'],df['시험점수(t)']) # 산점도를 구할 수 있어요!
plt.show()
이 데이터를 가장 잘 표현하는 직선을 그린다.
y = ax + b (a는 기울기 (slop), b는 절편)
-
초기의 기울기 a와 절편 b는 랜덤하게 결정되고, 그 이후 우리가 가지는 데이터 특성을 가장 잘 표현하기 위한 직선을 찾아가는 과정이 진행되게 된다.
-
그 과정을 학습 (learning)이라고 한다.
-
결국은 데이터를 가장 잘 표현하는 직선 (y)를 만들 수 있고,
-
이 직선을 predictive model이라고 한다. => linear regression
-
y = ax + b => 수학에서는 이렇게 표현한다. (a는 기울기 (slop), b는 절편)
-
y = Wx + b (W: weight, 가중치, b : bias, 바이어스)
-
W, b는 어떻게 결정되는가?
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
data = { '공부시간(x)' : [1,2,3,4,5,7,8,10,12,13,14,15,18,20,25,28,30],
'시험점수(t)' : [5,7,20,31,40,44,46,49,60,62,70,80,85,91,92,97,98]}
df = pd.DataFrame(data)
plt.scatter(df['공부시간(x)'],df['시험점수(t)']) # 산점도를 구할 수 있어요!
# 직선을 표현하는게...y = ax + b
plt.plot(df['공부시간(x)'],df['공부시간(x)']*2 + 3, color='g')
plt.plot(df['공부시간(x)'],df['공부시간(x)']*5 - 7, color='r')
plt.plot(df['공부시간(x)'],df['공부시간(x)']*1 + 8, color='b')
plt.plot(df['공부시간(x)'],df['공부시간(x)']*4 - 10, color='magenta')
plt.show()
오차와 손실함수
오차와 최소제곱법
# 오차
# 오차를 이해하기 위해 선 1개만 가지고 생각해 보자
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
data = { '공부시간(x)' : [1,2,3,4,5,7,8,10,12,13,14,15,18,20,25,28,30],
'시험점수(t)' : [5,7,20,31,40,44,46,49,60,62,70,80,85,91,92,97,98]}
df = pd.DataFrame(data)
plt.scatter(df['공부시간(x)'],df['시험점수(t)']) # 산점도를 구할 수 있어요!
plt.plot(df['공부시간(x)'],df['공부시간(x)']*5 - 7, color='r')
plt.show()
loss function (손실함수)와 그래프
# loss function의 모양을 확인하기 위해 graph를 그린다.
import numpy as np
import matplotlib.pyplot as plt
# training data set
x = np.arange(1,101)
t = np.arange(1,101)
# W
W = np.arange(-10,13)
loss = []
for tmp in W:
loss.append(np.power((t-tmp*x),2).mean())
plt.plot(W,loss)
plt.show()
'멀티캠퍼스 AI과정 > 05 Machine Learning' 카테고리의 다른 글
Machine Learning 04 - Simple Linear Regression_2 (0) | 2020.09.28 |
---|---|
Machine Learning 04 - Simple Linear Regression, Gradient Descent Algorithm, sklearn, Tukey Outlier, Z-Score (0) | 2020.09.23 |
Machine Learning 03 - Regression, loss function, 오차, Hypothesis (0) | 2020.09.22 |
Machine Learning 02 - 수치미분 (0) | 2020.09.21 |
Machine Learning 01 - Introduction (0) | 2020.09.21 |
댓글