Ho appena letto come il Pragmatic Chaos del team BellKor sia winning the Netflix Challenge su Wired, e sono curioso di sapere come funziona questo tipo di algoritmi. So che la soluzione del team Bellkor deve essere innovativa sul campo ... ma come funziona solitamente il campo? È solo un database molto dettagliato con le catene di Markov che vengono ripetute ancora e ancora o cosa?Come funzionano solitamente gli algoritmi di consigli automatici?
risposta
ma come funziona normalmente il campo?
È una tecnica di data mining. Data Mining viene utilizzato come parte della Business Intelligence (Data Warehouse e simili) cercando di trovare relazioni e informazioni in enormi quantità di dati. È un'area di informatica, che riguarda anche l'apprendimento automatico in generale, ad es. riconoscimento del modello. I consigli automatici vengono forniti da Association Mining. Un'associazione con un alto supporto è mostrata come raccomandazione. L'algoritmo k-nearest-neighbor è solo uno dei molti algoritmi utilizzati dalle persone di machine learning/data mining.
Se sei interessato alla teoria di base, ti consiglio di scrivere a Data Mining: Practical Machine Learning Tools and Techniques di Ian H. Witten.
Per Java è disponibile un ottimo pacchetto di machine learning, WEKA che è in grado di eseguire association mining. Anche Ian Witten è uno degli autori di WEKA.
Dai un'occhiata a questo articolo di Wikipedia: Euclidean Distance.
L'idea di base è che si utilizza una metrica di distanza (come quella Euclidea sopra) per confrontare le persone o le cose l'una con l'altra.
Il nuovo libro O'Reilly, Programming Collective Intelligence: Building Smart Web 2.0 Applications ha un grande capitolo su questo argomento.
Ho trovato this previous article su Wired, che menziona brevemente lo k-nearest-neighbor algorithm, utilizzato in passato da Bellkor e Cinematch.
Anche le osservazioni fatte dallo psicologo su come trovare pregiudizi sono interessanti.
La maggior parte dei concorrenti di Netflix ha utilizzato variazioni su un Singular Value Decomposition. Questo algoritmo opera prendendo una matrice grande e semplificandola in una matrice 2x2 approssimativa. Questa matrice 2x2 può quindi essere tracciata su uno spazio bidimensionale in cui punti vicini l'uno all'altro condividono l'affinità l'uno con l'altro nella matrice originale.
Quindi, nel caso di Netflix, è possibile creare una matrice con i filmati come colonne e gli utenti come le righe in cui qualsiasi valore [i, j] è la valutazione che l'utente i ha assegnato al film j. Questa è una matrice molto grande che può quindi avere un SVD applicato per generare una matrice bidimensionale che serve come approssimazione della matrice più grande. Gli utenti vicini tra loro se tracciati su questo piano condividono valutazioni simili, quindi se un utente non ha visto un film che un altro utente ha visto chi è vicino a questo piano, potrebbe essere una raccomandazione per il nuovo utente.
La soluzione vincente ha progettato una variante di un algoritmo SVD semplice chiamato SVD ++ e si è unito a altri casi limite per provare a produrre un algoritmo che superasse il miglioramento del 10% necessario per richiedere il premio.
- 1. Come funzionano gli algoritmi di diff documento?
- 2. Come funzionano 20 domande sugli algoritmi AI?
- 3. Come posso elencare gli algoritmi Cipher disponibili?
- 4. Quando si dovrebbero forzare gli aggiornamenti automatici?
- 5. Come funzionano gli stream bufferizzati?
- 6. Come funzionano gli alberi Suffix?
- 7. Come gli Intenti funzionano internamente?
- 8. Come funzionano gli indici compositi?
- 9. Python: come funzionano gli insiemi
- 10. Come funzionano gli operatori boost?
- 11. Come funzionano gli assassini di attività?
- 12. Consigli sull'apprendimento "Come pensare funzionale"?
- 13. Dove è impostato solitamente $ GEM_PATH?
- 14. Come disattivare gli screenshot automatici sul test dell'interfaccia utente (Xcode)
- 15. Gli "algoritmi" esistono nella programmazione funzionale?
- 16. Come funzionano gli interrupt su Intel 8080?
- 17. Confronta algoritmi di similarità
- 18. Come funzionano gli attributi del metodo Perl?
- 19. Come gli stati astratti funzionano in ionico?
- 20. Come funzionano gli eventi virtuali in C#?
- 21. Come funzionano gli overlay Turbo Pascal?
- 22. Come funzionano gli appunti in Windows?
- 23. Come funzionano gli itinerari in FOSRestBundle?
- 24. Come funzionano gli interpreti/motori JavaScript?
- 25. Come funzionano gli enumeratori in Ruby 1.9.1?
- 26. Come funzionano gli aggiornamenti in tempo reale?
- 27. Consigli sull'utilizzo di ThreadLocals per avvolgere gli oggetti singoletti mutevoli
- 28. Scelta di random_state per gli algoritmi di sklearn
- 29. Come incorporare gli aggiornamenti automatici di WordPress con Git come controllo di versione?
- 30. Come riscrivere un ciclo annidato usando gli algoritmi C++ STL?
Un altro approccio è la distanza di manhattan (o geometria di Taxicab) (più veloce da calcolare, meno preciso di Euclideo) – adhg