0

私は非常に大きなデータセットに取り組んでいます.(csv)

データセットは、数値列とカテゴリ列の両方で構成されています。

列の1つは私の「ターゲット列」です。つまり、他の列を使用して、(3つの可能な既知の値のうち)どの値が「ターゲット列」にある可能性があるかを判断したいということです。最後に、私の分類と実際のデータを確認してください。

私の質問:

Rを使用しています。

最良の分類を与える機能のサブセットを選択する方法を見つけようとしています。すべてのサブセットを調べることは不可能です。

誰かがアルゴリズムを知っているか、Rでそれを行う方法を考えることができますか?

4

2 に答える 2

2

これは分類の問題のようです。ターゲットに対する共変量の量がわからないと確信が持てませんが、ニューラル ネットワークは問題を解決しないのでしょうか?

フィードフォワード ニューラル ネットワークを使用し、複数のクラスで動作するnnet パッケージを使用できます。因子のみを使用できるため、カテゴリ列を使用しても問題はありません。

データサンプルがなければ、ほんの少ししか説明できませんが、主に次の関数を使用します。

newNet<-nnet(targetColumn~ . ,data=yourDataset, subset=yourDataSubset [..and more values]..)

トレーニング済みのニューラル ネットワークを取得します。ここで重要なことは、正しく取得するのが難しい隠れ層のサイズです。経験則として、入力量 + 出力量 (この場合は 3) の約 2/3 である必要があります。

それから:

myPrediction <- predict(newNet, newdata=yourDataset(with the other subset))

予測値を取得します。それらを評価する方法については、ROCR パッケージを使用していますが、現在は二項分類のみをサポートしています。Google 検索が役立つと思います。

共変量の一部を排除することに固執している場合は、cor() 関数を使用すると、特徴の少ないものを特定するのに役立つ場合があります。

ステップバイステップガイドの編集:

このデータフレームがあるとしましょう:

str(df)
'data.frame':   5 obs. of  3 variables:
 $ a: num  1 2 3 4 5
 $ b: num  1 1.5 2 2.5 3
 $ c: Factor w/ 3 levels "blue","red","yellow": 2 2 1 2 3

cには 3 つのレベル、つまり 3 種類の値があります。これは、列に数値ではなく文字列が含まれている場合に、データフレームによってデフォルトで行われることです。

ここで、列abを使用して、 cがどの値になるかを予測します。ニューラル ネットワークの使用。この例では、nnet パッケージは十分に単純です。インストールしていない場合は、次を使用します。

install.packages("nnet")

次に、それをロードします。

require(nnet)

この後、データのサンプルを使用してニューラル ネットワークをトレーニングします。そのために、関数

部分<-サンプル(1:nrow(df),0.7*nrow(df))

データフレームの行の 70% を部分的に保存します。では、そのネットをトレーニングしましょう。?nnetより深い知識を得るために、nnet パッケージのドキュメントを確認することをお勧めします。基本のみを使用する:

myNet<-nnet( c~ a+b,data=df,subset=portion,size=1)

c~ a+b予測の式です。列 a と b を使用して 列cを予測したいdata=場合は、データの起源を意味します。この場合、データフレーム df は非表示レイヤーのサイズをsubset=自明 です。 size=b) + 総生産量(1)

これで net を学習したので、使用してみましょう。

you を使用predictすると、トレーニング済みのネットが新しい値に使用されます。

newPredictedValues<-predict(myNet,newdata=df[-portion,])

その後、newPredictedValues には予測が含まれます。

于 2013-05-24T07:06:45.303 に答える