티스토리 뷰

0장_비용함수

간단한 예측과 비용함수(cost function)

In [1]:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

10명의 수학점수 분포

In [2]:
data = np.random.randint(0,11,size=10)
print('점수 :', data)
print('분포 :', np.bincount(data))
점수 : [3 5 9 0 0 6 7 5 0 2]
분포 : [3 0 1 1 0 2 1 1 0 1]
In [7]:
data.mean()
Out[7]:
3.7
In [4]:
plt.plot(data, 'bo-')
plt.ylabel('score')
plt.xlabel('student #')
Out[4]:
Text(0.5,0,'student #')
In [6]:
plt.hist(data,bins=range(11))
plt.xlabel('score')
plt.ylabel('count')
Out[6]:
Text(0,0.5,'count')

평균 예측 모델

  • 가장 간단한 예측 모델을 만들어 보자.
  • 즉, 평균값으로 예측한다.
In [8]:
model = data.mean()
model
Out[8]:
3.7
In [10]:
plt.plot(data, 'bo-')
plt.hlines([model], 0, 10, linestyles='dotted', colors='green')
plt.xlabel('student #')
plt.ylabel('score')
Out[10]:
Text(0,0.5,'score')

비용함수 (cost function)

  • 비용함수는 예측한 값과 실제 값과의 차이를 수치화하는 방법(함수)이다.
  • 위의 결과에서 예측값인 평균값과 실제 데이터의 값들과의 차이로 계산하는 방법을 생각해 보자.
In [8]:
# 차이의 절대값 평균
cost_abs = np.abs(data - model).sum() / len(data)
cost_abs
Out[8]:
2.04
In [9]:
# 차이의 제곱 평균 (MSE)
cost_mse = np.power(data-model, 2).sum() / len(data)
cost_mse
Out[9]:
5.959999999999999
In [10]:
# 차이의 제곱 평균의 제곱근 (RMSE)
cost_rmse = np.sqrt(cost_mse)
cost_rmse
Out[10]:
2.4413111231467406
  • 예측모델과 비용함수를 정의하면 최적의 예측방법을 알아낼 수 있다.
  • 즉, 비용함수를 최소화하는 예측값을 찾아내면 된다.
  • 먼저 상수값 b 로 예측하는 모델을 만들자.
  • 그리고 비용함수로 costmse 를 사용하자. $$ cost = \sum{i=0}^{N-1} (x_i - b)^2 / N $$ $$ = b^2 -(\frac {2}{N} \sum x_i)b + \frac {1}{N}(\sum x_i^2)) $$ $$ \hat{b} = \frac{1}{N} \sum x_i $$
  • 결과적으로, 최적의 예측값은 평균값임을 알 수 있다.

머신러닝의 일반적인 기호법

  • 예측을 위해 사용되는 입력 데이터를 X 로 표기한다.
  • 예측의 결과 값을 y 로 표기한다.
  • 예측모델의 예측값을 $ \hat{y} $ (코드에서는 pred_y) 로 표기한다.
In [11]:
X = np.array(range(11)).reshape(-1,1) # 반드시 2차원 행렬 형태
y = data
pred_y = y.mean()

display(X, y, pred_y)
array([[ 0],
       [ 1],
       [ 2],
       [ 3],
       [ 4],
       [ 5],
       [ 6],
       [ 7],
       [ 8],
       [ 9],
       [10]])
array([ 8,  4,  5, 10,  7, 10,  2,  6,  8,  8])
6.8

'beginner > 파이썬 머신러닝 기초' 카테고리의 다른 글

지도학습 - k-NN분류  (0) 2019.02.25
지도학습개요  (0) 2019.02.25
머신러닝 기초 _ 거리  (0) 2019.02.22
머신러닝 기초_iris활용  (0) 2019.02.22
머신러닝과 파이썬  (0) 2019.02.21
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함