Ho un set di dati da classificare. Usando KNN algo ho una precisione del 90% ma, usando SVM, riesco a superare il 70%. SVM non è migliore di KNN. So che potrebbe essere stupido da chiedere, ma quali sono i parametri per SVM che daranno risultati quasi approssimativi come KNN. Sto usando il pacchetto libsvm su MATLAB R2008Supporto Vector Machine vs K Vicini vicini più vicini
risposta
kNN e SVM rappresentano approcci diversi all'apprendimento. Ogni approccio implica un modello diverso per i dati sottostanti.
SVM assume esiste un iper-plane separa i punti di dati (piuttosto assunzione restrittiva), mentre kNN tenta di approssimare la distribuzione sottostante dei dati in modo non parametrico (approssimazione grossolana di Parsen-finestra stimatore).
Dovrai esaminare le specifiche del tuo scenario per prendere una decisione migliore su quale algoritmo e configurazione utilizzare al meglio.
"SVM presuppone che esista un iper-piano che separa i punti di dati (un'ipotesi piuttosto restrittiva)" In realtà non è affatto restrittivo, SVM con il kernel RBF può distribuire qualsiasi set di dati con qualsiasi combinazione di etichette. – Pedrom
@Pedrom infatti il kernel SVM è uno strumento molto potente – Shai
@ValentinHeinitz non ti aspetti veramente di ottenere una spiegazione accurata in 10 righe? – Shai
Dipende molto dal set di dati che si sta utilizzando. Se hai qualcosa come la prima riga di questa immagine (http://scikit-learn.org/stable/_images/plot_classifier_comparison_1.png) kNN funzionerà davvero bene e SVM lineare molto male.
Se si desidera che SVM funzioni meglio, è possibile utilizzare un SVM basato su kernel come quello nell'immagine (utilizza un kernel rbf).
Se si utilizza scikit-learn per Python si può giocare un po 'con il codice qui per vedere come utilizzare il kernel SVM http://scikit-learn.org/stable/modules/svm.html
kNN in pratica dice "se siete vicini per coordinare x, quindi la classificazione sarà simile ai risultati osservati in x. " In SVM, un analogico vicino userebbe un kernel ad alta dimensionalità con un parametro "piccolo" di larghezza di banda, poiché ciò causerebbe un sovraccarico di SVM. Cioè, SVM sarà più vicino a "se sei vicino a coordinare x, la classificazione sarà simile a quella osservata in x".
Si consiglia di iniziare con un kernel gaussiano e controllare i risultati per diversi parametri. Dalla mia esperienza (che è, ovviamente, focalizzata su determinati tipi di set di dati, quindi il tuo chilometraggio può variare), SVM ottimizzato supera le prestazioni di kNN sintonizzato.
Domande per voi:
1) k Come si selezionano in kNN?
2) Quali parametri hai provato per SVM?
3) Misurate la precisione in-sample o out-of-sample?
- 1. PostGis vicini più vicini query
- 2. Vicini più vicini che utilizzano Quaternions
- 3. Trova i vicini più vicini - OpenCV
- 4. Come visualizzare i vicini più vicini in R?
- 5. Trova tutti i vicini più vicini entro una distanza specifica
- 6. Come posso risolvere la seguente mancata corrispondenza delle dimensioni con i vicini più vicini di K?
- 7. Trovare i vicini più vicini di K e la sua implementazione
- 8. Come posso estendere questa query SQL per trovare i k vicini più vicini?
- 9. Ricerca di k numeri più vicini ad un dato numero
- 10. Geohashing - Trova in modo ricorsivo i vicini dei vicini
- 11. Come calcolare i vicini più vicini usando weka dalla riga di comando?
- 12. Come trovare i k vicini più vicini alla mediana di n numeri distinti nel tempo O (n)?
- 13. WebRTC: corrispondenza tra pari più vicini
- 14. Come determinare quali rapporti sono più vicini
- 15. jquery genitori/più vicini non funzionanti
- 16. Punti più vicini di due poligoni
- 17. Trova n Vicini più vicini per un determinato punto utilizzando PostGIS?
- 18. OpenCV C++/Obj-C: connette contorni vicini
- 19. differenza Numpy tra elementi vicini
- 20. come calcolare i nodi "vicini" con networkx
- 21. Determinazione dei vicini della cella elenco bidimensionale
- 22. Utilizzando LINQ trovare luoghi vicini dal database
- 23. Ottieni indirizzi stradali vicini entro un raggio
- 24. Trovare i vicini in un array bidimensionale
- 25. Return Index dei valori più vicini in una matrice
- 26. Il modo più efficace per trovare i vicini nell'elenco
- 27. Visualizzare solo gli elementi della lista più vicini
- 28. Come posso trovare valori vicini a un determinato valore?
- 29. Python - confronto degli elementi della lista con elementi "vicini"
- 30. Algoritmo per trovare "buoni" vicini - colorazione del grafico?
Questa domanda sembra essere fuori tema perché riguarda l'apprendimento automatico e sarebbe più adatta per http://stats.stackexchange.com/ – Shai
quindi l'apprendimento automatico non fa parte della codifica? questa è una piattaforma aperta e chiunque è libero di porre qualsiasi domanda purché sia collegato alla codifica e richiede alle persone di confrontarsi. Quindi se non lo trovi utile puoi stare lontano da questa discussione e lasciare che altri partecipino. –
Non pretendo che non appartenga a questo sito, penso semplicemente che troverai un pubblico più informato e risposte migliori in un forum più dedicato come http://stats.stackexchange.com – Shai