Loading [MathJax]/jax/output/CommonHTML/jax.js

※ 본 내용은 Coursera, Machine Learning - Andrew Ng 강의, 강의자료를 바탕으로 작성하였습니다.

 

<Classification>

- Classification이란?

regression과 더불어 supervised learning의 대표적인 종류 중 하나로, 

개념적인 값으로 분류하는 것이다.

ex) 이메일이 스팸인지 아닌지, 종양이 양성인지 음성인지.

 

binary classificaiton과 multiclass에 대한 classification 모두 가능하다.

<Logistic Regression>

- hypothesis, 어떤 model을 사용할 것인지.

1. 선형모델? -> (x)

선형모델이 적합하지 않은 이유

빨간 수직선 좌측의 데이터만 보면, 언뜻 선형 모델만으로 설명이 가능할 것처럼 보인다.

y = ax+b와 같은 직선을 찾고, 그 값을 기준으로 0.5 이상이면 양성 그렇지 않으면 음성으로 분류가 가능할 것 같다.

 

그러나 빨간 수직선 우측처럼 새로운 자료가 추가된다면 직선이 변화할 것이고 분류에 적합하지 않은 것을 확인할 수 있다. 

 

2. sigmoid/logistic function

따라서 classification 모델 중 Logistic regression model은 sigmoid function(= logistic function)을 사용한다.

수식은 다음과 같다.

hΘ(x)=g(ΘTx)

g(z)=11+ez

즉, hΘ(x)=11+eΘTx

sigmoid function

그래프는 다음과 같이 그려지고, ΘTx의 값으로 classification이 가능하다는 것을 확인할 수 있다.

 

sigmoid function의 특징은 다음과 같다. 

- 0 <= h <= 1

- 값은 Y = 1로 분류될 확률을 의미한다. (또는 1- h 는 Y = 0으로 분류될 확률)

(해당 내용에 대한 자세한 수학적 내용이 필요하다면, 다음 사이트를 참고.

https://towardsdatascience.com/why-sigmoid-a-probabilistic-perspective-42751d82686 )

 

- Decision Boundary

Decision Boundary는 해당 경계를 기준으로 분류가 달라지는 경계를 의미하고,

hypothesis의 값이 0.5가 되는 점들의 집합이라고도 볼 수 있다.

 

* Decision Boundary는 parameter에(Θ) 의해 결정된다.

* Θ는 Cost Function을 기준으로 결정된다.

 

앞서 ΘTx의 값을 통해 분류가 가능했던 점을 생각하면서 위 식을 함께 보면

parameter에 의해 결정된다는 것을 알 수 있다.

선형회귀에서 polynomial regression을 통해 non-linear한 데이터를 모델링했던 것처럼 

Non-linear한 decsion boundary도 가능하다. 

 

- Cost Function

parameter를 결정할 때 cost function을 기준으로 결정하는 것은 regression과 동일하다.

그렇다면 Logistic Regression에서는 어떤 cost function을 사용해야 적절할까?

 

언뜻 생각했을 때 linear regression과 동일하게 사용해도 되지 않을까 싶지만,

결과적으로 말하자면 h(x)가 복잡한 형태이기 때문에 cost function이 non-convex하게 된다고 한다.

global minimum을 gradient discent 등으로 찾을 수 없다.

따라서 Cost로 다음과 같은 식을 이용한다.

로지스틱 회귀에서 cost의 정의

그래프의 형태는 y=1인 경우만 나와있지만, 반대의 경우도 쉽게 생각할 수 있다.

예측이 정답에 가까울 수록 cost가 작아지면서, 위와 같이 정의하면 cost function이 convex하게 된다고 한다.

(자세한 수학적 증명은 생략)

 

최종적으로 J(Θ) = Cost Function은 다음과 같이 정의된다.

cost function

안에 cost 식은 y가 0 또는 1인 점을 이용하여 하나의 식으로 표현되었다. 

 

- Gradient Discent

위 cost function은 convex하므로, 동일하게 gradient discent 알고리즘을 적용하여 최적의 parameter를 찾을 수 있다.

 

gradient descent 수식

알고리즘의 내용은 동일하고, cost function만 바뀌어 적용했을 때,

최종적으로 파라미터를 업데이트하는 수식은 위와 같다.

(미분식은 생략, 해보면 알 수 있음)

 

*형태는 linear regression에서와 동일하지만, h(x)가 다르기 때문에 같은 식은 아니다.

 

위 과정을 구현할 때도 vectorization을 사용하면 유용하다.

 

또한 마찬가지로 업데이트 정도를 결정할 때 feature를 곱한 후 sum 하는 식이 포함된다.

따라서 linear regression과 동일한 이유로 feature scaling을 해주면 좋다.

- 기타 알고리즘

그 외에도 최적 파라미터를 찾는 다른 알고리즘이 존재하지만, 자세히 다루기에는 많은 시간이 들기 때문에 라이브러리에 대해서만 다룸.

 

종류와 장단점

위의 장점들이 필요하면 해당 라이브러리를 찾아보고 사용하면 된다.

 

 

- Multi-Class classification

앞서 말했듯이 binary 분류가 아니더라도 가능하다. 

결론적으로 말하자면 binary 분류의 내용을 그대로 one-vs-all 형태로 적용하면 된다.

 

ex)  0, 1, 2를 구분하고자 할 때,

0과 0이 아닌 데이터.

1과 1이 아닌 데이터.

2와 2가 아닌 데이터.

로 구분하여 각 데이터 별로 binary classificaiton 모델을 적용하면 된다.

각 모델이 각 클래스일 확률을 나타내고, 최종적으로 가장 높은 확률의 클래스를 선택하도록 구현하면 된다.

 

* 각 클래스로 분류될 확률을 나타내므로, 모델들의 h(x)의 값의 합은 1이다.

* 모델별로 Θ가 달라지기 때문에 헷갈리지만, 확률 관점에서 생각해보면 합이 1이 되어야 하는 것을 알 수 있다. 

* 파라미터가 다른 각 모델 별로는 독립이기 때문에, 그 합이 1이 될 필요는 없다.

x가 1일 확률이라는 것은 모델 1의 판단이 그렇다는 것이지, 실제로 어떤 input X가 1일 확률을 의미하지는 않는다.

 

 

- 정리 

각 식에 대해 간단하게 정리.

(1) h(x)는 1로 분류될 확률을 의미.

(2) decision boudary는 파라미터에 의해 결정.

(3) 파라미터는 cost function에 의해 결정.

- gradient discent 추가 내용

다변수 선형회귀에서도 동일하게 gradient discent 알고리즘을 이용하여 cost function을 최소화하는 파라미터를 찾을 수 있다.

다변수 선형회귀에서의 gradient discent

선형회귀에 맞춰 gradient discent를 적용한 식은 위와 같다. hypothesis 대신 식을 풀어서 써본 다음 미분해보면 확인할 수 있다.

 

- Feature Scaling

각각의 feature들(x1, x2 , ..., x_n)이 동일한 scale을 갖도록 맞춰주는 방법이다.

이렇게 하면 gradient discent 알고리즘이 더 빠르게, 적은 iteration만으로 최적 parameter를 찾을 수 있다.

 

파라미터가 변경됨에 따라 cost function의 값이 변경되는 과정을 나타낸 그림이다.

왼쪽은 scale에 차이가 있는 경우, 오른 쪽은 거의 없는 경우이다. 

왼쪽의 경우 진동하며 더 많은 iteration이 필요한 것을 확인할 수 있다.

 

강의에서 이에 대해 수학적으로 자세히 풀지는 않았지만 직관적으로도 어느 정도 이해할 수 있다. 

우선은 feature scaling과 그 필요성에 대해 알아두는 것이 중요할 듯 하다.

 

* 일반적으로 -1 <= feature <= 1 정도로 통일하여 scaling하고, 근사적으로만 통일되어도 문제 없다고 한다.

 

Mean Normalization

i번째 feature들의 평균으로 빼주는 것. feature들의 평균이 대략적으로 0이 된다.

 

보통 feature scaling과 mean normalization을 함께 적용.

 

- Gradient Discent의 debugging

앞서 Gradient Discent를 적용할 때 learning rate(알파)를 지나치게 크게 설정하면 최적값을 찾는 것에 실패한다는 점을 확인했었다. 

 

그렇다면 알고리즘이 제대로 동작하고 있는지 확인하려면 어떻게 해야할까?

위 그림처럼 알고리즘을 반복하면서 cost function값의 변화를 확인하면 된다.

cost function이 계속하여 감소하지 않고, 증가하거나 진동한다면 learning rate가 크게 설정되어 동작하지 않는 경우이다.

 

* 2차 함수에서 learning rate가 클 때 파라미터가 발산하는 그래프를 떠올리며 굳이 cost function이 아니라, 파라미터의 변화만 보고도 판단할 수 있지 않을까 생각했지만, 앞서 feature scaling에서 사용된 그림을 보면 feature가 많을 때 파라미터는 커지거나 작아지는 과정이 교차될수도 있음.

 

- Learning Rate 설정

Learning Rate를 설정하는 것은 debugging 과정을 그대로 이용하면 된다.

(1) 너무 클 경우 : debugging과정에서 제대로 동작하지 않는 것을 알 수 있다. 줄이면 된다.

(2) 너무 작을 경우 : iteration이 지나치게 많아지게 된다. 키우면 된다.

 

보통 3배씩 키워가거나 줄여가면서 변화시킨다고 한다.

또한 동작하는 가장 큰 rate를 찾은 후 그것보다 약간 작은 값을 최종적으로 사용한다고 한다.

- Feature의 설정과 polynomial regression

feature를 재정의하는 것도 하나의 좋은 방법이다.

 

예를 들어, 가로 넓이와 세로 넓이를 둘 다 feature로 사용하는 것보다 둘을 곱하여 면적이라는 새로운 feature로 정의하여 사용해도 문제가 없다. 

 

또한 polynomial regression이라는 방법도 있다. 

한 feature의 제곱이나 세제곱, 루트 등을 새로운 feature로 사용하는 방법이다. 

이러한 방법을 통해 위와 같이 선형에 적합하지 않은 데이터를 설명할 수 있다.

 

* polynomail regression도 '선형' 회귀이다. 모델 입장에서는 그냥 feature가 3개인 것이다. 

위 그래프를 보면서 어떻게 선형 모델인지 헷갈렸지만, 관점? 또는 차원의 문제로 이해할 수 있을 것 같다.

(https://stats.stackexchange.com/questions/92065/why-is-polynomial-regression-considered-a-special-case-of-multiple-linear-regres)

 

 

- Normal Equation

Normal Equation은 선형 회귀의 최적 파라미터를 찾는 또 다른 방법이다.

단 하나의 계산으로 해결되어 간단하지만 gradient discent와 각각 장단점이 있다. ㅇ

 

기본적으로 선형 회귀에서 cost function은 convex 하기 때문에 각 파라미터에 대해 편미분하여 0이 되는 값을 찾으면 최적 parameter를 찾을 수 있다. 

 

일일히 편미분하지 않고 그러한 값을 찾는 수식이 아래의 normal Equation이다.

X의 행과 열이 어떻게 구성되는지 주의해야 한다. (각 행이 1개의 데이터 셋으로 이뤄지고, 1이 맨 앞에 추가된다)

n은 feature의 수, m의 데이터셋의 수라고 할 때 X는 m x (n+1) 행렬이 된다. 

이때 X의 전치행렬과 X를 곱한 행렬을 A라고 하면 A는 (n+1) x (n+1) 의 정방 행렬이 된다.

 

어떤 행렬의 역행렬을 계산하는 것은 대략 O(n^3)의 시간 복잡도를 갖고, 따라서 feature가 많아질수록 이 과정에서 많은 시간이 소모될 수 있다.

*n >= 100,000 정도부터는 gradient discent를 고려하는 것이 좋고, 그 이상부터는 사실상 gradient discent를 사용한다고 한다.

 

결과적으로 (n+1) x 1의 결과가 나온다. n개의 feature에 대한 parameter가 계산된다. n+1인 이유는 intercept도 계산되기 때문이다.

 

자세한 수학적 증명은 우선 생략하였고, 또한 역행렬이 존재하지 않는 경우도 pseudo inverse 함수를 사용하면 해결이 가능하다 정도로 이해하고 넘어가면 될 것 같다. 

 

 

 

두 알고리즘의 장단점 비교

 

1. 머신러닝이란?

- 머신러닝은 무엇을 의미하는가

강의에서 설명한 머신러닝을 정의하는 2가지 개념

(1) Arthur Samuel(1959) - 컴퓨터가 explicit하게 프로그램되지 않고 학습하도록 만드는 학문

(2) Tom Mitchell(1998) - 컴퓨터 프로그램이 경험 E로부터 어떤 task T를 하도록 배워서 T를 하는 성능 P가 좋아지는 과정을 컴퓨터가 'learn' 한다고 표현한다.

 

강의에서는 (1)은 조금 old하다고 표현했지만, 개인적으로는 (1)이 머신러닝이 필요한 이유라고 더 와닿았다.

수많은 데이터를 처리할 때 일일히 if문 등으로 처리하는 것(explicitly programmed)은 한계가 있기 때문에 머신러닝이 필요한 것이라고 생각한다. 

 

- 머신러닝의 대표적인 종류

supervised learning과 unsupervised learning 2가지 종류가 대표적이며, 그 외에 reinforce learning등도 존재한다.

 

(1) supervised learning

모델을 학습시킬 때 right answer을 제공하여 학습시키는 방식.

다시 supervised learning은 regression과 classification 2가지 종류로 나눌 수 있다.

 

*regression?

: 연속적인 값을 예측하는 것.

ex) 실제 거래되었던 집값(right answer)을 보고 학습한 후,

새로운 집이 주어졌을 때 그 특징을 보고 집값을 예측하기.

 

*classification?

: 분류하는 것.

 

ex) 종양의 상태를 보고 악성인지 양성인지 판단하는 모델.

(2개 이상의 클래스로 분류할 수도 있다)

 

(2) unsupervised learning

모델 학습에 사용되는 데이터가 labeled 되어 있지 않은 상태로 학습하는 것.

모델이 데이터에서 structure를 찾고, 그에 따라 데이터를 분류함.

 

ex) 뉴스 기사들을 비슷한 카테고리끼리 묶음, Cockatil party problem

 

* Cocktail party problem : 칵테일 파티와 같이 다양한 음성, 소리가 뒤섞인 장소에서 하나의 음성만을 추출해내는 문제.

 

2. Model and Cost Function

- Univariate Linear Regression

hΘ(x)=Θ0+Θ1x

 

단변수 선형 회귀 모델, 한가지의 feature 만으로 이루어진 선형회귀 모델.
Θ를 parameter라고 함.

- Cost Function

선형회귀 모델에서 cost fuction J는 다음과 같음. 

J=12mmi=1(hΘ(xi)yi)2

(m : 데이터 셋의 수, h : hypothesis)

식에서 확인할 수 있듯이 예측값과 실제값의 차의 제곱을 합하는 것이므로 squared error function이라고도 함.

직관적으로 위 데이터를 잘 설명할 수록 위 값이 작아질 것이라는 것을 알 수 있음.

*2로 나눈 이유는 gradient dicsent 를 적용할 때 미분 후 식을 간단하게 하기 위해서. 수식에 의미에는 영향 x

 

-> 주어진 데이터를 가장 잘 설명하는 모델을 찾는 것 =  cost function을 최소화 하는 모델을 찾는 것 

(물론 cost function을 다르게 정의할 수도 있지만 선형 회귀 모델에서는 위와 같이 정의함)

 

- Gradient Discent

Gradient Discent는 local minimum을 찾는 알고리즘으로, 일반적인 최적화 알고리즘이다.

 

선형 회귀 모델의 최적 파라미터(Θ)를 계산하는 방법으로 적용가능(다른 방법도 존재)

-> 선형 회귀 모델의 cost function은 convex하다. 따라서 global minimum만 존재하고, gradient discent 기법으로 최적 파라미터를 찾을 수 있다.

 

univariate 모델에서 알고리즘 적용법 : 

Θj:=ΘjαΘjJ(Θ0,Θ1)(forj=0,1)

 

Θ 값을 동시에 업데이트해야 된다는 것에 주의해야 한다.

 

α는 learning parameter이고, 아래 그림과 같이 영향을 끼친다.

 

 

 

learning parameter의 영향

 

+ Recent posts