-
머신러닝: K-nearest neighbors란? 왜 Linear classification을 사용할까머신러닝 2020. 9. 26. 12:56
우선 K-nearest neighbors에 대해서 먼저 알아보고 왜 Linear classification을 사용하는지 알아보자.
1. K-Nearest Neighbors
새로운 데이터를 받았을 때 가장 가까이 있는 것이 어떤 데이터인가를
구분하여 classification하는 방식이다.
위는 K 값에 따라 classification한 K-nearest neighbors 방법인데
query 데이터와 가장 유사한 기준의 갯수 K를 잡아서 어떤 클래스인지 확인한다.
쿼리 데이터와 가장 유사한 클래스를 찾기 위해 distance를 구하고
현재 disatnce를 구하는 두가지 방법이 사용된다.
(일반적으로 K값이 증가하면 이상치의 영향은 줄지만
분류자체를 못하게 될 수도 있다.)
<Distance>
1) L1 distance
두 매트릭스의 차이를 모두 더한다.
2) L2 distance
제곱근을 이용하여 모든 값을 더하는 방식(L1보다 더 많이 사용된다)
<Hyperparameter>
그렇다면 가장 좋은 K값과 distance 값은 어떻게 구할까?
이는 매우 문제 의존적이기 때문에, 항상 모든 경우를 살펴보아야 한다.
그래서 다음과 같이 Hyperparameter라는 것을 두어 이를 살펴본다.
- train : 내가 가지고 있는 dataset을 training한다.
- test : 내가 training한 데이터를 시험해본다.
- validation : train 데이터가 제대로 training 되고 있는지 확인한다. (training 도중에 확인한다)
또한 pixel distance 자체로 query data를 classification하기에는 무리가 있다.
차원이 높아지면 계산해야하는 가지수가 기하급수적으로 많아지기 때문
결론적으로 말하면 distance를 이용해서 classification을 하는 것은 좋은 방법이 아니다.
그래서 머신러닝을 이용한 linear classification을 사용한다.
2. Linear classification
어떤 이미지(query data)가 들어올 때, 직선을 기준으로 클래스를 나누는 것을 linear classification이라 한다.
이 때 다음과 같은 식을 통해서 내가 원하는 데이터를 찾을 수 있다.
예를 들어 32 x 32 x 3 = 3072 크기의 고양이 이미지가 있다고 해보자
나는 이 데이터가 고양이 사진인지 알고 싶다.
이 때 f(x, W)를 통해서 이 사진이 고양이사진인지 아니면 다른 사진인지 알 수 있다.
여기서 W는 내가 10종류의 클래스들을 트레이닝 시켜 만든 Weight 값이며
x는 고양이 사진의 array 갯수 3072를 일려로 나열한 값이다.
연산 후에는 10 x 1의 matrix가 나오는데 이중에서
가장 높은 값이 내가 찾고 있는 클래스임을 나타낸다.
아울러 상황에 따라서 추가연산 b가 붙기도 한다.
아래는 linear classification에 대한 이론적 설명
반응형'머신러닝' 카테고리의 다른 글
머신러닝: Image Feature를 이용한 Classification? Neural Network란? (2) 2020.10.07 머신러닝: 최적화(Optimization) 공부하기 (Gradient descent, SGD) (0) 2020.10.05 머신러닝: Loss function이란? (Multiclass SVM loss, Softmax Classifier ) (0) 2020.10.01 머신러닝: SVM이란? Linear classifiers, Dual form 공부하기! (0) 2020.09.14 머신러닝: 이미지 프로세싱(Image processing)이란? 필터링(Filtering) 이란?간단한 이론정리 (1) 2020.09.09