본문 바로가기

Industry 4.0/Machine Learning

선형회귀를 통한 머신 러닝의 개념 이해

728x90
반응형



거리에 따른 택시 요금 문제
머신러닝이란 무엇일까? 개념 이해를 돕기 위해서 선형 회귀 (Linear Regression)이라는
머신러닝 모델을 보자 먼저 선형 회귀 (Linear regression)이 무엇인지 부터 이해를 해야
하는데,예를 들어서 설명해보자, 택시 요금을 예로 들어보자,택시 요금은 물론 막히냐 마냐에
따라 편차가 있지만, 대부분 거리에 비례해서 요금이 부과된다. 거리별 요금을 그래프로
나타내보면 대략 다음과 같은 분포를 띄게 된다
원본 데이타의 거리를 x_data 그리고, 그 거리에서 측정되니 택시 요금을 y_origin 이라고 하자.

가설 (Hypothesis) 정의
거리와 요금이 서로 비례하기 때문에, 거리(x_data)와 요금(y_data)간의 상관 관계는 다음과 같이
일차 방정식과 형태의 그래프를 그리게 된다고 가정하자.
y_data = Wx_data + b
이 일차 방정식 형태로 대충 1차원 그래프를 그려보자 같은 형태로 아래와 같이 그래프를 그려봤다.

그래프를 그려보니 그래프의 각이 안맞는것 같다. 그래프의 각도와 높이를 보정해보자

그래프를 보정했지만 또 안 맞는 것 같다. 그렇다면 최적의 그래프의 각도 W와,
높이 B는 어떻게 찾아야 하는 것일까?



코스트(비용) 함수
우리가 구하고자 하는 그래프는
실제 값에서 그래프의 값까지 차이가 가장 작은 값을 구하고자 하는 것이다. 아래 그림을 보자,
아래와 같이 y_data=Wx_data +b와 같은 그래프를 그렸다고 하자.

원래 값에서 우리가 예측한 값의 차이는
(원래값과 계산된 값의 차이) = 측정값 - 그래프의 값
인데, 차이를 d라고 하자. 그리고 그래프에 의해서 계산된 값은 y_data라고 하면
택시 거리 x_data 에서 원래 측정된 값을 y_orgin라고 해서 수식으로 나타내면,
d = y_data - y_origin
이 된다. 이때 측정값은 여러개가 있기 때문에 n이라고 하면
n번째 측정한 택시비와 산식에 의해서 예측된 값의 차이는 dn이 된다.
dn = y_data_n - y_origin_n
즉 우리가 구하고자 하는 값은 dn의 합이 최소가 되는 W와 b의 값을 구하고자 하는 것이다.
다르게 설명하면 실제 측정한값과,
예측한 값의 차이가 최소가 되는 W와 b를 구하고자 하는 것이다.
dn은 위의 그래프에서 처럼 그래프 위에도 있을 수 있지만 (이경우 dn은 양수),
그래프 아래에도 있을 수 있기 때문에, (이경우 dn은 음수). 합을 구하면,

예측 선에서의 실측값 까지의 거리의 합이 되지 않기 때문에,
dn에 대한 절대값을 사용한다고 하자.
그리고 n이 측정에 따라 여러개가 될 수 있기 때문에, 평균을 사용하자.
( ABS(d1)+ABS(d2)+ABS(d3)+.....+ABS(dn)) ) / n
● ABS는 절대값
즉 우리가 구하고자 하는 W와 b는 위의 함수의 값이 최소가 되는 값을 구하면 된다.
이렇게 측정된 값에서 연산된 값간의 차이를 연산하는 함수를 비용
함수 또는 영어로 코스트 함수 (Cost function이라고 한다.
사람이 일일이 계산할 수 없이니 컴퓨터를 이용해서 W=0.1,0.2,0.3,.... b=0.1,0.2,0.3,.....
식으로 넣어보고 이 코스트 함수가 가장 최소화되는 W와 b의 값을 찾을 수 있다.

예측 선에서의 실측값 까지의 거리의 합이 되지 않기 때문에,
dn에 대한 절대값을 사용한다고 하자.
그리고 n이 측정에 따라 여러개가 될 수 있기 때문에, 평균을 사용하자.
( ABS(d1)+ABS(d2)+ABS(d3)+.....+ABS(dn)) ) / n
● ABS는 절대값
즉 우리가 구하고자 하는 W와 b는 위의 함수의 값이 최소가 되는 값을 구하면 된다.
이렇게 측정된 값에서 연산된 값간의 차이를 연산하는 함수를 비용
함수 또는 영어로 코스트 함수 (Cost function이라고 한다.
사람이 일일이 계산할 수 없이니 컴퓨터를 이용해서 W=0.1,0.2,0.3,.... b=0.1,0.2,0.3,.....
식으로 넣어보고 이 코스트 함수가 가장 최소화되는 W와 b의 값을 찾을 수 있다.
옵티마이져 (Optimizer)
코스트 함수의 최소값을 찾는 알고리즘을 옵티마이져(Optimizer)라고 하는데,
상황에 따라 여러 종류의 옵티마이져를 사용할 수 있다. 여기서는 경사 하강법 (Gradient
Descent) 라는 옵티마이져에 대해서 소개하도록 하겠다.
경사 하강법
그러면 W와 b를 구할때 W와 b를 어떤식으로 증가 또는 감소 시켜서 코스트
함수의 최소값을 가장 효율적으로 찾아낼 수 있을까? 위에서 언급한것 처럼 W를 0.0에서 부터 ).
0.1씩 증가시켜나가고 b도 같이 0.0에서 부터 1씩 증가 시켜 나갈까? 무한한
컴퓨팅 자원을 이용하면 되기는 하겠지만, 이렇게 무식하게 계산하지는 않는다.
코스트 함수를 최적화 시킬 수 있는 여러가지 방법이 있지만, Linear
regression의 경우에는 경사 하강법 (그레이언트 디센트 : Gradient
descent)라는 방식을 사용한다.
경사하강법에 대해서는 자세하게 알필요는 없고 ”대략 이런 개념을 사용하는 구나” 하는 정도만
알면 된다.
경사 하강법을 사용하기 위해서는 위의 코스트 함수를,측정값과 예측값의
절대값의 평균이 아니라 평균 제곱 오차라는 함수를 사용한다.
이 함수는 형식으로 정의되는데, 평균 제곱 오차 함수 (Mean square error function)이라고 한다.
Cost = Sum( (y_data_n​ - y_origin_n) ^ 2) / n
풀어서 설명하면, n
번째의 원래데이타(y_origin_n)와 예측 데이타(y_data_n)의 차이를 제곱(^2)해서, 이 값을 n으로
나눈 평균 값이다.
즉 이 Cost가 최소가 되는 W와 b값을 구하면 된다.

편의상 W하나만을 가지고 설명해보자. 위의 그래프를 W와 b에 대한 상관
그래프로 그려보면 다음과 같은 함수 형태가 된다.


이 그래프에서 W에 대한 적정값에 대한 예측을 시작하는 점을 위의 그림에서 파란 점이라고 하면
, 경사 하강법은 현재 W의 위치에 대해서,
경사가 아래로 되어 있는 부분으로 점을 움직이는 방법이다. 어느 방향으로 W를 움직이면 Cost
값이 작아지는지는 현재 W위치에서 비용 함수를 미분하면 된다.
(고등학교 수학이 기억이 나지 않을 수 있겠지만 미분의 개념은 그래프에서 그
점에 대한 기울기를 구하는 것이다.
미분의 개념은
https://www.youtube.com/watch?v=oZyvmtqLmLo&feature=youtu.be


10분내에 이해하는 미분 이라는 비디오를 보면 쉽게 이해할 수 있다. )


이렇게, 경사를 따라서 아래로 내려가다 보면 Cost 함수가 최소화가 되는 W 값을 찾을 수 있다.
이렇게 경사를 따라서 하강 (내려가면서) 최소값을 찾는다고 하여 경사 하강법이라고 한다.
학습
코스트 함수가 정의 되었으면 모델을 이 코스트 함수를 가지고 최적화 한다.
실제 데이타 x_data_n과 y_data_n을 넣어서 경사하강법에 의해서 코스트 함수가 최소가 되는 W
와 b를 구한다. 이 작업은 W값을 변화시키면서 반복적으로 x_data_n로 계산을 하여, 실제 측정 데이타와 가설에
의해서 예측된 결과값에 대한 차이를 찾아내고 최적의 W와 b값을 찾아낸다.
이 값을 찾아내서 적용한 가설이 바로 모델이다.
모델 평가(테스팅)
테스트 데이타를 7:3으로 나워서 7로 학습. 학습후에 3으로 테스트.
테스트를 한후 모델의 정확도를 측정하다.
예측
학습 과정에 의해서 최적의 W와 b를 찾았으면 이제, 이 값들을 이용해서 예측 해보자
학습에 의해서 찾아낸 W가 1600, b가 2000이라고 하면,
앞의 가설에서 정의한 함수는 Wx*b였기 때문에, 예측 함수는
y = Wx +b
거리에 따른 택시비 = W*(거리) + b
거리에 따른 택시비 = 1600 * (거리) + 2000
이 되고, 이를 학습된 모델​ 이라고 한다.
이제 예측을 수행해보자, 거리가 10km일 때 택시비는 얼마일까? 공식에 따라
택시비 = 1600 * 10km + 2000
으로, 18000원이 된다.

728x90
반응형

'Industry 4.0 > Machine Learning' 카테고리의 다른 글

Gaussian Mixture Model GMM  (0) 2020.07.08
머신 러닝의 순서  (0) 2020.07.02
Machine & Deep Learning  (0) 2020.06.07
MachineLearning, 개요  (0) 2020.06.07
Naïve bayes classifier  (0) 2020.06.01