이지훈님의 블로그
Linear Classifier 본문
Linear Classifier
1. 개요
기계학습 분야에서 통계적 분류는 개체의 속성을 이용하여 그 개체가 속하는 그룹, 또는 클래스를 판별하는 것을 목표로 한다. 선형 분류에서는 주어진 속성의 선형결합을 바탕으로 분류를 수행한다. 개체의 속성은 피쳐 값이라고 부르기도 하는데, 보통 피쳐 벡터라는 벡터 형태로 제공한다. - 위키피디아 < 선형분류 >
<그림 : 선형분류>
선형분류는 두 개의 집합(혹은 그 이상)을 나눌 때 사용할 수 있다. 분류를 할 때 주로 Neural Network, SVM을 많이 사용하지만, 개인적인 생각이지만 가장 간단한 Linear Classifier을 먼저 이해하고 neuralnet이나 다른 머신러닝 알고리즘을 공부하는 것이 더 효율적인 것 같다.
2. 방법
0) 데이터
1번 데이터 x:2.9781 y:4.5651 label:사람
2번 데이터 x:3.0357 y:3.3165 label:사람
3번 데이터 x:1.5841 y:3.3575 label:동물
4번 데이터 x:2.0103 y:3.2039 label:동물
1) 로지스틱 함수를 이용하여 확률의 개념으로 바꾼다.
P는 Probability의 약자이다.
2) 전체 확률이 최대가 되도록 해보자.
사람일 때는 label을 1, 동물일때는 label을 -1로 지정해주면 전체 확률의 곱은 a, b, c가 알맞은 값일 수록 1에 가까울 것이다.
3) neagtive log likelihood로 바꿔준다.
argmax는 함수를 최대로 하는 값을 찾는다는 의미이다.
이제 양변에 -1(negative)을 곱해주어 최대값을 찾는문제를 최소값을 찾는 문제로 바꿔준다.
negative로 만들어주는 이유는 optimization problem이 전부 minimum을 구하기 때문에, 여기서도 negative로 바꿔줘야 arg max가 arg min으로 바뀐다고 한다. - 출처
마지막으로 수식은 아래와 같이 정리가 된다. L은 loss function(손실함수) 혹은 cost function(비용함수)이라고 한다.
비용이 최소화될수록 a,b,c를 잘 찾은 것이다. 이제 a, b, c를 찾아보자.
4) Gradient Descent(경사하강법)
Gradient Descent란 미분을 하여 함수의 기울기를 구하고 기울기의 반대방향으로 조금씩 이동하여 최소값에 이를 때 까지 이를 반복하는 것이다.
Gradient를 구하고, 학습률(LearningLate)를 조절하여 a, b, c를 구하면 된다.
주의사항은 Graident를 모두 구하고 a, b, c를 한번에 업데이트 해야한다.
코드와 학습데이터를 첨부하였으니 이해가 가지 않으면 참고하자.
'ML' 카테고리의 다른 글
Naive Bayesian Classification (python code) (0) | 2017.07.18 |
---|---|
Logistic Regression (0) | 2017.07.10 |
Decision Tree + C4.5알고리즘 (0) | 2017.07.03 |
Decision Tree + ID3알고리즘 (0) | 2017.07.01 |
Linear Regression (0) | 2017.04.20 |