Non ci sono risposte dure e veloci, poiché le risposte qui dipendono molto dal dominio di input e problema. Gran parte del lavoro di machine learning è l'arte (non la scienza) della preparazione del tuo input, per questo motivo. Potrei darti alcune idee generali su cui riflettere. Hai due problemi: creare somiglianze significative con ciascuno di questi elementi e combinarli.
La somiglianza della città sembra ragionevole ma dipende molto dal tuo dominio. È davvero il caso che essere nella stessa città significhi tutto, e stare nelle città vicine non significa nulla? Ad esempio, essere in città di dimensioni simili conta per qualcosa? Nello stesso stato? Se fanno la tua somiglianza dovrebbero rifletterci.
Istruzione: ho capito perché è possibile utilizzare la somiglianza del coseno, ma questo non risolverà il problema reale qui, che sta gestendo diversi token che indicano la stessa cosa. Hai bisogno di "eng" e "engineering" per abbinare, e "ba" e "scapoli", cose del genere. Una volta preparati i token in questo modo, potrebbe dare buoni risultati.
Interesse: Non penso che il coseno sia la scelta migliore qui, prova una semplice somiglianza tanimoto (solo la dimensione dell'intersezione rispetto alla dimensione dell'unione).
Non si possono semplicemente sommare, poiché presumo tu voglia ancora un valore nell'intervallo [0,1]. Potresti mediarli. Ciò fa supporre che l'output di ognuno di questi sia direttamente comparabile, che siano le stesse "unità" se lo si desidera. Non sono qui; per esempio non è come se fossero probabilità.
Potrebbe ancora funzionare correttamente nella pratica per la media, forse con pesi. Ad esempio, essere nella stessa città qui è importante quanto avere esattamente gli stessi interessi. È vero o dovrebbe essere meno importante?
È possibile provare e testare diverse variazioni e pesi, come si spera che si disponga di uno schema per testare i dati storici. Ti indico al nostro progetto, Mahout, in quanto ha una struttura completa per i consiglieri e la valutazione.
Tuttavia, tutti questi tipi di soluzioni sono hacky ed euristici. Penso che potresti voler adottare un approccio più formale alla codifica delle funzioni e alle somiglianze. Se sei disposto ad acquistare un libro e ad esempio Mahout, lo Mahout in Action ha una buona copertura nei capitoli del cluster su come selezionare e codificare le funzionalità e come fare una somiglianza con esse.
Ci sono molti metodi, molta letteratura che hai letto finora? –