Fascination
article thumbnail

Ch6. Similarity, Neighbors, and Clusters

- 숙명여자대학교 소프트웨어학부 데이터사이언스개론 - 박동철 교수님


# Similarity

- data science 방법과 해결에 기반이 됨

> 유사한 것들은 공통된 특징(common characteristics)을 가짐

- 예시

> 유사한 항목을 검사(retrieving): 회사 입장에서 최근에 좋다고 생각하는 고객과 유사한 고객을 찾음

> 유사한 item끼리 묶음 = clustering : 그룹의 특징을 보기 위해 비슷한 고객끼리 묶음

> 상품 추천: 추천을 제공하기 위해 비슷한 상품이나 고객을 찾음

> 비슷한 case로부터 추론: 비슷한 case를 제공함으로써 의사나 법률인을 도움

 

 

# Similarity and Distance

- objects 사이의 유사성을 측정하는 방법 → objects 사이의 거리(distance) 사용

- 기본 방법

> 각 object의 feature vector를 나타냄

> 두 vector사이의 Euclidean distance를 계산함

 

 

# Euclidean Distance

- Euclidean Distance: 일반적인 두 점 사이의 직선 거리

- 일반적인 Euclidean distance

> A = (a1, a2,..., an), B = (b1, b2,..., bn)가 n개의 feature vector를 가진다고 함

> Euclidean distance는 아래와 같음

 

# Other Distance Functions

① Euclidean distance

- 가장 폭넓게 사용되는 거리 개념. 직관적이고 계산하기 쉽다는 장점을 가짐

- L2 norm이라고도 불림

② Manhattan distance

- grid에서의 거리, 대각선으로 거리를 측정하지 못함

- grid에서 탐색할 수 있는 거리의 총합을 나타냄

> green: Euclidean distance

> red, blue, yellow: Manhattan distance

- L1 norm이라고도 불림

③ Jaccard distance

- 1에서 Jaccard similarity를 뺀 것

- 두 집합 사이의 유사도를 측정

- 교집합이 클수록 distance가 감소 → 유사도가 크다

- 0 <= Jaccard distance <= 1

④ Cosine distance

- 두 벡터가 이루는 각의 cosine을 측정

- 벡터의 크기를 무시하고자 할 때 특히 유용하게 사용됨

- 두 문서의 유사도를 측정하기 위해 text classification에서 사용됨

- 0 <= cosine distance <= 2

- cosine distance는 cos의 값 자체를 찾을 수도 있지만 그 cos이 나오는 각(두 벡터가 이루는 각)을 찾을 수도 있음

 

 

# Euclidean vs. Manhattan vs. Cosine distance

 


# Nearest-Neighbor Reasoning

- Nearest neighbors: 가장 유사한 instance. 즉, 가장 가까운 data point

- 우리는 많은 적용에 유용한 가장 가까운 instance를 활용할 수 있음

> 가장 좋은 기업 고객과 가장 유사한 회사를 찾음

> 가장 좋은 소매(오프라인) 고객과 가장 유사한 온라인 고객을 찾음

 

 

# Example: Whiskey Analytics

- 며칠 전 저녁에 싱글 몰트 스카치를 발견했다고 가정해 보자. 나에게 있어 위스키 "Bunnaabhaain"은 특이하고 매우 좋았던 위스키이다.

Q. 많은 single malt들 중에서, 우리는 어떻게 비슷한 다른 것들을 찾을 수 있을까?

- 데이터 과학 접근 방식을 취해보자

> 질문에 답하기에 적절한 데이터는 무엇인가?

> 각각의 몰트 위스키를 어떻게 설명할까? → feature vector로 사용

> Bunnahabhain의 가장 가까운 neighbor를 찾음

- 어떻게 단일 amlt scotch whiskey들을 feature vector들로 나타낼 수 있을까?

> Scotch 위스키의 맛에 대한 분석 책자를 활용하여 아래와 같은 숫자적인 특징들을 만들어 냄

> 다음과 같이 숫자적인 feature들을 가지고 모든 위스키의 feature vector들을 나타낼 수 있음

> feature vector들을 이용하여 Bunnahabin과 가장 가까운 다섯 개의 Scotches를 찾을 수 있었음

 

 

 

# Nearest Neighbors for Predictive Modeling

- 가장 가까운 neighbor에 대한 idea를 predictive modeling에 사용할 수 있음

- 일반적인 절차

> 우리가 예측하고자 하는 새로운 target 변수의 새로운 data가 주어짐

> 우리는 training data set으로부터 가장 유사한 data 몇 개를 고름

> 그 target value에 기반하여 새로운 data의 target value를 예측함

→ 다수결의 원칙을 따를지 평균적으로 정할지도 고민해야 함

 

 

# Issues with Nearest-Neighbor Methods

- Intelligibility (명료성)

> 어떻게 단일 instance를 결정했는지 묘사하는 것은 쉬움

 그들의 기여(contribution)에 따라 neighbor들의 집합이 의사 결정하는 것을 보여줌으로써 묘사 가능

= 단순히 가까운 이웃 몇 개를 골라 다수결의 원칙을 쓰던 평균을 내는 과정 자체를 보이는 것은 쉬움

> 어떤 지식이 data로부터 mine 되었는지를 설명하는 것은 어려움.

즉, 쉽게 말해 "왜 이 방법을 써?"라고 질문하면 할 말이 없는 것

→ 우리의 system이 그 data로부터 배우는 것은 무엇인지? 무엇에 기반해서 그런 결정을 만들 것인지?

→ 따라서 만약 모델의 명료성(intelligibility)과 정당성(justification)이 중요하면 k-NN방식은 사용 X

- 계산 효율

> training이 매우 빠름

→ 일반적으로 instance를 저장하는 것만을 포함하기 때문

→ model을 확장하는 데 있어 노력을 더 필요로 하지 않음 / 딱히 하는 게 없음

> prediction/classification이 매우 비쌈

→ database로부터 새로운 instance의 가장 가까운 neighbor들을 찾아야만 하기 때문

> 따라서, k-NN 방식은 아마 실제 적용에 있어서 비실용적일 수 있음

 


# Classification Using NN

- 우리는 어떻게 새로운 data의 class(label)을 예측할 수 있을까?

> neighbor들은 어떻게 새로운 instance가 분류되는 데에 사용될까?

- 일반적인 절차

> k개의 가까운 neighbor들을 계산 아래 그림에서는 k=3 임

> neighbor들의 target value를 구함 아래 그림에서는 +가 2개,  가 1개임

→ 다수결의 원칙에 의해서 새로운 instance를 +라고 분류

빨간 동그라미는 새로운 instance가 분류되는 곳임

 

 

# Ex) Credit Card Marketing Problem

- Problem: David가 신용카드 제안에 응답할지 안 할지를 아래 data에 기반하여 예측해보자

- Solution

> 3명의 가장 가까운 neighbor들을 찾음 → Rachael, John, Norah

> 다수결의 원칙에 따라 Yes라고 예측 / 위의 3명의 응답이 각각 No, Yes, Yes 임

 

 

# Probability Estimation Using NN

- 새로운 data의 분류 가능성은 어떻게 예측할 수 있을까?

- 일반적인 절차

> K개의 가까운 neighbor들을 계산 아래 그림에서는 k=3 임

> 각 class의 빈도율(frequency ratio)을 계산

+ :2,  : 1 → + : 2/3 (66.7%),  : 1/3 (33.3%)

 

 

# Regression Using NN

- 새로운 data의 값을 어떻게 측정할 수 있을까?

- 일반적인 절차

> k개의 가장 가까운 neighbor들을 계산 아래 예시에서 k=3 임

> neighbor들의 target 값의 평균을 계산

(35+50+40)/3 = 약 42 (평균)

                          40(중간값)

 

 

# Two Issues Of Using NN

① 얼마나 많은 neighbor들을 사용해야 하는가?

- Nearest neighbor 알고리즘은 k-NN을 참조함

> k는 neighbor의 수를 나타냄 ex. 3-NN

> 안타깝게도 k를 결정할 수 있는 간단한 답이 없음

- 일반 관측치

> 홀수는 다수결에서 동률을 깨는 데 유용 ex. k가 6일 때 3:3이 되면 어느 하나를 선택하기 힘듦

> k가 클수록 neighbor들 간에 추정치가 더 smooth 해짐

> k = n인 경우 모든 예측에 전체 dataset이 사용됨

 classification (분류): 예측은 항상 전체 dataset에서 가장 중요한 class임

 regression (회귀 분석): 예측은 항상 모든 목푯 값의 평균임

 class probability estimation (클래스 확률 추정): 예측은 항상 base rate 확률임

② 거리가 다른 neighbor들을 동등하게 대해야 하는가?

- 다수결의 원칙과 평균에서의 문제

> 각 neighbor들이 instacne와 얼마나 가까운지(거리 자체)는 무시함 → 뭐가 더 가까운지 (순위)만 중요

> 만약 아래와 같이 k=4라고 했을 때, 다음과 같은 결과가 나옴 (Yes, No, Yes, No)

- 2번째 이슈에 대한 해결 방법

> weighted voting or weighted average

> 유사성에 따라 각 neighbor의 기여도를 확장하는 것

- weighted voting

> weight는 각각의 유사도에 따라 비율적으로 할당됨

> 많은 경우에서, weight를 모두 더하면 1이 됨 w0 + w1 + w2 + w3... + wn = 1

- weighted average

> weight는 각각의 유사도에 따라 비율적으로 할당됨

> w0 + w1 + w2 + w 3 ... + wn = 1

③ Example (weighted voting, k=4)

> wieght를 할당할 때 1/distance² 를 사용 → Similarity weight / 거리가 클수록 weight가 작음

> weight의 합이 1과 같아지게 함 → contribution (기여도)

> Prediction

Yes: 0.336(John) + 0.312(Norah) = 0.648 (약 65%) → Yes라고 예측

No: 0.344(Rachel) + 0.005(Jefferson) = 0.349 (약 35%)

→ Jefferson의 거리가 크기 때문에 wegiht가 매우 작은 것을 확인 가능

 

 

# Geometric Interpretation of NN

- 명시적인 경계가 만들어지지 않지만, 각 point의 분류를 결정함으로써 암시적인 영역을 계산할 수 있음

- ex) boundaries created by a 1-NN classifier

> 1-NN은 자기 자신을 의미하므로 규칙이 없음

> 위의 예시는 overfitting이 일어남

> 경계가 불규칙하고 알아볼 수 있는 기하학적 모양이 아님 ex. 포물선, 직선...

> training instance 주변 경계가 매우 구체적 → 극단적이게 boundary 형성

> 경계가 특이점에 매우 예민함 → "negative island"(그림에서의 노란 원)

 

 

# Overfitting & Complexity Control of NN

① 1-NN

- training point가 주어지면, training point 자기 자신이 가장 가까운 neighbor로 검색되고, 자신을 예측하는 데 사용됨

- 1-NN은 매우 강함 (training data 그 자체를 기억하는 것)

> 1-NN의 distance는 0이므로 overfit이 일어날 가능성 ↑

> complexity 증가

> k=1인 경우

② k-NN

- K는 complexity parameter

> 극단적인 complex mode을 얻음

- 다른 극단적인 예시는 k=n 일 때임 / 이 경우에는 complexity ↓

> 우리는 모델의 복잡성을 허용하지 않음

- k를 선택하는 일반적인 방법

> 다양한 다른 k 값에 대해 nested cross-validation 시행

→ k가 높거나 낮다고 해서 나쁜 것은 없음. 모델에 따라 가장 알맞은 k값이 달라짐

> test set에 대해 최고의 성능을 주는 k를 선택

> 전체 training data로부터 k-NN 모델을 만듦

 

 

# Ex) 1-NN Classifier vs. 30-NN Classifier

 

- 1-NN classifier

> training examples에 대한 boundaries가 매우 구체적임

- 30-NN classifier

> boundaries가 훨씬 덜 들쭉날쭉 함 → smooth out, less jagged

- K-NN에서 k에 따라 규칙적으로 classification boundary가 형성되는 것은 아님

- linear model이나 tree-structed model에서 두 경우 모두 경계가 부드러운 곡선과 규칙적으로

기하학적인 영역이지 않음

 


# Some Technical Details : Heterogeneous Attributes

- Issue 1: categorical attribute를 어떻게 다루는가?

> categorical attribute를 숫자로 인코딩

ex) Sex: Male/Female → Sex: 0/1 (이진 값은 인코딩하기 쉬움)

> categorical 속성에 대한 값이 여러 개인 경우 어떻게 해야 하는가?

- Issue 2: 값이 큰 변수는 거리에 큰 영향을 미침

> 변수 범위를 측정하고 그에 따라 값을 척도화함

ex) 나이에서의 10만큼의 차이와 돈의 금액에서의 10만큼의 차이를 동일시하기 어렵기 때문

Age: [0, 100], Income: [0, 100,000] → Age: [0, 1], Income: [0, 1]

즉 100과 100,000을 똑같이 1로 취급하는 것은 문제가 있음

 


# Clustering

- 유사한 objects의 자연스러운 group 찾기

> 어느 target attribute도 지정하지 않음

> unsupervised segmentation이라고도 함

- 적용 사례 → 같은 그룹이면 유사도가 높을 것이라고 기대함

> 더 나은 서비스를 위해 다양한 고객 group을 찾음

> 더 나은 재고조사를 위해 유사한 제품 group을 찾음

- Basic idea: 다음과 같은 objects group을 찾음

> group 내에 object는 유사함

> 다른 group 안에 있는 objects는 유사하지 않음

- Supervised modeling vs. unsupervised modeling

> supervised: target 변수의 값을 알고 있는 데이터를 기반으로 지정된 target 변수의 값을

예측하는 패턴을 검색

> unsupervised: 데이터 집합에서 다른 종류의 규칙성을 찾음. target 변수에 초점을 맞추지 X

 

 

# Example : Whiskey Analytics Revisited

- 유사한 위스키의 cluster를 찾기 원함

> 취향에 따라 자연스러운 group을 이해

> 각 taste group에서 적어도 한 명 또는 두 명씩 구성원을 선택

- 두 가지 주요 clustering

> Hierarchical clustering

> k-mean clustering

 


# Hierarchical Clustering

- bottom-up 방식

- 일반적인 절차

> 각 instance를 자체 cluster로 시작

> 가장 유사한 cluster(distance ↓/nearest) 반복적으로 합쳐나감

> 이론적으로는 단일 cluster가 남을 때 멈춰야 하지만 실제 business에서는 cluster가 하나만 남는 건 X

 

 

# Distance Function Between Clusters

- 가장 유사한 clusters를 찾기 위해 clusters(data point를 포함) 사이에 distance function이 필요

> linkage function 이라고도 불림

- 전형적인 distance functions

> Min distance: 각 점에서 가장 가까운 점 사이의 Euclidean distance.

즉, 각각의 data point끼리의 가장 가까운 거리

> Centroid distance: clusters의 centroids 사이의 Euclidean distance

 Centroid: data point끼리의 평균

 

 

# Dendrogram

- clusters의 계층을 명시적으로 표시해줌

- dendrogram을 수평선으로 clip 하면 원하는 수의 cluster를 얻을 수 있고, 라인 위의 cluster는 무시함

> 선이 아래로 이동하면 군집 수가 증가

 

 

# Advantage of Hierarchical Clustering

- 데이터 분석을 통해 추출할 cluster 수를 결정하기 전 grouping 된 결과를 확인할 수 있음

> 데이터 유사성의 landscape임

- dendrogram은 원하는 수의 cluster를 제공하기 위해 임의의 지점에서 자를 수 있음

 

# Hierarchical Clustering of Scotch Whiskeys

- Dendrogram은 50개 위스키의 계층적 clustering을 보여줌

> Bunnahabhain과 그것의 neighbor들을 보여주는 작은 발췌문( small excerpt)

> 이 cluster는 지역과 깔끔하게 일치하지 않음

> 가장 인지도 높은 scotch를 선택하는 것 대신, 다른 cluster로부터 단일 malts를 stock으로 선택할 수 있음

> "가장 유사한" 다른 위스키를 추천하는 가이드를 만들 수 있음

 


# k-Means Clustering

- 가장 널리 사용되는 centroid 기반 clustering 알고리즘

- "k-means"

> k: 데이터에서 찾을 cluster의 수 (사용자에 의해 정해짐)

> means: 중심점 (cluster안에 point들의 평균)

 

 

# k-Means Algorithm

- outline

① 초기 cluster centers가 될 k를 선택 (일반적으로 랜덤)

② 각 point에 대하여 가장 가까운 center이 있는 cluster에 할당

③ 모든 point를 할당한 후, k cluster의 centroid를 업데이트함

④ 모든 점을 가장 가까운 cluster에 다시 할당함

 convergence 상태가 될 때까지 ③,④를 반복

 convergence: centroid도 더 이상 움직이지 않고 data point도 더 이상 움직이지 않는 상태

- ouput

> 결과 cluster의 중심

> 각 cluster에 속한 point

 

 

# (EX) k-Means Algorithm

 

 

 

 

 

> convergence가 될 때까지 update와 assign 반복

 

 

# (EX) A Little More Realistic Example

- k를 3개로 하는 90개의 data point에 대한 k-means

> 오른쪽 그래프의 3개 선은 16번의 반복 동안 centroid가 움직인 경로를 나타냄

 


# Picking Initial k Centroid

- k-mean의 한 번의 실행은 clustering에서 최고의 결과를 내지 못할 수 있음

> clustering의 결과는 초기 centroid 위치에 따라 달라지기 때문

- solution

> 다른 초기 랜덤 centroid를 가지고 k-means를 여러 번 실행함

 여러 번 시행할수록 복잡도가 커지고 계산량이 많아짐

> 결과 사이에서 최적의 clustering을 선택

 best clustering: clusters의 평균 지름을 최소화함

 

 

# Picking the Right Value of k

- 실제로 우리는 k의 최적의 값을 모름

- simple strategy

> k-means를 여러 번 실행하고 best clustering을 발생시키는 k를 선택

> ex) clustering의 평균 직경이 작고 clustering수가 많지 않은 cluster

> k값이 증가할수록 overfitting의 가능성 ↑

> 보통 k는 표에서 팍 줄다가 완만해지는 시점으로 선택됨

 


# EX) Clustering Business News Stories

- 각 문서를 단어의 집합으로 나타냄 ex) {"girls", "apple",,,}

- Jaccard distance를 이용하여 두 문서 사이의 거리를 측정

> 문장이 유사하다고 해서 그 의미도 유사한 것은 아님

 

 

# EX) Clustering whiskey

- 각각의 위스키를 (1, 0, 1, 1, 0)과 같이 feature vector로 나타냄

- Euclidean distance를 이용해 두 위스키간의 거리를 측정

 


# Summary

- The fundamental concept of similarity between data items occurs throughout data science

> Finding dimilar entities, predictive modeling, clustering entities

- Distance function

> Used to measure the similarity between two entities

> Euclidean, Manhattan, Jaccard, Cosine distance

- k-NN methods

> Retrieve a set of k nearest neighbors and use them to make a prediction

- Clustering

> Group similar objects into the same group (hierarchical, k-means)

 

profile

Fascination

@euna-319

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!