5

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

編集:

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

1)classおよびknnflexパッケージの例は少し不明確であり、予測したい変数とモデルのトレーニングに使用したいデータを与える randomForest パッケージに似た実装があるかどうか興味がありました:

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

次に、モデルを使用して、テスト データ セットを使用してデータを予測します。

pred <- predict(RF, testData)

knn2)モデルを構築するためにトレーニングとテストデータが必要な理由がよくわかりません。私が知る限り、パッケージはマトリックス ~ を作成しnrows(trainingData)^2ます。これは、予測データのサイズの上限でもあるようです。5000 行を使用してモデルを作成しました (それ以上では # メモリ割り当てエラーが発生しました) が、5000 行を超えるテスト セットを予測できませんでした。したがって、次のいずれかが必要です。

a)トレーニングセットで5000行以上を使用する方法を見つける

また

b) 完全な 100k 行でモデルを使用する方法を見つけます。

4

1 に答える 1

8

knnクラスで)トレーニングデータとテストデータの両方を要求する理由は、要求しない場合、返される「モデル」は単にトレーニングデータ自体であるためです。

トレーニングデータモデルです。

予測を行うにknnは、テスト観測とトレーニング観測の間の距離を計算します(ただし、すべての距離をチェックしない非常に大きなデータセット用のいくつかの派手なバージョンがあると思います)。したがって、テスト観測が行われるまで、構築するモデルは実際にはありません。

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

ケースの数の制限に関しては、それはあなたが持っている物理的なメモリの量に依存します。メモリ割り当てエラーが発生した場合は、他の場所(アプリを閉じるなど)でRAMの使用量を減らすか、RAMを追加購入するか、新しいコンピューターを購入する必要があります。

クラスknn関数は、8 GBのRAMを持っていますが、10k行以上のトレーニングおよびテストデータセットで正常に実行されます。また、クラスではknnflexよりも高速になると思いますが、広範囲にわたるテストは行っていません。knn

于 2011-11-21T22:33:25.333 に答える