問題タブ [r-caret]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
4900 参照

r - Rstudio内からキャレットパッケージのtrain()関数を取得するための回避策はありますか?

Max Kuhn と Kjell Johnson による非常に優れた本「Applied Predictive Modeling」の例を見て回っていましたが、残念ながら、train()関数を使用した例の 1 つと、サポートの相互検証用パッケージGermanCreditによって提供されたデータセットの 1 つに行き詰まりました。caretベクター マシン:

そして、このエラーがスローされました:

時々このエラーメッセージ:

makeCenv()それから、並列計算または並列処理の代替として提案されたパッケージに含まれていることを知りましたdoMCが、Windows プラットフォームでは使用できないため、このパッケージには行かないでしょう。代替案はありますか?

更新: これらのエラーは、コードが で実行された場合にのみRstudio IDE表示されました。デフォルトの R コンソールからは問題がなかったため、問題は Rstudio に限定されていると思います。R コンソールでは少し時間がかかりましたが (約 8 分)、以下に示すハードウェア スペックを考えると、どうすれば高速化できるのでしょうか。

私の sessioninfo() 出力はここにあります (Rstudio):

デフォルトの R コンソールからの sessionInfo() 出力:

質問:

  1. Rstudioデフォルトの R コンソールと Rstudio の 2 つの sessionInfo() 出力に基づいて、デフォルトの R コンソールでうまく機能したため、 との相互作用が必要です。違いはcompilerパッケージでした。 奇妙なことに、この pkg はCRANでは見つかりません。ここでメモを見つけました: Rstudio: 次のエラー メッセージで実行できませんでした:

    エラー: パッケージ 'compiler' は R 3.0.0 より前にビルドされました: 再インストールしてください

更新
コンパイラ パッケージ ライブラリをデフォルトの R lib パスから Rstudio lib パスにコピー アンド ペーストした後、最終的に Rstudio で動作しましたが、それでも時間が長すぎます (約 8 分)。並列処理の別の質問を投稿します。以下のハードウェアとウィンドウがあれば、答えをより早く見つけるのに役立つ場合があります。

  1. 私のラップトップは 2.1GHz デュアル コア プロセッサ、3GB、windows 32bitですが、train()関数で並列処理を行う方法はありますか? このための R コードを発行していただけますか。本当に感謝いたします。
0 投票する
2 に答える
512 参照

r - キャレットの train 関数は AMORE の同じ関数によってマスクされ、キャレットを使用して "AMORE" メソッドを機能させることはできません

Rstudioで実行したコードは次のとおりです。

出力は次のようになります。

警告メッセージは、「AMORE」パッケージの「train」機能に関連しています。入力すると

上記のコードを実行した後のコマンド ウィンドウで、AMORE パッケージから明らかなこの関数の本体を取得します。

私は自分のパスを検索しましたが、キャレットの前に AMORE が表示されているようです:

以下は私のセッション情報です:

Rが「AMORE」ではなく「キャレット」で「train」機能を使用するようにするには、どうすれば問題を解決できますか? お時間をいただきありがとうございます。ご協力いただきありがとうございます。

JT

0 投票する
1 に答える
6873 参照

r - キャレット rfe での特徴選択 + ROC による合計

キャレットパッケージを使用して再帰的な機能選択を適用しようとしています。私が必要としているのは、ref がパフォーマンスの尺度として AUC を使用することです。1か月間グーグルした後、プロセスを機能させることができません。これが私が使用したコードです:

このスクリプトを実行すると、次の結果が得られます。

このプロセスでは、パフォーマンスの尺度として常に精度が使用されます。発生する別の問題は、次を使用して取得したモデルから予測を取得しようとするときです。

次のメッセージが表示されます

モデルから何らかの予測を得ることが不可能であることが判明しました。

で得た情報はこちらsessionInfo()

0 投票する
1 に答える
15230 参照

r - Rでの分類にキャレットを使用したpredict(model)とpredict(model$finalModel)の違い

違いは何ですか

私はモデルを訓練しますpreProcess=c("center", "scale")

そして、中央に配置されスケーリングされたテストセットで実行すると、真陽性は0です

しかし、スケーリングされていないテストセットで実行すると、いくつかの真陽性を受け取ります。rf$finalModel を使用して、中央に配置されスケーリングされた testSet で真のポジティブを受け取り、スケーリングされていないテストセットで rf オブジェクトを受け取る必要があります...何が欠けていますか?


編集

テスト:

通常のテストセット:

中央に配置され、スケーリングされた testSetCS:

$finalModel は同じ形式の trainingSet と testSet を必要とするように見えますが、トレーニングされたオブジェクトは、選択された preProcess パラメータに関係なく、中心化されていないデータとスケーリングされていないデータのみを受け入れますか?

予測コード (ここで、testSet は通常のデータで、testSetCS は centered および scaled です):

0 投票する
1 に答える
5706 参照

r - キャレットパッケージによるGBM分類

キャレットの train 関数を使用して GBM 分類モデルに適合させる場合、関数 predictFunction は確率的予測を 0.5 の確率しきい値に基づいて因子に変換します。

ユーザーが ROC 曲線 (AUROC) の下の領域を最大化しようとしている場合、この変換は時期尚早に見えます。感度と特異度は単一の確率しきい値に対応しますが (したがって因子予測が必要です)、gbmPredict からの生の確率出力を使用して AUROC を計算することをお勧めします。私の経験では、分類モデルのキャリブレーションを気にしたことはほとんどありません。モデルが「1」対「0」を予測する確率しきい値に関係なく、可能な限り最も有益なモデルが必要です。生の確率を AUROC 計算に強制することは可能ですか? どの集計関数を使用しても、すでにバイナリである予測が渡されるため、これは難しいようです。

0 投票する
2 に答える
5106 参照

r - CARET パッケージでの重要度に基づく機能の並べ替え

caret関連するパッケージとヘルプ システムには、次のvarImp()ものがあります。

偏最小二乗法: ここでの変数の重要度の尺度は、絶対回帰係数の加重和に基づいています。重みは、PLS コンポーネントの数にわたる二乗和の減少の関数であり、結果ごとに個別に計算されます。したがって、係数の寄与は、二乗和の減少に比例して重み付けされます。

caret以下は、パッケージごとの分類モデルの変数重要度の出力ですmethod="pls"

それは問題ありませんが、このデータ フレームを次のコード行で抽出すると、次のようになります。

上記と同じですが、ソートされていません。ソートされていればとてもいいでしょう。とにかく、クラス全体の平均重要度に基づいてこのデータ フレームを並べ替えるには (出力に示されているように)、次のようにしました。

そのため、関数を介してソートされたリストとは異なるバージョンになりました。ここで何か不足していますか?ありがとう。 caretvarImp()

注: PLSDA モデルを呼び出すための引数を
渡しませんでした。 importance = TRUEtrain()method = "pls"

$重要度

質問:

クラス全体の重要性を測定する方法は? ソートされvarImp()ていない出力を信頼できますか?

EDIT:変数の重要性をランク付け
する方法:max()

と同じ結果になりましたvarImp():

これが得られました:

sum()しかし、クラス間で重要度を使用すると、異なるランキングが得られました (上記を参照)。では、どちらが正しいで、max()メソッドが同点の場合はどうなるでしょうか?

0 投票する
1 に答える
1814 参照

r - R のキャレット パッケージの rfe() の ROC

R のキャレット パッケージを使用して、分類用の放射基底 SVM をトレーニングしています。さらに、変数の選択には線形 SVM が使用されます。metric="Accuracy" では問題なく動作しますが、最終的には metric="ROC" を最適化することにもっと興味があります。適合するすべてのモデルについて ROC が計算されますが、ROC 値の集計には問題があるようです。

以下はコードの例です。

最終的な出力は次のとおりです。

ROC は NaN です。出力を検査すると (verbose=T であり、summary 関数がその出力と入力の一部の両方を表示するようにパッチされているため)、内側のループで SVM を調整すると、ROC が正しく計算されているように見えることがわかります。

外側の繰り返しに問題があるようです。2 つの折り畳みの「間」では、次のようになります。

したがって、ここでは、要約関数の入力は、クラスの確率ではなく変数の数を含む行列であるため、ROC を正しく計算/集計することはできません。これを防ぐ方法を知っている人はいますか?どこかでクラスの確率を出力するようにキャレットに指示するのを忘れましたか?

キャレットは本当にクールなパッケージであり、これを正しく実行できれば多くの作業を節約できるので、助けていただければ幸いです。

トラルフ

0 投票する
0 に答える
1322 参照

r - キャレット: マルチクラス分類の重要度スコア

caret教師付き分類に R パッケージのランダム フォレスト モデルを使用しています。重要度スコアは次のとおりです。

しかし、機能を平均重要度スコアで手動で並べ替えたところ、結果は異なりました。

これはバグですか、それとも何か不足していますか?

0 投票する
1 に答える
4552 参照

r - Rの地球(MARS)とキャレットによる「応答」予測

これがあまりにも素朴な質問ではないことを願っています。Rのパッケージに含まれるさまざまなモデルを使用して、一連の二項回帰を実行していcaretます。これまでのところ、地球(MARS)を除いてすべて機能しています。通常、ファミリは関数 asを介して関数earthに渡されます。これは正常に機能しているようです (以下で明らかなように)。一般的な関数については、 を使用して予測を適切にスケーリングします。以下の例は、 の正しい予測を使用した非キャレット アプローチを示しています。 なしで不適切にスケーリングされた予測です。 はアプローチであり、予測です。の非スケーリング予測と同じです。を掘り下げるglmearthglm=list(family=binomial)predict()type="response'fit1pred1pred1atype='response'fit2caretpred2pred1afit2適切に適合された値がglm.listコンポーネントに存在します。したがって、earth()関数は正常に動作しています。

問題は...caret prediction()関数は のみを取るのでtype='prob' or 'raw'、応答のスケールで予測するように指示するにはどうすればよいですか?

どうもありがとうございました。

0 投票する
0 に答える
102 参照

r - R のメモリの問題

350k の観測値と 3 つの機能 (3 つすべてが 40、50、100 レベルのカテゴリ) を含むトレーニング セットで k-NN モデルをトレーニングしようとしています。ターゲット ベクトルが連続しているため、caret パッケージの knnreg を使用しています。

私のマシンはかなり弱く、4 GB の RAM を搭載しています。同じデータセットで他のアルゴリズムも試しましたが、同様のエラーが発生しました。

予測関数を実行するとエラーが発生することに、私はそれほど驚いていません。この例では、1 つの観測のみを実行しています。

  1. 予測関数 (knnreg ではなく) を実行するとエラーが発生するのはなぜですか?
  2. これを回避する方法はありますか?