Si può fare molto meglio (RMSE ~ 0,04, $ R^2 $> 0.99) per la formazione di singoli alberi su piccoli campioni o bites come Breiman chiamato li
Poiché non v'è una notevole quantità di rumore nei dati di addestramento, questo problema riguarda in realtà il livellamento piuttosto che la generalizzazione. In termini generali di apprendimento automatico ciò richiede una crescente regolarizzazione. Per il discente d'ensemble ciò significa negoziare la forza per la diversità.
La diversità di valori casuali può essere crescente riducendo il numero di funzioni candidate per divisione (mtry
in R) o il set di allenamento di ciascun albero (sampsize
in R). Poiché è disponibile solo 1 dimesione di ingresso, mtry
non aiuta, lasciando sampsize
. Ciò porta a un miglioramento 3,5x in RMSE rispetto alle impostazioni predefinite e un miglioramento di> 6 volte rispetto ai dati di allenamento rumorosi stessi. Poiché l'aumento della divresità significa maggiore variazione nella previsione dei singoli discenti, dobbiamo anche aumentare il numero di alberi per stabilizzare la previsione dell'insieme.
piccoli sacchetti, più alberi :: RMSE = 0.04:
>sd(predict(randomForest(Y~.,data=mat, sampsize=60, nodesize=2,
replace=FALSE, ntree=5000),
mat)
- sin(x))
[1] 0.03912643
impostazioni predefinite :: RMSE = 0.14:
> sd(predict(randomForest(Y~.,data=mat),mat) - sin(x))
[1] 0.1413018
errore a causa del rumore in training set :: rmse = 0 .25
> sd(y - sin(x))
[1] 0.2548882
L'errore a causa del rumore è naturalmente evidente da
noise<-rnorm(1001)
y<-sin(x)+noise/4
Nella suddetta valutazione è stato fatto contro l'insieme di addestramento, come è nella domanda originale.Dal momento che il problema è lisciando piuttosto che la generalizzazione, questo non è così eclatanti come può sembrare, ma è rassicurante vedere che, su valutazione sacchetto mostra una precisione simile:
> sd(predict(randomForest(Y~.,data=mat, sampsize=60, nodesize=2,
replace=FALSE, ntree=5000))
- sin(x))
[1] 0.04059679
Questa è stata una delle opzioni che ho provato, dà un risultato leggermente migliore ma sembra ancora molto male rispetto a svm e nn ... ci deve essere un migliore set di opzioni ... – user1206729
Una delle cose interessanti di l'apprendimento automatico è che non esiste un metodo valido per tutti. Alcuni tipi di algos sono migliori per diversi tipi di dati. Sfortunatamente non ho trovato una fonte che descriva quale sia il metodo migliore per quale set di dati e quindi si basano quasi esclusivamente su tentativi ed errori. – screechOwl