これは分類の問題のようです。ターゲットに対する共変量の量がわからないと確信が持てませんが、ニューラル ネットワークは問題を解決しないのでしょうか?
フィードフォワード ニューラル ネットワークを使用し、複数のクラスで動作する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 種類の値があります。これは、列に数値ではなく文字列が含まれている場合に、データフレームによってデフォルトで行われることです。
ここで、列aとbを使用して、 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 には予測が含まれます。