問題タブ [glmnet]

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 投票する
1 に答える
567 参照

r - S3とクラスの順序

S3 メソッドがどのように呼び出されるかについてのドキュメントを理解するのにいつも苦労していましたが、今回はそれが私を悩ませています。

複数の質問をすることを前もってお詫びしますが、それらはすべて密接に関連しています。複雑な一連の関数の中心部で、私は多くのglmnetフィット、特にロジスティック フィットを作成します。現在、glmnetドキュメントでは、その戻り値が "glmnet" と (ロジスティック回帰の場合) "lognet" の両方のクラスを持つように指定されています。実際、これらはこの順序で指定されます。

しかし、 の実装の最後を見ると、のクラスを「lognet」に設定glmnetする (内部関数) の呼び出しの直後に、(変数の)リターンの直前に次のコード行が表示されます。lognetfitfit

このことから、クラスの順序は実際には「lognet」、「glmnet」であると結論付けます。

残念ながら、私が持っていたフィット感は(ドキュメントが示唆するように):

これに関する問題は、特に S3 メソッドがディスパッチされる方法predictです。のコードは次のpredict.lognetとおりです。

理由を説明するコメントを追加しました。これmyfitで、新しい datamatrixmydataとを使用して predict を呼び出すとtype="response"、次のようになります。

、私は、ドキュメントに従って、予測された確率を取得しませんが、線形結合を取得します。これは、まさにpredict.glmnetすぐに呼び出した結果です。

次のように、クラスの順序を逆にしてみました。

そして、もう一度予測呼び出しを実行します。見よ、うまくいきました! 確率はわかります

それで、ここにいくつかの質問があります:

  1. S3メソッドはクラスの出現順にディスパッチされることを「学んだ」のは正しいですか?
  2. のコードが glmnet正しいディスパッチのために間違った順序を引き起こすと 仮定するのは正しいpredictですか?
  3. 私のコードでは、私の知る限り、クラスを明示的に/目に見えるように操作するものは何もありません。順序が変更される原因は何ですか?

完全を期すために、ここにいくつかのサンプルコードを示します(私は今自分でやっているように):

生成されたデータに応じて、違いは多かれ少なかれ明らかです (私の実際のデータセットでは、いわゆる確率に負の値があることに気付きました。これが問題を解決した方法です) が、実際には違いが見られるはずです。

ご意見ありがとうございます。

編集

私は恐ろしい真実を発見しました: どちらの順序も glmnet 1.5.2 (実際のコードを実行したサーバー上に存在するため、クラスの順序が逆になっている) で機能しましたが、1.6 のコードでは次の順序が必要です。 「lognet」、「glmnet」になります。1.7で何が起こるかはまだ確認していません。

情報学の基本を思い出させてくれた@Aaronに感謝します(「他のすべてが失敗した場合は、再起動する」:「バージョンを確認する」以外に)。私は、統計学習の神々によるパッケージはこの種のエラーから保護されると誤って想定していました)、そして S3 の仕組みを再構築したことを確認してくれた @Gavin に感謝します。

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

r - glmnetと2つのクラスを使用している場合、caretのtrain関数でエラーが発生しました

次のコードブロックは失敗しますが、理由はわかりません。

次のエラーが発生します。

正常に動作するなど、別のモデルにサブサブする場合glm。3つのクラスを使用すると、、TrainClasses <- iris[,5]も正常に機能します。

glmnetメソッドが失敗する原因となっている2つのクラスはどうですか?

これは、Windows上のRバージョン2.14.0、caretバージョン5.09-006です。同じエラーが私のMacとLinuxで発生します。

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

r - R glmnet : "(リスト) オブジェクトを型 'double' に強制することはできません"

glmnetデータセットでパッケージを使用しようとしています。cv.glmnet()のラムダ値を取得するために使用していますglmnet()。データセットとエラー メッセージは次のとおりです。

列 1、2、7、12 をそのまま除外しています: id 列、応答列、NA を含み、NA を含みます。どんな提案も素晴らしいでしょう。

0 投票する
3 に答える
26223 参照

r - R glmnet as.matrix() エラー メッセージ

glmnetデータセットでパッケージを使用しようとしています。cv.glmnet()のラムダ値を取得するために使用していますglmnet()。列 1、2、7、12 をそのまま除外しています: id 列、応答列、NA を含み、NA を含みます。

データセットとエラー メッセージは次のとおりです。

助言がありますか?

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

r - NAを処理できるRパッケージ/モデル

NAのインスタンスがある行または列を無視するのではなく、NAを処理できるRパッケージまたは機械学習モデル/アルゴリズム( 、、、などrandomForest)を探しています。私は帰属するつもりはありません。助言がありますか?glmnetgbdt

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

r - R glmnet オブジェクトから予測クラスを取得する

R で glmnet を使用して単純なマルチクラス ロジスティック回帰モデルを構築しようとしています。ただし、テスト データを予測して分割表を取得しようとすると、エラーが発生します。サンプルセッションを以下に再現します。

どんな助けでも大歓迎です。ここでR noob。

ありがとう。

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

r - Windowsでglmnetのコンパイルに失敗しました

RパッケージのglmnetはWindows用のバイナリを提供していないため、OSwin764ビットでコンパイルする必要があります。どのように私はこのエラーメッセージを受け取りました:

また、Windows XP 32ビットでコンパイルしようとしましたが、「パッケージglmnetの構成に失敗しました」というエラーメッセージが表示されます。

誰かがWindowsでglmnetをコンパイルすることに成功しましたか?

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

r - R glmnet family=0-1以外の二項予測値

0〜1の値を予測する、正則化されたロジスティック回帰のパッケージをRで見つけようとしていますが、パッケージを試した後、larsパッケージを試したので、あまり運がありませんでしたglmnet

以下は、glmnetパッケージのリファレンスマニュアルの例のコードですが、出力がわかりません。

出力がすべて0-1の範囲内にない理由がわかりません。

私はここで何かを誤解していますか?

正則化されたロジスティック回帰のための使いやすいパッケージを誰かが推奨できますか?

ありがとう。

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

r - Rのglmnetの係数名の解釈

次のコードを使用して、glmnet を使用して、5 つの機能のセットに基づいて確率を予測しています。別の(Rではない)プログラムで使用する必要があるため、実際の式が必要です。

結果の係数の名前には 5 つの位置があり (これは各機能の 1 つだと思います)、それぞれの位置は 0 から 3 の間の数値です (これは多項式の次数だと思います)。しかし、式を正確に再構築する方法についてはまだ混乱しています。

たとえば、次のとおりです。

機能を A、B、C、D、E と呼びましょう。これは式をどのように解釈するべきですか?

それが正しくない場合、どのように解釈すればよいですか?

次の質問と回答を見ましたが、これらのタイプの係数名には対応していませんでした。

よろしくお願いします。

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

r - glmnet/scikit 学習係数行列サイズ

scikit Learnでは、ロジスティック回帰モデルの係数coef_は次元[n_classes-1、n_features]の配列です。

glmnet係数はfit$beta同様の配列ではありません。

例えば:

寸法xMatrix- 63231 X 1223 (トレーニング サンプル数 X 特徴数)

yMatrix- 63231 X 1の次元(トレーニング サンプルの数 X 各サンプルの期待される出力値)。45の異なるクラスがあります。したがって、出力はそれらのいずれかです。

出力係数の次元 (私が理解していることから) = 1223 X 45 (機能の数 X クラスの数)

私はscikit Learnで正しく理解していますが、結果はglmnet異なります

これが私のglmnetコードです:

1223 X 45 ではなく 1223 X 86 になるのはなぜですか?