Channi Studies

Classification (Data Science), k-Nearest Neighbor Classifier (KNN) | 분류 본문

Data Science/개념과 용어

Classification (Data Science), k-Nearest Neighbor Classifier (KNN) | 분류

Chan Lee 2024. 11. 29. 13:46

There are two types of predictions in data science. 

Regressionnumerical data를 예측하는데 사용하고, 

Classification 은 cateogorical data를 예측하는데 사용합니다. 

 

예를 들어, 우리가 사용하는 이메일의 스팸 메일함이 있습니다.

메일의 텍스트 데이터를 기반으로 스팸인지 아닌지, Yes or No 에 해당하는 Cateogorical variable을 예측합니다. 

Input = Text / Output = Yes or No (Spam, Not Spam)

 

Classification에 대해서 더 자세히 알아보기 이전, 

간단하게 Machine Learning에 대해서 알아보겠습니다.

 

 

Machine Learning Algorithm

  • A mathematical model (수학 모델)
  • calculated based on sample data (샘플 데이터를 바탕으로 계산된)
    • called "training data" (해당 데이터는 '트레이닝 데이터' 라고 부름)
  • that makes predictions or decisions without being explicitly programmed to perform the task.

 

즉, machine learning algorithm은 

트레이닝 데이터를 바탕으로 계산된 수학적 모델로써, 결정이나 예측을 함에 있어서 필요한 과정을 모델 제작자가 명시적으로 입력하지 않은 특징이 있습니다.

우리가 사용하는 대부분의 프로그램 처럼 개발자가 일일히 모든 기능과 과정을 디자인 하지 않았다는 뜻입니다. 

 

Technically speaking, simple linear regression 또한 머신 러닝 알고리즘입니다. 

Classificaiton에 사용될 모델인 classifier 또한 machine learning algorithm입니다. 

 

 


Classifier

Classifier

여기서 Label 이란, classified category라고 생각하면 됩니다. (ex. Spam, Not Spam) 

 

우리는 모집단 (population)에서 sample data를 수집한 뒤, 이 데이터를 사용해서 classification을 하려고 합니다. 

이 때, 우리는 sample을 Training setTest set 으로 나눈 뒤, training set 만을 이용해서 모델을 트레이닝합니다.

 

이는 overfitting (과적합) 문제를 방지하기 위해서입니다. 

모든 모델을 트레이닝을 하면 할 수록 해당 트레이닝 데이터에 특화된 모델이 구현되기 마련입니다. 

다르게 보자면, bias towards the training set은 불가피합니다. 

 

하지만, 만약 training set 그 자체가 population을 충분히 대표하지 못한다면? 

population에 적용하고자 하는 최종 목표가 무색하게, 주어진 트레이닝 데이터에만 완벽한 무의미한 모델이 만들어집니다.

이를 방지하기 위해 우리는 sample data를 둘로 나눠서, 트레이닝 이후 모델을 평가하는 과정에서 test set을 사용합니다. 

 

추가적으로, sample data의 다양성 또한 매우 중요합니다. 

예를 들어 사진을 통해 강아지와 늑대를 구분하는 classifier를 구현하였는데, 

학습 데이터에서 모든 늑대 사진의 배경에는 눈이 있는 겨울의 이미지라고 해 보겠습니다.

그렇다면 해당 모델은 배경에 눈이 있는 겨울날의 강아지의 이미지를 매우 높은 확률로 늑대라고 예측할 것 입니다. 

이러한 문제 역시 데이터의 다양성을 통해 방지할 수 있겠습니다.

 


Nearest Neighbor Classifier & k-Nearest Neighbor Classifier (KNN)

가장 기초적인 Classifier의 종류로 Nearest Neighbor Classifier 가 있습니다. 

 

이는 주어진 data point와 다른 모든 data point 중에서 가장 가까운 데이터의 label을 가져오는 방식입니다. 

여기서 가깝다의 정의는, 피타고라스 정리에서 distance를 구하는 방법을 n차원으로 확장한 형식입니다.

(n차원에서도 피타고라스 정리가 성립한다의 증명은 다루지 않습니다.)

distance formula

 

하지만, 이렇게 하면 아무래도 가장 가까운 한개의 점 만을 확인하니, 정확도가 조금 떨어지겠죠? 

그래서 일반적으로 선호되는 방법으로 k-Nearest Neighbor Classifier 가 있습니다.

 

이는 거의 동일하지만, 개의 가장 가까운 점들을 확인하여 그 중 과반수인 label을 차용하는 방식입니다. 

(직관적으로, k를 짝수로 지정하면 label이 절반으로 나뉠 수 있기에 홀수를 선택합니다.) 

 

 

* Standardize If Necessary

우리의 데이터에서 모든 column (variable)은 같은 data range를 가지지 않습니다. 

 

Suppose in the data, one variable is the age and another variable is the annual income. 

우리가 나이, 연 수입, 신장, 등 여러가지 데이터를 기반으로 특정 인물의 정치적 성향을 예측하는 모델을 구현중이라고 해 보겠습니다.

 

나이는 극단적으로 차이나 봐야 100세이지만, 연수입의 범위는 매우 광범위하여 수십억에서 그 이상의 범위도 존재할 것 입니다. 

이런 경우, 모든 데이터를 standardize (z-score로 변환)하는 것이 바람직할 수 있습니다.