Prima di tutto, non preoccuparti della parte dell'intelligenza artificiale. Un programma che usa l'intelligenza artificiale è come qualsiasi altro programma. Iniziare a pensare in termini di input e output. Per un agente intelligente significa che stai percependo il tuo ambiente e puoi chiamare azioni sull'ambiente.
Un esempio potrebbe essere che si sta scrivendo un motore di raccomandazione del film:
Qual è il tuo contributo? (o: percezione)
- Un elenco di film che il tuo utente non ha ancora visto,
- Un elenco di film che il tuo utente ha già visto insieme al suo voto (potrebbe essere un semplice like / antipatia)
- Un elenco di tutti gli altri utenti, che a loro volta hanno un elenco di film classificati
Qual è il tuo risultato? (o: azione)
- Un elenco di film ordinati da ciò che il tuo programma pensa che possa piacere all'utente.
La tua azione determinerà la modifica dell'ambiente, ad es. il tuo utente probabilmente guarderà il film, anche se questo non accadrà immediatamente né è garantito.
Internamente puoi quindi utilizzare gli algoritmi presentati nella classe, puoi iniziare in modo semplice e utilizzare un k-neighbor neighbor . In questo caso, vuoi trovare utenti che hanno interessi simili a quelli del tuo attuale utente e quindi consigliargli un film che non ha ancora visto, ma i suoi vicini chiudi sono piaciuti.
Come definisci chiudi ? Bene, è qui che arrivano i vettori di funzionalità e, davvero, questa è l'unica sfida che dovrai affrontare. Una volta che hai i vettori delle caratteristiche, non importa quale algoritmo stai applicando. Nel nostro caso potresti rappresentare un utente in base alle sue valutazioni. Quindi se ci sono solo 5 film nel sistema, e ai tuoi utenti piacciono i film A e B, non piace C e non ha visto D ed E il suo vettore di funzionalità è [1,1,-1,0,0]
. Calcola la distanza da tutti gli altri utenti e trova un film che non ha ancora visto (D ed E) e calcola il punteggio per quei film tra i suoi pari più vicini. La raccomandazione sarebbe il film che ha ottenuto il punteggio più alto.