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