Closed Lunalorla closed 1 year ago
IDEA:
-dare più tipologie di recommendation, la prima è una raccomandazione semplice e diretta, e magari poi dare altre due scelte, basate su categorie precise o magari con l'aggiunta anche dell'ordinamento per prezzo (questo ordinamento viene dopo aver già avuto i risultati della raccomandazione)
Appunti gestione del dataset:
-ripulire e controllare la categoria "SteamSpyTags" -si può togliere "Achievements" -capire la differenza tra "Average playtimes" e "Median playtimes" e capire se toglierne uno dei due -la categoria "English" si riferisce solo al fatto che il gioco sia in Inglese o meno? capire questo e decidere se tenerla, visto che non vengono date info sulle altre lingue, il valore è solo 0 o 1 -"AppId" si riferisce a un ID all'interno di Steam? capire e decidere se tenerlo o meno tanto non sarebbe un problema per la gestione degli index interni -"Categories" presenta una serie di parole separate da punti e virgola, capire come gestire queste frasi se si utilizza la categoria, oppure ripulirla in maniera migliore
1) "SteamSpy_Tags" è tipo "Genre" ma più specifico. Potenzialmente può migliorare la qualità delle raccomandazioni, ma è più difficile da utilizzare; 2) Sono d'accordo, si può togliere "Achievements"; 3) "Average Playtimes" prende tutti i valori di playtime di ogni giocatore, li somma e li divide per il numero di giocatori. "Median Playtimes" prende il valora al centro di una lista in ordine crescente contenete tutti i valori di playtime dei giocatori. (Average di {3,3,6} è 4) (Median sulla stessa lista è 3); 4) Secondo me "English" si può rimuovere, non da altre informazioni utili sulla lingua del gioco; 5) "AppId" penso si riferisca ad un ID all'interno di Steam, sì. Secondo me si può mantenere, si può usare sia come output come "strumento" per la ricerca dei giochi una volta fatto la Cos_Sim (invece di andare per indice si può usare questo, DA CONSULTARE l'uso); 6) Penso che "Categories" si possa rimuovere. Da sì informazioni utili ma non essenziali per lavorare. Un po' Genre e SteamSpy_Tags.
IDEA:
-dare più tipologie di recommendation, la prima è una raccomandazione semplice e diretta, e magari poi dare altre due scelte, basate su categorie precise o magari con l'aggiunta anche dell'ordinamento per prezzo (questo ordinamento viene dopo aver già avuto i risultati della raccomandazione)
Il prezzo lo si potrebbe mettere a priori come parametro per la lista dei risultati della raccomandazione. La raccomandazione per altre categorie si potrebbe mettere, penso intendi di dare la possibilità all'utente di scegliere il tipo di raccomandazione che vuole ricevere.
IDEA: -dare più tipologie di recommendation, la prima è una raccomandazione semplice e diretta, e magari poi dare altre due scelte, basate su categorie precise o magari con l'aggiunta anche dell'ordinamento per prezzo (questo ordinamento viene dopo aver già avuto i risultati della raccomandazione)
Il prezzo lo si potrebbe mettere a priori come parametro per la lista dei risultati della raccomandazione. La raccomandazione per altre categorie si potrebbe mettere, penso intendi di dare la possibilità all'utente di scegliere il tipo di raccomandazione che vuole ricevere.
si per il prezzo intendevo che oltre ad essere usato come parametro per il calcolo della similarità, anche di imporre il filtro sui risultati, in base al budget richiesto dall'utente. Per la seconda cosa, sì, potremmo dargli più modalità di raccomandazione, sempre partendo da quella totale e poi magari facendogli vedere che ha più possibilità.
- "SteamSpy_Tags" è tipo "Genre" ma più specifico. Potenzialmente può migliorare la qualità delle raccomandazioni, ma è più difficile da utilizzare;
- Sono d'accordo, si può togliere "Achievements";
- "Average Playtimes" prende tutti i valori di playtime di ogni giocatore, li somma e li divide per il numero di giocatori. "Median Playtimes" prende il valora al centro di una lista in ordine crescente contenete tutti i valori di playtime dei giocatori. (Average di {3,3,6} è 4) (Median sulla stessa lista è 3);
- Secondo me "English" si può rimuovere, non da altre informazioni utili sulla lingua del gioco;
- "AppId" penso si riferisca ad un ID all'interno di Steam, sì. Secondo me si può mantenere, si può usare sia come output come "strumento" per la ricerca dei giochi una volta fatto la Cos_Sim (invece di andare per indice si può usare questo, DA CONSULTARE l'uso);
- Penso che "Categories" si possa rimuovere. Da sì informazioni utili ma non essenziali per lavorare. Un po' Genre e SteamSpy_Tags.
-si potrebbero ripulire e unire Categories e Genres, ma poi potrebbero risultare troppo lunghi o con troppe info all'interno -quindi average playtimes e median si potrebbero lasciare entrambi o solo uno dei due? secondo me meglio solo average -per AppId meglio consultare l'uso -per i ratings, meglio lasciarli separati? o unirli così da avere la totalità di ratings che un gioco ha ricevuto? poi al massimo per la knowledge base si può pensare di basarsi su uno o l'altro per azioni da compiere
Aggiornamento:
riduzione del dataframe per la vettorizzazione con td-idf alle sole categorie ideali e testuali, i valori numerici non potrebbero essere usati per il calcolo della similarità. riduzione del dataframe con le categorie scelte, testuali e non, così da poter operare su un dominio ristretto.
Recommender System Content Based: -https://towardsdatascience.com/hands-on-content-based-recommender-system-using-python-1d643bf314e4
https://github.com/youonf/recommendation_system/blob/master/content_based_filtering/content_based_recommender_approach1.ipynb
-https://www.datacamp.com/tutorial/recommender-systems-python
To do list:
1) come aggiungere un nuovo elemento a un Dataframe (deve avere tutte le categorie, ma alcune potrebbero essere vuote, problema?)
2) ordine esecuzione:
-prendiamo in input un gioco che piace all'utente con tutte le categorie che richiediamo (decidere se deve inserirle per forza o può anche non farlo)
-controlliamo se l'elemento si trova già nel dataframe, altrimenti inserirlo [-salvarsi l'indice dell'elemento appena aggiunto (probabilmente sarà un'aggiunta alla fine)] [-oppure salvarsi l'indice dell'elemento che si sta cercando se lo si trova già all'interno]
-creare la tf-idf matrix, basandosi sulle categorie che vogliamo includere [-per le categorie su cui basare la creazione della tf-idf, unirle prima in un'unica categoria (vedi file web)]
-calcola la similarità del coseno sulla stessa matrice (2 volte)
-applica la funzione che calcola i top n giochi raccomandati (vedi file web) [-(far vedere la differenza di punteggi di similarità, tra i risultati proposti)]