ランダムフォレストは、MNISTの2.8%テストエラーよりもはるかに優れていますか?


9

ランダムフォレストのMNIST、CIFAR、STL-10などへの適用に関する文献は見つかりませんでしたので、順列不変の MNISTを自分で試してみようと思いました。

ではR、私が試しました:

randomForest(train$x, factor(train$y), test$x, factor(test$y), ntree=500)

これは2時間実行され、2.8%のテストエラーが発生しました。

私はまた、scikit-learnを試しました

RandomForestClassifier(n_estimators=2000,
                       max_features="auto", 
                       max_depth=None)

70分後、2.9%のテストエラーが発生しましたが、代わりにn_estimators = 200を使用すると、わずか7分後に2.8%のテストエラーが発生しました。

OpenCVの、私が試しました

rf.train(images.reshape(-1, 28**2), 
         cv2.CV_ROW_SAMPLE, 
         labels.astype('int'))

これは6.5分間実行されrf、予測に使用すると15%のテストエラーが発生しました。params少なくともバージョン2.3.1では、ランダムフォレストへのPythonバインディングが引数を無視しているように見えるため、トレーニングしたツリーの数はわかりません。また、OpenCVに、回帰ではなく分類の問題を解決したいことを明確にする方法を理解できませんでした-に置き換えastype('int')astype('float32')も同じ結果が得られるため、疑問があります。

ではニューラルネットワークのための順列不変のトレーニングは、おそらく一つのCPUに2時間以上かかるだろうが、MNISTベンチマーク、芸術の状態は、0.8%のテストエラーです。

ランダムフォレストを使用してMNISTで2.8%のテストエラーをはるかに上回ることは可能ですか?私は、一般的なコンセンサスは、ランダムフォレストは通常​​カーネルSVMと少なくとも同等であり、1.4%のテストエラーが発生する可能性があると考えていました。


5
ランダムフォレストは、一度に決定1変数(つまり、ピクセル)をとることを思い出してください。したがって、画像処理にはあまり適していません。最初に、何らかの前処理(PCAなど)を使用して、より意味のある決定変数を開発することをお
勧めし

まさにseanv507が言ったこと。OpenCVには、ランダムフォレストを操作するための非常に有用な説明変数を検出できる機能抽出のための多くの関数があります。
JEquihua 2013

3
一般的なコンセンサスは、ランダムフォレストは通常​​、カーネルSVMと少なくとも同じくらい優れているということでした。そのようなコンセンサスはありません。
Marc Claesen、2014年

回答:


14

ランダムフォレストを使用してMNISTで2.8%のテストエラーをはるかに上回ることは可能ですか?

おそらくそうだ。ただし、これは、デフォルトで取得する機能と同じ機能を使用するという意味ではありません。一度に1つのフィーチャのみを分割するため、ディシジョンツリーは一般に、このような高次元の問題ではうまく機能しません。ランダムフォレストは、ディシジョンツリーの有用性を拡張しますが、同じ問題があります。RFで2.8%を超えるには、いくつかの機能の前処理を実行し、機能をより有用なサブセットに変換する必要があります。

ニューラルネットワークとカーネルSVMは、いくつかの機能変換/エンジニアリングを暗黙的に行っています。したがって、ある意味で、ランダムフォレストが余計な作業をせずにきちんと近づくのは印象的です(実際にRFが人気になった本当の理由は、「十分な」結果を得るのが愚かに簡単だったからです)。

一般的なコンセンサスは、ランダムフォレストは通常​​、カーネルSVMと少なくとも同じくらい優れているということでした。

そのようなコンセンサスはありません。精度の点では同じような結果になることがよくありますが、長所と短所が異なる非常に異なるアルゴリズムです。多くの問題で精度は同様です。他のSVMはかなりのマージンで勝ち、一部のRFはかなりのマージンで勝ちます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.