Algoritmi per determinare quanto un fattore contribuisce a un valore totale

6

Diciamo che ho centinaia / migliaia di oggetti (voci) in un database e ogni oggetto contiene 10 attributi. Ho un modo per misurare quantitativamente ogni attributo dove un numero più alto implica che l'oggetto è migliore in quell'area. Ho anche un prezzo finale associato a quell'oggetto. C'è un modo per programmare (attraverso forse un algoritmo) determinare un'approssimazione di quanto ogni attributo contribuisce al costo totale?

In sostanza, voglio essere in grado di stimare

costo totale medio = a * attributo1 + b * attributo2 + ..... + j * attributo10

risolvendo per a, b, ..., j

Mi rendo conto che potrebbe trattarsi più di una questione statistica che di una domanda di programmazione, ma sono più interessato all'implementazione di questo attraverso la programmazione che a una spiegazione completamente statistica.

Questo è qualcosa di più adatto a scipy? numpy? qualche quadro di statistiche?

    
posta user1431282 25.12.2012 - 04:48
fonte

1 risposta

7

Non ci hai detto se sai con certezza che il prezzo finale sta in una relazione con i valori degli attributi, o se è solo una tua supposizione. Tuttavia, prendo una supposizione per conto mio: immagino che quello che stai cercando sia un algoritmo per scegliere a_1, a_2, ..., a_10 in modo che

q_j := sum(a_i *attribute_i_j) (where i=1,...10, j = 1,..., number of objects)

si avvicina al prezzo p_j dell'oggetto j. In questa equazione, attribute_i_j è il valore dell'attributo i-es dell'oggetto j. Per ottimizzare la differenza di prezzo simultaneamente, si ridurrebbe in genere la somma dei quadrati delle differenze:

sum((p_j - q_j)^2)

Questo è noto come "approssimazione lineare dei minimi quadrati" e qui trovi la soluzione in Wikipedia:

link

Per risolvere questo problema con Python, ti consiglio di provare la funzione leastsq di scipy:

link

Ultimo ma non meno importante, sarebbe utile se chiarissi se ho le tue intenzioni corrette o se vuoi risolvere un altro problema.

    
risposta data 25.12.2012 - 15:03
fonte

Leggi altre domande sui tag