Domanda

Sto pensando di scrivere un'app per classificare i film in un HTPC in base a ciò che piace ai membri della famiglia.

Non conosco statistiche o AI, ma le cose qui sembrano molto succose. Non saprei da dove cominciare.

Ecco cosa voglio realizzare:

  1. Comporre una serie di campioni che piacciono a ciascun utente, classificando separatamente ciascun attributo campione. Ad esempio, forse a un utente piacciono molto i film western, quindi il genere western avrebbe un po 'più peso per quell'utente (e così via per altri attributi, come attori, regista, ecc.)

  2. Un utente può ottenere suggerimenti sulla base di like degli altri utenti. Ad esempio, se sia l'utente A che B come Spielberg (connessione tra gli utenti) e l'utente B amano Batman Begins, ma l'utente A detesta Katie Holmes, soppesare il film per l'utente A di conseguenza (di nuovo, ogni attributo separatamente, ad esempio, forse all'utente A non piacciono così tanto i film d'azione, quindi abbassa un po 'la valutazione, e poiché Katie Holmes non è la stella principale, non tenerne conto tanto quanto gli altri attributi).

Fondamentalmente, confrontando i set dell'utente A in modo simile ai set dell'utente B e ottenendo una valutazione per l'utente A.

Ho una vaga idea su come implementarlo, ma sono certo che alcune menti brillanti hanno già pensato a una soluzione molto migliore, quindi ... qualche suggerimento?

In realtà, dopo una rapida ricerca, sembra che un filtro bayesiano funzionerebbe. In tal caso, sarebbe questo l'approccio migliore? Sarebbe semplice come solo "normalizzare" i dati del film, la formazione di un classificatore per ciascun utente e quindi classificare ogni film?

Se il tuo suggerimento include alcuni concetti di fusione del cervello (non ho esperienza in queste materie, specialmente nell'intelligenza artificiale), ti sarei grato se includessi anche un elenco di alcune nozioni di base per la mia ricerca prima di immergermi nelle cose carnose .

Grazie!

È stato utile?

Soluzione

Ci sono alcuni algoritmi che vanno bene per questo:

ARTMAP: gruppi via probabilità l'uno contro l'altro (questo non è veloce ma è la cosa migliore per il tuo problema IMO)

ARTMAP detiene un gruppo di attributi comuni e determina la probabilità di simliarità tramite una percentuale. ARTMAP

KMeans: Questo separa i vettori dalla distanza che sono l'uno dall'altro KMeans: Wikipedia

PCA: separerà la media di tutti i valori dai bit di varing. Questo è ciò che useresti per eseguire il rilevamento del volto e la sottrazione di sfondo in Computer Vision. PCA

Altri suggerimenti

È simile a questa domanda in cui l'OP voleva costruire un sistema di raccomandazioni. In breve, ci viene fornito un insieme di dati di formazione che consistono in valutazioni degli utenti per i film (1-5 stelle ad esempio) e una serie di attributi per ciascun film (anno, genere, attori, ..). Vogliamo creare un consulente in modo che fornisca ai film non visti una valutazione possibile. Quindi i dati inpt sembrano:

user movie   year   genre   ...    | rating
---------------------------------------------
  1    1     2006   action         |    5
  3    2     2008   drama          |    3.5
  ...

e per un film senza punteggio X:

10    20     2009   drama   ?

vogliamo prevedere una valutazione. In questo modo per tutti i film non visti, quindi l'ordinamento in base alla valutazione del film previsto e l'emissione della top 10 ti dà un sistema di raccomandazioni.

L'approccio più semplice è quello di utilizzare un algoritmo k-più vicino . Tra i film classificati, cerca il "più vicino" quelli al film X e combinare le loro valutazioni per produrre una previsione. Questo approccio ha il vantaggio di essere molto semplice da implementare da zero.

Esistono altri approcci più sofisticati. Ad esempio puoi costruire un albero decisionale , adattare un insieme di regole ai dati di allenamento. Puoi anche utilizzare reti bayesiane , reti neurali artificiali , supportano macchine vettoriali , tra molti altri ... Passare attraverso ognuno di questi non sarà facile per qualcuno senza il giusto background. Mi aspetto comunque che useresti uno strumento / una libreria esterna. Ora sembra che tu abbia familiarità con le reti bayesiane, quindi una semplice rete bayes ingenua potrebbe in effetti essere molto potente. Un vantaggio è che consente la previsione con dati mancanti.

L'idea principale sarebbe in qualche modo la stessa; prendi i dati di input che hai, addestra un modello, quindi usalo per prevedere la classe di nuove istanze.

Se vuoi giocare con diversi algoritmi in un semplice pacchetto intuitivo che non richiede programmazione, ti suggerisco di dare un'occhiata a Weka (la mia prima scelta), Orange o RapidMiner . La parte più difficile sarebbe preparare il set di dati nel formato richiesto. Il resto è facile come scegliere l'algoritmo e applicarlo (tutto in pochi clic!)

Suppongo che qualcuno non stia cercando di entrare in troppi dettagli, consiglierei di utilizzare il metodo del vicino più vicino in quanto è intuitivo e facile da implementare. Comunque l'opzione di usare Weka (o uno degli altri strumenti) vale la pena esaminare.

L'algoritmo K vicino più vicino potrebbe essere il tuo vicolo.

Scopri alcune delle attività dei migliori team per premio netflix .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top