問題タブ [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.
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() 出力:
質問:
Rstudio
デフォルトの R コンソールと Rstudio の 2 つの sessionInfo() 出力に基づいて、デフォルトの R コンソールでうまく機能したため、 との相互作用が必要です。違いはcompiler
パッケージでした。 奇妙なことに、この pkg はCRANでは見つかりません。ここでメモを見つけました: Rstudio: 次のエラー メッセージで実行できませんでした:エラー: パッケージ 'compiler' は R 3.0.0 より前にビルドされました: 再インストールしてください
更新
コンパイラ パッケージ ライブラリをデフォルトの R lib パスから Rstudio lib パスにコピー アンド ペーストした後、最終的に Rstudio で動作しましたが、それでも時間が長すぎます (約 8 分)。並列処理の別の質問を投稿します。以下のハードウェアとウィンドウがあれば、答えをより早く見つけるのに役立つ場合があります。
- 私のラップトップは 2.1GHz デュアル コア プロセッサ、3GB、windows 32bitですが、
train()
関数で並列処理を行う方法はありますか? このための R コードを発行していただけますか。本当に感謝いたします。
r - キャレットの train 関数は AMORE の同じ関数によってマスクされ、キャレットを使用して "AMORE" メソッドを機能させることはできません
Rstudioで実行したコードは次のとおりです。
出力は次のようになります。
警告メッセージは、「AMORE」パッケージの「train」機能に関連しています。入力すると
上記のコードを実行した後のコマンド ウィンドウで、AMORE パッケージから明らかなこの関数の本体を取得します。
私は自分のパスを検索しましたが、キャレットの前に AMORE が表示されているようです:
以下は私のセッション情報です:
Rが「AMORE」ではなく「キャレット」で「train」機能を使用するようにするには、どうすれば問題を解決できますか? お時間をいただきありがとうございます。ご協力いただきありがとうございます。
JT
r - キャレット rfe での特徴選択 + ROC による合計
キャレットパッケージを使用して再帰的な機能選択を適用しようとしています。私が必要としているのは、ref がパフォーマンスの尺度として AUC を使用することです。1か月間グーグルした後、プロセスを機能させることができません。これが私が使用したコードです:
このスクリプトを実行すると、次の結果が得られます。
このプロセスでは、パフォーマンスの尺度として常に精度が使用されます。発生する別の問題は、次を使用して取得したモデルから予測を取得しようとするときです。
次のメッセージが表示されます
モデルから何らかの予測を得ることが不可能であることが判明しました。
で得た情報はこちらsessionInfo()
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 です):
r - キャレットパッケージによるGBM分類
キャレットの train 関数を使用して GBM 分類モデルに適合させる場合、関数 predictFunction は確率的予測を 0.5 の確率しきい値に基づいて因子に変換します。
ユーザーが ROC 曲線 (AUROC) の下の領域を最大化しようとしている場合、この変換は時期尚早に見えます。感度と特異度は単一の確率しきい値に対応しますが (したがって因子予測が必要です)、gbmPredict からの生の確率出力を使用して AUROC を計算することをお勧めします。私の経験では、分類モデルのキャリブレーションを気にしたことはほとんどありません。モデルが「1」対「0」を予測する確率しきい値に関係なく、可能な限り最も有益なモデルが必要です。生の確率を AUROC 計算に強制することは可能ですか? どの集計関数を使用しても、すでにバイナリである予測が渡されるため、これは難しいようです。
r - CARET パッケージでの重要度に基づく機能の並べ替え
caret
関連するパッケージとヘルプ システムには、次のvarImp()
ものがあります。
偏最小二乗法: ここでの変数の重要度の尺度は、絶対回帰係数の加重和に基づいています。重みは、PLS コンポーネントの数にわたる二乗和の減少の関数であり、結果ごとに個別に計算されます。したがって、係数の寄与は、二乗和の減少に比例して重み付けされます。
caret
以下は、パッケージごとの分類モデルの変数重要度の出力ですmethod="pls"
。
それは問題ありませんが、このデータ フレームを次のコード行で抽出すると、次のようになります。
上記と同じですが、ソートされていません。ソートされていればとてもいいでしょう。とにかく、クラス全体の平均重要度に基づいてこのデータ フレームを並べ替えるには (出力に示されているように)、次のようにしました。
そのため、関数を介してソートされたリストとは異なるバージョンになりました。ここで何か不足していますか?ありがとう。 caret
varImp()
注: PLSDA モデルを呼び出すための引数を
渡しませんでした。 importance = TRUE
train()
method = "pls"
$重要度
質問:
クラス全体の重要性を測定する方法は? ソートされvarImp()
ていない出力を信頼できますか?
EDIT:変数の重要性をランク付け
する方法:max()
と同じ結果になりましたvarImp()
:
これが得られました:
sum()
しかし、クラス間で重要度を使用すると、異なるランキングが得られました (上記を参照)。では、どちらが正しいで、max()
メソッドが同点の場合はどうなるでしょうか?