일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- rnn
- 데이터 전처리
- LSTM
- 딥러닝
- 머신러닝
- 회귀
- reinforcement learning
- 활성화 함수
- 인공 신경망
- Machine Learning
- 차원 축소
- 지도 학습
- GRU
- 인공지능
- Deep learning
- 교차 검증
- python
- 최적화
- 손실 함수
- 과적합
- CNN
- 자연어 처리
- 정규화
- Q-Learning
- 강화학습
- 머신 러닝
- 강화 학습
- q-러닝
- 신경망
- AI
- Today
- Total
move84
거리 기반 학습 (Distance-based Learning) 완벽 가이드 본문
거리 기반 학습은 데이터 포인트 간의 거리를 이용하여 예측을 수행하는 머신러닝 방법입니다. 이 방법은 직관적이고 이해하기 쉬우며, 다양한 문제에 적용할 수 있습니다. 이 글에서는 거리 기반 학습의 기본 개념부터 다양한 알고리즘, 장단점, 그리고 실제 적용 예시까지 자세히 살펴보겠습니다.
📏 거리 기반 학습이란? (What is Distance-based Learning?)
거리 기반 학습은 데이터 포인트들 사이의 유사성을 측정하여 예측을 수행하는 방법입니다. 여기서 유사성은 주로 '거리'로 측정됩니다. 즉, 어떤 데이터 포인트가 다른 데이터 포인트들과 얼마나 가까운지를 계산하여, 그 거리에 따라 예측 값을 결정합니다. 예를 들어, 새로운 데이터 포인트가 주어졌을 때, 그 포인트에서 가장 가까운 기존 데이터 포인트들의 값을 평균내거나, 가장 가까운 데이터 포인트의 값으로 예측할 수 있습니다.
🧮 주요 거리 측정 방법 (Distance Metrics)
거리 기반 학습에서 가장 중요한 요소 중 하나는 어떤 거리 측정 방법을 사용하느냐입니다. 다양한 거리 측정 방법이 있으며, 각각의 방법은 데이터의 특성에 따라 적합성이 다릅니다. 몇 가지 주요 거리 측정 방법을 살펴보겠습니다.
유클리드 거리 (Euclidean Distance): 가장 일반적인 거리 측정 방법으로, 두 점 사이의 직선 거리를 계산합니다. 수식은 다음과 같습니다.
- 유클리드 거리 = sqrt(sum((x_i - y_i)^2))
맨해튼 거리 (Manhattan Distance): 각 축 방향으로의 거리 차이의 합을 계산합니다. 택시 거리라고도 불립니다.
- 맨해튼 거리 = sum(|x_i - y_i|)
민코프스키 거리 (Minkowski Distance): 유클리드 거리와 맨해튼 거리를 일반화한 거리 측정 방법입니다. 파라미터 p에 따라 유클리드 거리 (p=2) 또는 맨해튼 거리 (p=1)가 됩니다.
- 민코프스키 거리 = (sum(|x_i - y_i|^p))^(1/p)
코사인 유사도 (Cosine Similarity): 두 벡터 사이의 각도의 코사인 값을 이용하여 유사성을 측정합니다. 텍스트 데이터 분석에서 자주 사용됩니다.
- 코사인 유사도 = (A · B) / (||A|| ||B||)
해밍 거리 (Hamming Distance): 두 문자열에서 서로 다른 문자의 개수를 계산합니다. 주로 오류 정정 코드에서 사용됩니다.
📌 주요 거리 기반 학습 알고리즘 (Distance-based Learning Algorithms)
k-최근접 이웃 (k-Nearest Neighbors, KNN):
가장 대표적인 거리 기반 학습 알고리즘입니다. 새로운 데이터 포인트가 주어졌을 때, 가장 가까운 k개의 이웃을 찾고, 이들의 값을 이용하여 예측을 수행합니다. 분류 문제에서는 다수결 투표를 통해 클래스를 결정하고, 회귀 문제에서는 평균값을 사용합니다.from sklearn.neighbors import KNeighborsClassifier from sklearn.model_selection import train_test_split from sklearn.datasets import load_iris # 데이터 로드 iris = load_iris() X, y = iris.data, iris.target # 훈련 데이터와 테스트 데이터 분리 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42) # KNN 모델 생성 및 훈련 knn = KNeighborsClassifier(n_neighbors=3) knn.fit(X_train, y_train) # 예측 및 평가 accuracy = knn.score(X_test, y_test) print(f"Accuracy: {accuracy}")
KNN 알고리즘은 이해하기 쉽고 구현이 간단하지만, 데이터의 크기가 커질수록 계산 비용이 증가하고, 적절한 k 값을 선택하는 것이 중요합니다.
k-평균 클러스터링 (k-Means Clustering):
비지도 학습 알고리즘으로, 데이터 포인트를 k개의 클러스터로 묶습니다. 각 클러스터의 중심 (centroid)을 찾고, 각 데이터 포인트를 가장 가까운 중심에 할당합니다.from sklearn.cluster import KMeans import matplotlib.pyplot as plt from sklearn.datasets import make_blobs # 샘플 데이터 생성 X, y = make_blobs(n_samples=300, centers=4, cluster_std=0.60, random_state=0) # k-Means 모델 생성 및 훈련 kmeans = KMeans(n_clusters=4, random_state=0) kmeans.fit(X) y_kmeans = kmeans.predict(X) # 결과 시각화 plt.scatter(X[:, 0], X[:, 1], c=y_kmeans, s=50, cmap='viridis') centers = kmeans.cluster_centers_ plt.scatter(centers[:, 0], centers[:, 1], c='red', s=200, alpha=0.75) plt.show()
k-평균 클러스터링은 초기 중심 선택에 따라 결과가 달라질 수 있으며, 클러스터의 개수 k를 미리 지정해야 하는 단점이 있습니다.
** 장단점 (Pros and Cons)**
장점:
- 직관적이고 이해하기 쉬움
- 구현이 간단함
- 다양한 유형의 데이터에 적용 가능
단점:
- 데이터 크기가 커질수록 계산 비용이 증가
- 적절한 거리 측정 방법 및 파라미터 선택이 중요
- 차원의 저주 (Curse of Dimensionality) 문제 발생 가능
🔥 실제 적용 예시 (Real-world Applications)
추천 시스템 (Recommender Systems):
사용자 간의 유사성을 측정하여, 특정 사용자가 좋아할 만한 상품이나 콘텐츠를 추천합니다. 예를 들어, 영화 추천 시스템에서 특정 사용자와 비슷한 취향을 가진 다른 사용자들이 좋아한 영화를 추천할 수 있습니다.이상 감지 (Anomaly Detection):
정상 데이터와 거리가 먼 데이터를 이상치로 판단합니다. 예를 들어, 신용카드 사기 탐지에서 비정상적인 거래 패턴을 보이는 거래를 탐지할 수 있습니다.이미지 인식 (Image Recognition):
이미지 간의 유사성을 측정하여, 특정 이미지와 비슷한 이미지를 검색하거나 분류합니다. 예를 들어, 구글 이미지 검색에서 특정 이미지와 비슷한 이미지를 찾을 수 있습니다.
📝 핵심 용어 정리
- 거리 (Distance): 데이터 포인트 간의 유사성을 측정하는 척도.
- 유클리드 거리 (Euclidean Distance): 두 점 사이의 직선 거리.
- 맨해튼 거리 (Manhattan Distance): 각 축 방향으로의 거리 차이의 합.
- k-최근접 이웃 (k-Nearest Neighbors, KNN): 가장 가까운 k개의 이웃을 이용하여 예측을 수행하는 알고리즘.
- k-평균 클러스터링 (k-Means Clustering): 데이터 포인트를 k개의 클러스터로 묶는 비지도 학습 알고리즘.
- 코사인 유사도 (Cosine Similarity): 두 벡터 사이의 각도의 코사인 값을 이용하여 유사성을 측정.
'머신러닝' 카테고리의 다른 글
머신러닝에서의 차원 축소: 개념, 방법, 그리고 활용 (0) | 2025.04.14 |
---|---|
머신러닝::커널 기법(Kernel Methods) (0) | 2025.04.14 |
나이브 베이즈 알고리즘 이해 및 활용 (0) | 2025.04.14 |
머신러닝::베이지안 추론(Bayesian Inference) (0) | 2025.04.14 |
머신러닝에서의 엔트로피 개념 (0) | 2025.04.14 |