Puede hacer mucho mejor (rmse ~ 0,04, $ R^2 $> 0,99) mediante la formación de los árboles individuales en muestras pequeñas o bites como Breiman los llamó
Dado que existe una cantidad significativa de ruido en los datos de entrenamiento, este problema se trata realmente de suavizar en lugar de generalización. En términos generales de aprendizaje automático, esto requiere una mayor regularización. Para el aprendiz de conjunto esto significa intercambiar fuerza por la diversidad.
La diversidad de randomForests puede aumentar al reducir el número de características candidatas por división (mtry
en R) o el conjunto de entrenamiento de cada árbol (sampsize
en R). Como solo hay 1 entrada dimesion, mtry
no ayuda, dejando sampsize
. Esto lleva a una mejora de 3.5x en RMSE sobre la configuración predeterminada y> 6x de mejora sobre los datos de entrenamiento ruidosos. Dado que una mayor división significa una mayor varianza en la predicción de los alumnos individuales, también necesitamos aumentar la cantidad de árboles para estabilizar la predicción por conjuntos.
pequeñas bolsas, más árboles :: RMSE = 0,04:
>sd(predict(randomForest(Y~.,data=mat, sampsize=60, nodesize=2,
replace=FALSE, ntree=5000),
mat)
- sin(x))
[1] 0.03912643
configuración predeterminada :: RMSE = 0,14:
> sd(predict(randomForest(Y~.,data=mat),mat) - sin(x))
[1] 0.1413018
error debido al ruido en el conjunto de entrenamiento :: rmse = 0 .25
> sd(y - sin(x))
[1] 0.2548882
El error debido al ruido es por supuesto evidente de
noise<-rnorm(1001)
y<-sin(x)+noise/4
En lo anterior la evaluación se está haciendo contra el conjunto de entrenamiento, ya que es en la pregunta original.Dado que el problema es suavizado en lugar de generalización, esto no es tan atroz que pueda parecer, pero es alentador ver que de la evaluación bolsa muestra una precisión similar:
> sd(predict(randomForest(Y~.,data=mat, sampsize=60, nodesize=2,
replace=FALSE, ntree=5000))
- sin(x))
[1] 0.04059679
Esa fue una de las opciones que probé, da un resultado ligeramente mejor pero aún parece muy malo en comparación con svm y nn ... debe haber un mejor conjunto de opciones ... – user1206729
Una de las cosas interesantes sobre el aprendizaje automático es que no hay un método único para todos. Ciertos tipos de algos son mejores para diferentes tipos de datos. Lamentablemente, no he encontrado una fuente que describa qué método es mejor para qué conjunto de datos y, por lo tanto, confío casi exclusivamente en prueba y error. – screechOwl