38 lines
No EOL
2.2 KiB
Markdown
38 lines
No EOL
2.2 KiB
Markdown
Algoritmo che può essere usato sia per regression che per classification.
|
|
|
|
#### Classificazione
|
|
ho dei dati di training in un determinato spazio vettoriale in base al numero di feature.
|
|
Quando voglio classificare un nuovo dato, vedo quali sono i k data point più vicini al dato che voglio classificare sulla base della distanza (tipicamente distanza euclidea).
|
|
Poi ordino questi k data point (anche detti i k nearest neighbors, ovvero i primi k vicini), e osservo le classi di questi k. Al nuovo data point darò semplicemente la classe maggioritaria che ho osservato tra i neighbors.
|
|
|
|
![[Pasted image 20241208150705.png|300]]
|
|
|
|
Come scelgo il valore migliore per k? Con la Cross Validation (Grid-Search):
|
|
- **k piccolo:** poco bias ma tanta varianza: overfitting
|
|
![[Pasted image 20241208143835.png|100]]
|
|
- **k grande:** poca varianza ma bias alto: underfitting
|
|
![[Pasted image 20241208143917.png|100]]
|
|
- **un buon k** è un trade-off tra i due
|
|
![[Pasted image 20241208144009.png|100]]
|
|
|
|
#### Regression
|
|
Invece di vedere la classe di maggioranza (anche perché in regression non ci sono le classi), calcolo il valore medio dei neighbors, semplicemente sommo tutti i data point e divido per k.
|
|
|
|
#### Metriche per la distanza
|
|
Si possono usare varie metriche
|
|
|
|
##### Distanza euclidea
|
|
La classica distanza cartesiana, la linea che unisce due punti su un piano.
|
|
$$d(x,y) = \sum_{j=1}^d \sqrt{(x_j - y_{j})^2}$$
|
|
##### Distanza di Manhattan
|
|
Misura la somma delle differenze assolute tra le coordinate. Più robusta ai dati con outlier rispetto alla distanza euclidea. Tendenzialmente alla distanza euclidea se la dimensionalità è alta
|
|
$$d(x,y) = \sum_{i=1}^n |x_i - y_i|$$
|
|
##### Distanza di Minkowski
|
|
La possiamo vedere come una forma più "generale", se vario il parametro $p$
|
|
- per $p=1$ ho la distanza di Manhattan
|
|
- per $p=2$ ho la distanza euclidea
|
|
$$d(x,y) = \left( \sum_{i=1}^n |x_i - y_i|^p \right)^{\frac{1}{p}}$$
|
|
##### Cosine similarity
|
|
Quando ci interessa l'angolo tra i vettori più che la distanza, è il coseno dell'angolo tra due vettori. Si usa spesso con vettori di embedding.
|
|
|
|
Si possono usare tante altre metriche, io ho riportato le più comuni, per approfondire: https://scikit-learn.org/stable/modules/generated/sklearn.metrics.DistanceMetric.html |