2011-11-21 7 views
5

私は8つの変数に基づいてデフォルトの確率を予測するために、Rでknnを使用しようとしています(いくつかのパッケージ(knnflexclass)を使用しました)。データセットは8列の約100k行ですが、私のマシンは10k行のサンプルでは問題があるようです。データセット> 50行(つまりiris)でknnを実行するための提案はありますか?R knn large datetet

編集:

明確にするためにいくつかの問題があります。

1)classknnflexパッケージの例は少し不明確であり、あなたはそれをあなたが予測する変数とあなたが使用するデータを与えるランダムフォレストパッケージに似たいくつかの実装があった場合、私は興味がありましたモデルのトレーニング:

RF <- randomForest(x, y, ntree, type,...) 

、その後好転し、テストデータセットを使用してデータを予測するモデルを使用します。

pred <- predict(RF, testData) 

2)knnがtraininを望んでいる、なぜ私は本当に理解していませんよg ANDモデルを構築するためのテストデータ。私が知ることから、パッケージは予測データのサイズの上限であると思われるnrows(trainingData)^2に行列を作成します。 5000行を使用してモデルを作成しましたが(上記の#私はメモリ割り当てエラーがあります)、テストセット> 5000行を予測できませんでした。したがって、私はどちらかの必要があるでしょう:

訓練中A)を使用する方法を見つける> 5000行が

または

Bセット)フル100Kラインでモデルを使用する方法を見つけます。

+0

ちょうどあなたが最終的にどのくらいこれをプッシュすることができましたか? – ktdrv

+0

@ktdrv:私は完全なデータセットを管理すると信じています。私は2つの理由から、 'キャレット'パッケージのknn実装をお勧めします。まず、 'k'パラメータの調整が可能です。第2に、これは私が使用した最速のknnモデルであり、並列化が可能です(ただし、knnのものには大きなピックアップはありませんでした)。 ここには、起動して実行するための説明と例があります。http://www.jstatsoft.org/v28/i05/paper – screechOwl

答えて

8

knnでクラス)は、トレーニングとテストデータの両方を要求している理由は、それがなかった場合は、「モデル」は、それは単にトレーニングデータそのものだろう戻ってくるということです。

トレーニングデータです。予測を行うために

(私はすべての距離をチェックしませんめちゃくちゃ大きなデータセットのためのいくつかの派手なバージョンが存在すると仮定しますが)、knnは各トレーニング観測テスト観測ととの間の距離を算出します。だから、あなたがテストの観察をするまで、本当に構築するモデルはありません。

ipredパッケージには、説明したように構造化された機能が用意されていますが、それらを見ると基本的に「トレーニング」機能で何も起こっていないことがわかります。すべての作業は「予測」機能に含まれています。これらは実際には相互検証を使用してエラー推定に使用されるラッパーとして意図されています。

あなたの物理メモリの量に依存するケースの数に制限があります。あなたは、メモリ割り当てエラーを取得している場合は、どちらか(クローズアプリケーションなど)他の場所であなたのRAMの使用量を削減する必要があり、新しいコンピュータを購入し、より多くのRAMを購入、など

クラスのknn機能実行罰金私は8kbのRAMを持っていますが、10k行以上のトレーニングとテストのデータセットを持っています。また、のクラスは、nnflexよりも高速ですが、私は広範なテストを行っていません。

+0

提案をいただきありがとうございます。 big.matrixやffのようなものは効果的な回避策ですか? – screechOwl

+0

@acesnapおそらく;私は実際にそれらのツールで多くの経験がありません。私があなたの靴の中にいたなら、テストセットを分割して、「認識」して予測を一度に1つずつ作成する最大のチャンクに分割するだけです。 (そしてRAMをもっと買う、それはかなり安い!) – joran

+0

あなたは「クラス」のバージョンが良いと思った。ちょっとフォーマットに取り組むだけでした。あなたの助けと説明に感謝します。 – screechOwl