vault backup: 2024-12-11 13:29:42
This commit is contained in:
parent
f358dcd161
commit
c26179e4fe
16 changed files with 427 additions and 59 deletions
38
Foundation of data science/notes/9 K-Nearest Neighbors.md
Normal file
38
Foundation of data science/notes/9 K-Nearest Neighbors.md
Normal file
|
@ -0,0 +1,38 @@
|
|||
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
|
Loading…
Add table
Add a link
Reference in a new issue