Sto lavorando con un grande insieme di dati in questo momento e ho scritto un programma che calcola un risultato basato su alcuni input. Ho 10 ingressi, ognuno di essi ha circa 20 diversi valori possibili. Non sono sicuro di quale tecnica utilizzare per trovare la combinazione di questi input che produrrà il risultato più grande.
Ecco un esempio inventato che equivale sostanzialmente alla realtà, ma più semplice da dimostrare:
Ci sono film, utenti e valutazioni degli utenti. Supponiamo di avere informazioni sull'età, il paese, il sesso, il segno zodiacale, il colore dei capelli, ecc. L'obiettivo in questo scenario sarebbe quello di trovare la combinazione di intervallo di età, paese, sesso ecc. Che porterebbe alla media più grande valutazione per un determinato film. Infine aggiungiamo una restrizione del numero minimo di voti, in modo che quando otteniamo una combinazione di input che ci restituisce un singolo utente che ha dato al film un punteggio perfetto, ignoriamo questa combinazione.
Cosa ho già provato:
- annidato per cicli. In questo modo verranno testate tutte le combinazioni possibili, ma verranno eseguite per un mese - troppo lungo.
- Una specie di algoritmo genetico. Lascio che il programma scelga valori casuali per gli input e salvi e riutilizzi i valori che hanno contribuito ai migliori risultati. Applica alcune modifiche quando il programma rimane bloccato sugli stessi valori troppo a lungo. Ho ottenuto dei buoni risultati usando questo metodo, ma non sono riuscito a riprodurli spesso su percorsi diversi, quindi suppongo che forse mi stia perdendo risultati ancora migliori usando questo approccio.
- Ho provato ad analizzare ciascun input separatamente, dando il resto dei valori predefiniti e quindi combinando i migliori singoli input insieme. Stesso risultato del metodo # 2.
Vorrei sapere se esistono algoritmi / tecniche conosciute per risolvere questo tipo di problemi.