Calcola i guadagni per ciascuna funzione e restituisce le migliori informazioni di suddivisione possibili per la funzione.
Le informazioni suddivise sono la migliore soglia (bucket id), guadagni e contributi del nodo sinistro / destro per nodo per ciascuna funzionalità.
È possibile che non tutti i nodi possano essere suddivisi su ciascuna funzione. Quindi, l'elenco dei possibili nodi può differire tra le caratteristiche. Pertanto, restituiamo `node_ids_list` per ogni caratteristica, contenente l'elenco dei nodi che questa caratteristica può essere utilizzata per suddividere.
In questo modo, l'output è la migliore suddivisione per funzionalità e per nodo, quindi deve essere combinata in un secondo momento per produrre la migliore suddivisione per ciascun nodo (tra tutte le caratteristiche possibili).
La lunghezza degli elenchi di output sono tutti della stessa lunghezza, `num_features`. Le forme di output sono compatibili in modo tale che la prima dimensione di tutti i tensori di tutte le liste sia la stessa e uguale al numero di possibili nodi di divisione per ciascuna caratteristica.
Metodi pubblici
static BoostedTreesCalculateBestGainsPerFeature | create ( ambito ambito, operando <Integer> nodeIdRange, Iterable < Operand <Float>> statsSummaryList, operando <Float> l1, operando <Float> l2, operando <Float> treeComplexity, operando <Float> minNodeWeight, Long maxSplits) Metodo Factory per creare una classe che racchiude una nuova operazione BoostedTreesCalculateBestGainsPerFeature. |
Elenco < Output <Float>> | gainsList () Un elenco di output di tensori di rango 1 che indicano i migliori guadagni per ciascuna funzione da dividere per determinati nodi. |
Elenco < Output <Float>> | leftNodeContribsList () Un elenco di tensori di rango 2 che indicano il contributo dei nodi di sinistra quando si ramifica dai nodi padre (dato dall'elemento tensore nell'output node_ids_list) alla direzione sinistra dalla soglia data per ciascuna caratteristica. |
List < Output <Integer>> | nodeIdsList () Un elenco di output dei tensori di rango 1 che indicano i possibili ID dei nodi divisi per ciascuna funzione. |
Elenco < Output <Float>> | rightNodeContribsList () Un elenco di tensori di rango 2, con la stessa forma / condizioni di left_node_contribs_list, ma solo che il valore è per il nodo destro. |
List < Output <Integer>> | soglieList () Un elenco di output di tensori di rango 1 che indicano l'ID del bucket da confrontare (come soglia) per la divisione in ciascun nodo. |
Metodi ereditati
Metodi pubblici
public static BoostedTreesCalculateBestGainsPerFeature create ( Scope scope, Operand <Integer> nodeIdRange, Iterable < Operand <Float>> statsSummaryList, Operand <Float> l1, Operand <Float> l2, Operand <Float> treeComplexity, Operand <Float> maxNodeSummaryList)
Metodo Factory per creare una classe che racchiude una nuova operazione BoostedTreesCalculateBestGainsPerFeature.
Parametri
scopo | ambito attuale |
---|---|
nodeIdRange | Un tensore di rango 1 (forma = [2]) per specificare l'intervallo [primo, ultimo) di ID nodo da elaborare all'interno di `stats_summary_list`. I nodi sono iterati tra i due nodi specificati dal tensore, come `per node_id in range (node_id_range [0], node_id_range [1])` (Notare che l'ultimo indice node_id_range [1] è esclusivo). |
statsSummaryList | Un elenco di tensore di rango 3 (# shape = [max_splits, bucket, 2]) per il riepilogo delle statistiche accumulate (gradiente / hessiana) per nodo per bucket per ciascuna funzionalità. La prima dimensione del tensore è il numero massimo di divisioni, quindi non verranno utilizzati tutti gli elementi di esso, ma verranno utilizzati solo gli indici specificati da node_ids. |
l1 | Fattore di regolarizzazione l1 sui pesi delle foglie, per istanza. |
l2 | l2 fattore di regolarizzazione sui pesi delle foglie, per istanza. |
treeComplexity | regolazione del guadagno, per foglia. |
minNodeWeight | media minima di hessian in un nodo prima richiesta per il nodo da considerare per la divisione. |
maxSplits | il numero di nodi che possono essere suddivisi nell'intero albero. Utilizzato come dimensione dei tensori di output. |
ritorna
- una nuova istanza di BoostedTreesCalculateBestGainsPerFeature
public List < Output <Float>> gainsList ()
Un elenco di output di tensori di rango 1 che indicano i migliori guadagni per ciascuna funzione da dividere per determinati nodi. Vedi sopra per dettagli come forme e dimensioni.
public List < Output <Float>> leftNodeContribsList ()
Un elenco di tensori di rango 2 che indicano il contributo dei nodi di sinistra quando si ramifica dai nodi padre (dato dall'elemento tensore nell'output node_ids_list) alla direzione sinistra dalla soglia data per ciascuna caratteristica. Questo valore verrà utilizzato per creare il valore del nodo sinistro aggiungendolo al valore del nodo padre. La dimensione della seconda dimensione è 1 per i logit monodimensionali, ma sarebbe maggiore per i problemi multi-classe. Vedi sopra per dettagli come forme e dimensioni.
public List < Output <Integer>> nodeIdsList ()
Un elenco di output dei tensori di rango 1 che indicano i possibili ID dei nodi divisi per ciascuna funzione. La lunghezza dell'elenco è num_features, ma ogni tensore ha dimensioni diverse poiché ogni caratteristica fornisce diversi nodi possibili. Vedi sopra per dettagli come forme e dimensioni.
public List < Output <Float>> rightNodeContribsList ()
Un elenco di tensori di rango 2, con la stessa forma / condizioni di left_node_contribs_list, ma solo che il valore è per il nodo destro.
public List < Output <Integer>> soglieList ()
Un elenco di output di tensori di rango 1 che indicano l'ID del bucket da confrontare (come soglia) per la divisione in ciascun nodo. Vedi sopra per dettagli come forme e dimensioni.