AI is our friend and it has been friendly.
AI and humans have always been friendly.
중복을 제외한 전체 단어 중 겹치는 것의 개수가 자카드 유사도이므로, 5/10이라는 값을 얻게 된다.
마지막으로 그 외에 속하는 hamming distance가 있다.
Hamming Distance
주로 NLP에서 사용되며, (e.g. 문서 유사도 비교) 같은 길이를 가진 두 이진수를 비교할 때도 사용할 수 있다.
두 문자열 중 하나의 문자열에 대해 몇 개의 문자를 바꿔야 문자열이 서로 같아지는지, 즉 두 문자열에서 서로 다른 문자의 개수를 나타내는 개념이라고 볼 수 있다.
Decision Boundary in k-NN
k-NN에서 직접적으로 decision boundary를 계산해주지는 않지만, 다음과 같이 voronoi tessellation을 그려 추론해볼 수 있다.
k-NN Algorithm
k-NN 알고리즘의 작동 과정을 살펴보자.
Standardize, 즉 정규화를 반드시 해야 한다! (to have μ=0 and σ2=1)
ex) 만약 특정 feature의 수치는 1~10, 다른 feature의 수치는 1~100,000,000로 표현될 경우 정규화를 하지 않으면 범위가 큰 feature가 거리에 더 큰 영향을 주게 된다.
testing sample을 입력, 가장 가까운 k개의 train sample을 찾는다.
가장 많이 나온 class로 분류한다.
y^=argmaxyz∑i=1kI(yz=yi)
Indicator function! 같으면 1, 다르면 0
yz: testing data xz의 label
yi: k개의 가장 가까운 이웃의 label
How k impacts the decision boundary?
label이 0 또는 1인 Binary Classification 상황을 가정해 보자.
(y^(x)=k1∑i=1Nkyi이며, 여기서는 0.5로 가정) y^(x)=0.5라는 게 무슨 뜻이지
k=1: error rate는 0이지만, outlier 배제를 전혀 못하고 있다.
k=15: resilient to outliers, 즉 outlier에 굴하지 않는다...
k가 줄어들수록 물론 오판율은 매우 떨어지지만, accuracy가 증가한다고 무조건 좋은 모델로 평가할 수는 없다.
k의 값에 따라 어떤 변화가 있을까?
How k treats the noise point?
k를 증가시킬수록...
noise sample에 덜 민감해진다.
outlier를 handling하기 좋아진다.
위 그림에서는 표시된 파란 점을 noise로 판단할 수 있다. 만약 k=1인 경우 noise sample 근처에 testing sample이 떨어지면 blue로 잘못 분류되지만, k를 증가시킬수록 red로 맞게 분류될 가능성이 커진다.
이러한 점을 고려하여 적절한 k값을 찾는 것이 중요하다.
How to choose k
일반적으로 k가 클수록 testing performance가 높아지는 경향을 보인다.
하지만 k가 너무 크다면, 이웃이 아닌 sample까지 이웃으로 판단할 가능성이 커지므로 무조건 큰 k가 좋은 것은 아니다. (당연~)
보통 Cross Validation을 사용해 최적의 k를 찾으며, 추천되는 크기는 k<n이다. (n: training sample의 전체 개수)
k값에 따른 training set과 testing set의 error를 나타낸 그래프이다. k값이 증가할수록 testing set에 대한 error가 감소하고 있음을 확인할 수 있다.
k를 낮출수록...
testing 시간이 길어진다. (expensive)
1-NN을 찾기 위해서는 모든 training sample에 대한 거리를 계산해야 한다.