Introducció
L'algoritme dels K-Veïns més propers (K-Nearest Neighbors, K-NN) és un dels algoritmes més senzills i intuïtius en el camp del Machine Learning. És un mètode de classificació supervisat que es basa en la idea que els objectes similars es troben a prop l'un de l'altre.
Conceptes Clau
- K: El nombre de veïns més propers que es consideren per fer la classificació.
- Distància: La mesura de similitud entre els punts de dades. Les distàncies més comunes són la distància euclidiana, la distància Manhattan i la distància de Minkowski.
- Classificació: Assignació d'una etiqueta a un punt de dades basant-se en les etiquetes dels seus veïns més propers.
Funcionament de l'Algoritme
- Selecció del valor de K: Determinar el nombre de veïns més propers (K) que es consideraran.
- Càlcul de la distància: Mesurar la distància entre el punt de dades a classificar i tots els punts de dades del conjunt d'entrenament.
- Selecció dels K veïns més propers: Identificar els K punts de dades més propers al punt de dades a classificar.
- Classificació: Assignar l'etiqueta més comuna entre els K veïns més propers al punt de dades a classificar.
Exemple Pràctic
Pas 1: Importar les Llibreries Necessàries
import numpy as np import pandas as pd from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler from sklearn.neighbors import KNeighborsClassifier from sklearn.metrics import accuracy_score, confusion_matrix
Pas 2: Carregar el Conjunt de Dades
# Suposem que tenim un conjunt de dades en un fitxer CSV
data = pd.read_csv('data.csv')
# Separar les característiques (features) i les etiquetes (labels)
X = data.drop('label', axis=1)
y = data['label']Pas 3: Dividir el Conjunt de Dades en Entrenament i Test
Pas 4: Normalitzar les Dades
Pas 5: Entrenar el Model K-NN
# Seleccionar el valor de K k = 5 knn = KNeighborsClassifier(n_neighbors=k) # Entrenar el model knn.fit(X_train, y_train)
Pas 6: Fer Prediccions
Pas 7: Avaluar el Model
accuracy = accuracy_score(y_test, y_pred)
conf_matrix = confusion_matrix(y_test, y_pred)
print(f'Accuracy: {accuracy}')
print('Confusion Matrix:')
print(conf_matrix)Exercici Pràctic
Enunciat
Utilitza el conjunt de dades Iris per entrenar un model K-NN que classifiqui les flors en tres categories: setosa, versicolor i virginica. Segueix els passos descrits anteriorment per carregar les dades, dividir-les en entrenament i test, normalitzar-les, entrenar el model i avaluar-lo.
Solució
from sklearn.datasets import load_iris
# Carregar el conjunt de dades Iris
iris = load_iris()
X = iris.data
y = iris.target
# Dividir el conjunt de dades en entrenament i test
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Normalitzar les dades
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
# Entrenar el model K-NN
k = 3
knn = KNeighborsClassifier(n_neighbors=k)
knn.fit(X_train, y_train)
# Fer prediccions
y_pred = knn.predict(X_test)
# Avaluar el model
accuracy = accuracy_score(y_test, y_pred)
conf_matrix = confusion_matrix(y_test, y_pred)
print(f'Accuracy: {accuracy}')
print('Confusion Matrix:')
print(conf_matrix)Errors Comuns i Consells
- Selecció del valor de K: Un valor de K massa petit pot fer que el model sigui sensible al soroll, mentre que un valor de K massa gran pot diluir la influència dels veïns més propers. Prova diferents valors de K i utilitza la validació creuada per trobar el valor òptim.
- Normalització de les dades: És crucial normalitzar les dades abans d'aplicar K-NN, ja que les distàncies poden estar distorsionades si les característiques tenen escales diferents.
- Sobreesforç computacional: K-NN pot ser computacionalment costós per a conjunts de dades grans, ja que requereix calcular la distància entre el punt de dades a classificar i tots els punts del conjunt d'entrenament.
Conclusió
L'algoritme K-NN és una eina poderosa i fàcil d'entendre per a la classificació. Tot i la seva simplicitat, pot ser molt efectiu en molts escenaris. No obstant això, és important tenir en compte els seus desavantatges, com la sensibilitat al valor de K i la necessitat de normalitzar les dades. Amb una implementació i ajust adequats, K-NN pot proporcionar resultats excel·lents en tasques de classificació.
Curs de Machine Learning
Mòdul 1: Introducció al Machine Learning
- Què és el Machine Learning?
- Història i evolució del Machine Learning
- Tipus de Machine Learning
- Aplicacions del Machine Learning
Mòdul 2: Fonaments d'Estadística i Probabilitat
- Conceptes bàsics d'estadística
- Distribucions de probabilitat
- Inferència estadística
- Teorema de Bayes
Mòdul 3: Preprocessament de Dades
Mòdul 4: Algoritmes de Machine Learning Supervisat
- Regressió lineal
- Regressió logística
- Arbres de decisió
- Màquines de suport vectorial (SVM)
- K-Veïns més propers (K-NN)
- Xarxes neuronals
Mòdul 5: Algoritmes de Machine Learning No Supervisat
- Clustering: K-means
- Clustering jeràrquic
- Anàlisi de components principals (PCA)
- Anàlisi d'agrupament DBSCAN
Mòdul 6: Avaluació i Validació de Models
Mòdul 7: Tècniques Avançades i Optimització
- Ensemble Learning
- Gradient Boosting
- Xarxes neuronals profundes (Deep Learning)
- Optimització d'hiperparàmetres
Mòdul 8: Implementació i Desplegament de Models
- Frameworks i biblioteques populars
- Implementació de models en producció
- Manteniment i monitoratge de models
- Consideracions ètiques i de privacitat
Mòdul 9: Projectes Pràctics
- Projecte 1: Predicció de preus d'habitatges
- Projecte 2: Classificació d'imatges
- Projecte 3: Anàlisi de sentiments a xarxes socials
- Projecte 4: Detecció de fraus
