Sto usando KNN per classificare cifre scritte a mano. Ora ho anche implementato PCA per ridurre la dimensionalità. Dal 256 sono andato a 200. Ma mi accorgo solo del ~ 0,10% di perdita di informazioni. Ho cancellato 56 dimensioni. La perdita non dovrebbe essere più grande? Solo quando scendo a 5 dimensioni ottengo una perdita del ~ 20%. È normale?Algoritmo PCA e KNN
risposta
Stai dicendo che dopo aver rimosso 56 dimensioni, hai perso quasi nessuna informazione? Certo, questo è il punto di PCA! Principal Component Analysis, come afferma il nome, ti aiuta a determinare quali dimensioni portano le informazioni. Ed è possibile rimuovere il resto, che ne costituisce la parte più grande.
Voglio alcuni esempi, nell'analisi genica, ho letto documenti in cui la dimensione è ridotta da 40.000 a 100 con PCA, poi fanno cose magiche e hanno un eccellente classificatore con 19 dimensioni. Questo implicitamente ti dice che non hanno praticamente perso alcuna informazione quando hanno rimosso 39.900 dimensioni!
ok grazie. Sono un po 'nuovo per l'apprendimento automatico –
Questo è normale, sì (e come Fezvez ha detto il punto di quello che hai fatto). Il tuo caso è in realtà un buon esempio in cui puoi vedere come è possibile.
Dai un'occhiata ai tuoi dati (che è sempre importante in machine learning, conosci i tuoi dati). Se hai immagini di caratteri scritti a mano in bianco su bianco, c'è un'alta probabilità che i pixel in alcuni angoli siano bianchi per tutti i campioni (l'ho avuto in un angolo quando ho fatto l'apprendimento automatico a mano di cifre scritte). Quindi non c'è in realtà nessuna informazione in quel pixel qualunque. Se lo lasci come input per KNN o ANN o quant'altro, avrai gli stessi risultati.
- 1. Dimensione dei dati prima e dopo l'esecuzione di PCA
- 2. Classificazione: PCA e regressione logistica usando sklearn
- 3. Set di dati knn large
- 4. errore con la funzione knn
- 5. Scaling PCA con ggbiplot
- 6. Classificazione KNN in MATLAB - matrice di confusione e ROC?
- 7. OpenCV DescriptorMatcher radiusMatch e knn Formato dei risultati di lettura
- 8. OpenCV PCA Compute in Python
- 9. PCA incrementale su big data
- 10. Prima PCA o normalizzazione prima?
- 11. Treno KNN() in cv2 con opencv 3.0
- 12. Matlab - Analisi PCA e ricostruzione di dati multidimensionali
- 13. Differenza tra PCA (Principal Component Analysis) e Feature Selection
- 14. Applicare PCA su matrice sparse molto grande
- 15. Esempio di base per PCA con matplotlib
- 16. Estrazione degli assi PCA per ulteriori analisi
- 17. Postgresql k-nearest neighbor (KNN) sul cubo multidimensionale
- 18. Perché KNN è molto più veloce dell'albero decisionale?
- 19. Gestione di dati incompleti (scarsità di dati) in kNN
- 20. R - come rendere più leggibile il biplot PCA
- 21. scikit-learn kernel PCA ha spiegato la varianza
- 22. Valore di prova dei cluster su un grafico PCA
- 23. è possibile applicare PCA su qualsiasi classificazione di testo?
- 24. Algoritmo di hashing dell'immagine semplice e veloce
- 25. Algoritmo da RGB a CMYK e ritorno
- 26. Implementazione Python per Algoritmo Stop e Wait
- 27. Differenza tra rete neurale e algoritmo evolutivo
- 28. OpenGL GLSL Cel Shading e Outline algoritmo
- 29. Algoritmo base64 SHA1 in javascript e C#
- 30. Algoritmo Complessità e sicurezza: MD5 o SHA1?
Questo tipo di cose è comune in molti tipi di applicazioni. Si chiama il punto di rendimenti decrescenti. –