У меня есть набор данных с именем Data
, с 30 масштабированными и центрированными объектами и 1 результатом с именем столбца OUTCOME
, относящимся к 700k записям, хранящимся в формате data.table
.Я вычислил его PCA и заметил, что его первые 8 компонентов составляют 95% дисперсии.Я хочу обучить случайный лес в h2o
, вот что я делаю:
Data.pca=prcomp(Data,retx=TRUE) # compute the PCA of Data
Data.rotated=as.data.table(Data.pca$x)[,c(1:8)] # keep only first 8 components
Data.dump=cbind(Data.rotated,subset(Data,select=c(OUTCOME))) # PCA dataset plus outcomes for training
Таким образом, у меня есть набор данных Data.dump
, где у меня есть 8 функций, которые вращаются на компонентах PCA,и в каждой записи я связывал его результат.
Первый вопрос: это рационально?или я должен как-то переставлять вектор результатов?или две вещи не связаны?
Затем я разделил Data.dump
на два комплекта, Data.train
для обучения и Data.test
для тестирования, все as.h2o
.Я передаю их в случайный лес:
rf=h2o.randomForest(training_frame=Data.train,x=1:8,y=9,stopping_rounds=2,
ntrees=200,score_each_iteration=T,seed=1000000)
rf.pred=as.data.table(h2o.predict(rf,Data.test))
В результате получается, что rf.pred
не очень похож на первоначальные результаты Data.test$OUTCOME
.Я также пытался обучить нейронную сеть и даже не сходился, приводя к сбою R.
Второй вопрос: это потому, что я продолжаю совершать ошибку из-за лечения PCA?или потому что я плохо настроил случайный лес?Или я просто имею дело с раздражающими данными?
Я не знаю с чего начать, так как я новичок в науке о данных, но рабочий процесс мне кажется правильным.
Заранее большое спасибо.