2016-10-03 12 views
0

私は車両識別番号(VIN)に基づいて車両(モデル)のタイプを予測しようとしています。 VINの最初の10桁には型のことが書かれているので、変数として使用します。私はそれのために、このRコードを使用意思決定ツリーでRの機械学習が遅い

positie_1_tm_3 positie_4 positie_5 positie_6 positie_7 positie_8 positie_9 positie_10   MODEL 
     MBL   B   7   5   L   7   A   6  SKODA YETI 
     JNF   A   A   E   1   1   U   2 NISSAN NOTE 
     VWZ   Z   Z   5   Z   Z   9   4 VOLKSWAGEN FOX 
     F1D   Z   0   V   0   6   4   2 RENAULT MEGANE 
     NAK   U   8   1   1   C   A   5 KIA SORENTO 
     F1B   R   1   J   0   H   4   1 RENAULT CLIO 

:以下のデータの例を参照してください。ツリーを作り、

#make stratisfied train and test set: 
library(caret) 
train.index <- createDataPartition(VIN1$MODEL, p = .6, list = FALSE) 
train <- VIN1[ train.index,] 
overige_data <- VIN1[-train.index,] 
test.index<-createDataPartition(overige_data$MODEL, p = .5, list = FALSE) 
test<-overige_data[test.index,] 
testset2<-overige_data[-test.index,] 

#make decision three : 
library(rpart) 
library(rpart.plot) 
library(rattle) 
library(RColorBrewer) 
tree<- rpart(MODEL ~., train, method="class") 

しかし、最後の1を、すでに2週間以上実行されています。 データセットは約300万行であるため、トレーニングセットは約1,800万行です。それはrpartのためにあまりにも多くのデータか、または別の問題があるので、それはずっと長く実行されていますか?

+0

私はそれがデータセットのサイズだと思う。私は50k x 20のデータフレームで6時間のトレーニングを見ました。ベンチマークのためのより小さいセットでトレーニングすることができますか、またはジョブを複数のマシンに分割できますか?あなたはパラレルモードで走っていますか? – varontron

+0

私はすべてのタイプの車両で訓練しなければならないので、より小さなセットはオプションではなく、複数のマシンにジョブを分割することはできません。私はパラレルモードでの実行に慣れていませんでした。だから私はインターネットでそれについて読んだ。スクリプトをパラレルモードにするのは難しいですが、私はRのプロではありません。しかし、大きなデータでよりうまくやっているrxDTreeアルゴリズムについては何かを見つけました。たぶん私はこのアルゴリズムを試すことができます。しかし、私はそれが革命の有償アルゴリズムだと思っています。したがって、スクリプトを並列実行するためのヒントやサンプルスクリプトがあれば、私は聞いてうれしいです。 – Donald

+0

明確にするために、パフォーマンスを評価するために小さなセットを訓練することを提案しました。あなたはおそらく合計ランタイムを外挿することができますが、1000行を訓練することができます。また、この質問に対する回答を既に暗示していることはわかりましたが(つまり「いいえ」)、次元削減の機会はありますか?クラスタリング?共直線性? – varontron

答えて

0

いいえ、明らかに間違っています。それは長くかかりますが、2週間ではありません。

質問 - いくつのラベル(そこにあるクラス)がありますか?意思決定木は、クラス数が多いときには遅くなる傾向があります(50以上を意味します)。

+0

300から400のクラスの間に、多くの異なる種類の車があります。 ;-) – Donald