μ΄λ²μλ K-NNμ λ°νμ¬ νλ² μμλ³΄κ² μ΅λλ€.
K-NN μ΄λ?
K-NN(μ΅κ·Όμ μ΄μ μκ³ λ¦¬μ¦)μ λ°μ΄ν° λΆλ₯ λ° νκ· λ¬Έμ μμ λ리 μ¬μ©λλ λΉλͺ¨μμ κΈ°κ³ νμ΅ μκ³ λ¦¬μ¦μ λλ€.
μ λ ₯ λ°μ΄ν° ν¬μΈνΈμ ν΄λμ€λ₯Ό μμΈ‘νκΈ° μν΄ κ·Έ λ°μ΄ν° ν¬μΈνΈμ κ°μ₯ κ°κΉμ΄ Kκ°μ μ΄μμ κΈ°λ°μΌλ‘ κ²°μ μ λ΄λ¦¬λ μκ³ λ¦¬μ¦μ λλ€.
K-NNμ λΆλ₯(Classification)μ νκ·(Regression) λ¬Έμ λͺ¨λμ μ¬μ©λ μ μμ΅λλ€.
K-NNμ μ£Όμ νΉμ§
1. λΉλͺ¨μμ λ°©λ²
- K-NNμ λ°μ΄ν° λΆν¬μ λν΄ νΉμ ν κ°μ μ νμ§ μλ λΉλͺ¨μμ (non-parametric) λ°©λ²μ λλ€. μ΄λ λ°μ΄ν°μ ννλ λΆν¬μ λν΄ μ¬μ μ§μμ΄ μμ΄λ μ¬μ©ν μ μλ€λ κ²μ μλ―Έν©λλ€.
2. λ©λͺ¨λ¦¬ κΈ°λ°
- λͺ¨λΈμ νμ΅νλ κ³Όμ μ΄ μκ³ , μμΈ‘ μμ λͺ¨λ νμ΅ λ°μ΄ν°λ₯Ό λ©λͺ¨λ¦¬μ μ μ₯νκ³ μ¬μ©ν©λλ€. λ°λΌμ λͺ¨λΈμ μ μ₯νκΈ° μν λ©λͺ¨λ¦¬ μ¬μ©λμ΄ ν½λλ€.
3. λ¨μμ±
- K-NNμ ꡬνμ λ§€μ° κ°λ¨νμ§λ§, κ°λ ₯ν μ±λ₯μ λ°νν μ μμ΅λλ€. νΉν λ°μ΄ν°μ κ΅¬μ‘°κ° λͺ ννμ§ μμ λ μ μ©ν μ μμ΅λλ€.
K-NNμ κΈ°λ³Έ μ리
K-NNμ κΈ°λ³Έ μ리λ μ΄λ ν μ λ€μ΄ μμκΉμ? νλ² μμλ³΄κ² μ΅λλ€.
거리 μΈ‘μ
- μλ‘μ΄ λ°μ΄ν° ν¬μΈνΈμ κΈ°μ‘΄ λ°μ΄ν° ν¬μΈνΈλ€ μ¬μ΄μ 거리λ₯Ό κ³μ°ν©λλ€. μΌλ°μ μΌλ‘ μ ν΄λ¦¬λ κ±°λ¦¬κ° μ¬μ©λμ§λ§, 맨ν΄νΌ 거리, μ½μ¬μΈ μ μ¬λ λ± λ€λ₯Έ 거리 μ²λλ μ¬μ© κ°λ₯ν©λλ€.
- μ ν΄λ¦¬λ 거리 μμ: λ μ (x1,y1)μ (x2,y2) μ¬μ΄μ 거리λ μλμ μμμΌλ©λλ€. λ‘ κ³μ°
μ΄μ μ ν
- κ³μ°λ 거리 κ°μ κΈ°μ€μΌλ‘ κ°μ₯ κ°κΉμ΄ Kκ°μ μ΄μμ μ νν©λλ€.
κ²°μ
- λΆλ₯(Classification): Kκ°μ μ΄μ μ€ κ°μ₯ λ§μ΄ λ±μ₯ν ν΄λμ€λ₯Ό μλ‘μ΄ λ°μ΄ν° ν¬μΈνΈμ ν΄λμ€λ‘ μμΈ‘ν©λλ€.
- νκ·(Regression): Kκ°μ μ΄μμ νκ· κ°μ μλ‘μ΄ λ°μ΄ν° ν¬μΈνΈμ μμΈ‘ κ°μΌλ‘ μ¬μ©ν©λλ€.
Kκ°μ μ ν
κ·Έλ¬λ©΄ Kκ°μ μ΄λ»κ² μ ννλ κ±ΈκΉμ? κ΅μ°¨κ²μ¦ (Cross-Validation)μ μ¬μ©νμ¬ μ νν©λλ€.
κ΅μ°¨ κ²μ¦ (Cross-Validation):
- λ€μν K κ°μ μλνμ¬ μ΅μ μ Kλ₯Ό μ°Ύμ΅λλ€. κ΅μ°¨ κ²μ¦μ ν΅ν΄ λ°μ΄ν°μ μΌλΆλΆμ νλ ¨ λ°μ΄ν°λ‘, λλ¨Έμ§ λΆλΆμ κ²μ¦ λ°μ΄ν°λ‘ μ¬μ©ν΄ λͺ¨λΈμ μ±λ₯μ νκ°ν©λλ€.
K κ°μ΄ λͺ¨λΈμ λΌμΉλ μν₯?
- μμ K κ°: λͺ¨λΈμ΄ 볡μ‘ν΄μ Έ κ³Όλμ ν©(overfitting)μ΄ λ°μν μ μμ΅λλ€.
- ν° K κ°: λͺ¨λΈμ΄ λ¨μν΄μ Έ κ³Όμμ ν©(underfitting)μ΄ λ°μν μ μμ΅λλ€.
K-NN κ°μ λ°©λ²
λ¨μ½, K-NNμ μ¬μ©νλλ° κ²°κ³Όκ°μ΄ μ¬μ©μκ° μνμ§ μλ κ²°κ³Όκ° λμμλ μ΄λ»κ² ν΄μΌν κΉμ?
κ°μ λ°©λ²λ€μ λ°νμ¬ μ€λͺ μ ν΄λ³΄κ² μ΅λλ€.
κ°μ€μΉ λΆμ¬
- κ°κΉμ΄ μ΄μμκ² λ ν° κ°μ€μΉλ₯Ό λΆμ¬νμ¬ μμΈ‘μ μ νμ±μ λμΌ μ μμ΅λλ€.
μ°¨μ μΆμ
- κ³ μ°¨μ λ°μ΄ν°λ₯Ό μ μ°¨μμΌλ‘ λ³ννμ¬ κ³μ° 볡μ‘λλ₯Ό μ€μΌ μ μμ΅λλ€. μ£Όμ±λΆ λΆμ(PCA)κ³Ό κ°μ λ°©λ²μ΄ μ¬μ©λ μ μμ΅λλ€.
ν¨μ¨μ μΈ κ±°λ¦¬ κ³μ°
- KD νΈλ¦¬ λλ λ³Ό νΈλ¦¬μ κ°μ μλ£ κ΅¬μ‘°λ₯Ό μ¬μ©νμ¬ κ±°λ¦¬ κ³μ°μ ν¨μ¨μ μΌλ‘ ν μ μμ΅λλ€.
K-NNμ μ₯, λ¨μ
K-NNμ μ₯μ κ³Ό λ¨μ μ μ΄λ ν μ λ€μ΄ μμκΉμ?
K-NNμ μ₯μ
- λ¨μνκ³ μ΄ν΄νκΈ° μ¬μ:
- ꡬνκ³Ό μ΄ν΄κ° λ§€μ° κ°λ¨ν©λλ€.
- λͺ¨λΈ νμ΅ κ³Όμ μ΄ μμ:
- λ°μ΄ν°κ° μΆκ°λ λλ§λ€ λͺ¨λΈμ μ¬νμ΅ν νμκ° μμ΅λλ€.
- μλ‘μ΄ λ°μ΄ν°κ° μΆκ°λλ©΄ κ·Έ λ°μ΄ν°λ ν¬ν¨νμ¬ μμΈ‘μ μνν μ μμ΅λλ€.
- λ€μν λ¬Έμ μ μ μ© κ°λ₯:
- λΆλ₯μ νκ· λ¬Έμ λͺ¨λμ μ¬μ© κ°λ₯ν©λλ€.
K-NNμ λ¨μ
- κ³μ° λΉμ©μ΄ λμ:
- μμΈ‘ μμ λͺ¨λ λ°μ΄ν°λ₯Ό λΉκ΅ν΄μΌ νλ―λ‘, λ°μ΄ν°κ° λ§μ κ²½μ° κ³μ° λΉμ©μ΄ λμ΅λλ€.
- κ³΅κ° λ³΅μ‘λ:
- λͺ¨λ νμ΅ λ°μ΄ν°λ₯Ό μ μ₯ν΄μΌ νλ―λ‘, λ©λͺ¨λ¦¬ μ¬μ©λμ΄ ν½λλ€.
- K κ° μ νμ μ΄λ €μ:
- μ μ ν K κ°μ μ νν΄μΌλ§ μ’μ μ±λ₯μ μ»μ μ μμ΅λλ€.
- ν¬μν λ°μ΄ν°μμ μ±λ₯ μ ν:
- λ°μ΄ν°κ° ν¬μν κ²½μ° μ±λ₯μ΄ μ νλ κ°λ₯μ±μ΄ ν½λλ€. λ°μ΄ν°κ° μΆ©λΆν λ§μμΌ ν¨κ³Όμ μΌλ‘ μλν©λλ€.
K-NN Example Code
K-NN μμ μ½λλ₯Ό νλ² λ³΄κ² μ΅λλ€.
!kaggle datasets download -d mlg-ulb/creditcardfraud
!unzip creditcardfraud.zip
# K-νκ· ν΄λ¬μ€ν°λ§ μμ
# νμν λΌμ΄λΈλ¬λ¦¬ μν¬νΈ
import pandas as pd
import numpy as np
from sklearn.preprocessing import StandardScaler
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
# λ°μ΄ν°μ
λ‘λ
data = pd.read_csv('/content/creditcard.csv')
data.head()
# νμν νΉμ± μ ν
X = data.drop(['Time', 'Class'], axis=1)
# λ°μ΄ν° νμ€ν
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
# K-νκ· ν΄λ¬μ€ν°λ§ λͺ¨λΈ μμ± λ° νμ΅
kmeans = KMeans(n_clusters=2, random_state=42)
kmeans.fit(X_scaled)
# ν΄λ¬μ€ν°λ§ κ²°κ³Ό μκ°ν (PCAλ₯Ό μ¬μ©νμ¬ 2μ°¨μμΌλ‘ μΆμ)
from sklearn.decomposition import PCA
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X_scaled)
plt.figure(figsize=(10, 7))
plt.scatter(X_pca[:, 0], X_pca[:, 1], c=kmeans.labels_, cmap='viridis')
plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], s=300, c='red', marker='X')
plt.xlabel('PCA Component 1')
plt.ylabel('PCA Component 2')
plt.title('K-Means Clustering of Credit Card Fraud Dataset')
plt.show()
'π Data Engineering > π Machine Learning' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[ML] Support Vector Machine (SVM, μν¬νΈ λ²‘ν° λ¨Έμ ) (0) | 2024.08.11 |
---|---|
[ML] Logistic Regression (λ‘μ§μ€ν± νκ·) (0) | 2024.08.07 |
[ML] Supervised Learning (μ§λνμ΅) (0) | 2024.08.06 |
[ML] Modelμ νμ΅κ³Ό νκ° (0) | 2024.08.02 |
[ML] Naive Bayes (λμ΄λΈ λ² μ΄μ¦) (0) | 2024.08.01 |