glmnetでカテゴリ変数をグループ化する


8

次の適合を検討してください。

fit3a=glmnet(x,g4,family="multinomial",type.multinomial="grouped")

どの列xがカテゴリー/多項式であるかを示すにはどうすればよいですか?グループ化された変数のインデックスを指定するオプションはありますか?

ドキュメントでは、オプションtype.multinomialについて次のように説明しています。

「グループ化」されている場合、グループ化されたなげなわペナルティが変数の多項係数に使用されます。これにより、すべてが一緒に私たちの外にあります。デフォルトは「グループ化されていない」です。

回答:


13

glmnet()予期している最初の2つの引数は、予測子の行列(xあなたの場合は)と応答のベクトル(g4あなたの場合は)です。xマトリックスについては、カテゴリ変数をすでにだましてあることを期待しています。言い換えると、glmnet()予測子がすでにダミーになっているため、予測子がカテゴリカルであるかどうかは実際にはわかりません。

データがデータフレーム内にある場合、x行列を作成する適切な方法はmodel.matrix()関数を使用することです。式言語を受け入れ、応答変数を自動的に除外し、因子として定義された予測子のダミー変数を作成します。

family="multinomial"そしてtype.multinomial="grouped"オプションは、2つの以上の可能な結果を有する応答変数を参照します。g4因子として応答変数()を渡すことができます。

パッケージの作成者は、の使用法を説明する素晴らしいビネットを提供していますがglmnet()、残念ながらmodel.matrix()xマトリックスの準備に使用する例は提供していません。


1
パーティーには少し遅れますが、model.matrixを使用した例とともに、glmnetのもう1つの優れた紹介が「統計学習の紹介」に記載されています。www-bcf.usc.edu/~gareth/ISL/ISLR%20First%20Printing.pdf
owen88

12

justmarkhamが指摘しているように、をx使用して計画行列を作成できますmodel.matrix。glmnetにはデフォルトでインターセプトが含まれているため、インターセプトを除外する必要があることに注意してください。デフォルトのコントラスト関数を変更することもできます。デフォルトでは、各因子の1レベルが省略されています(治療コーディング)。しかし、投げ縄のペナルティのため、これは識別可能性のためにもはや必要ではなく、実際、選択された変数の解釈をより複雑にします。これを行うには、

contr.Dummy <- function(contrasts, ...){
   conT <- contr.treatment(contrasts=FALSE, ...)
   conT
}
options(contrasts=c(ordered='contr.Dummy', unordered='contr.Dummy'))

さて、因子のどのレベルが選択されても、省略されたすべてのレベルではなく、これらの特定のレベルが重要であることを示唆していると考えることができます。機械学習では、このコーディングをワンホットエンコーディングと呼びます。

それは仮定しg4ているK、レベルtype.multinomial="grouped"の特徴は、そのオプションが指定するxすべてのそれぞれに対して同時にモデルを入力しますK各クラスの線形予測を有するのとは対照的に、独自の特徴を有する(一般的に)、線形予測器。 glmnet(現在?)予測変数(x行列)のグループ化されたタイプのペナルティをサポートしていません パッケージgrplassoはありますが、純粋なRで書かれているため、よりも低速glmnetですが、試してみることができます。


これについて少し異なる説明をしてもらえますか?:または(ポイントより)おそらくあなたは私の関連する質問への洞察を提供することができstats.stackexchange.com/questions/238623/...
theforestecologist

こんにちは@AndrewM model.matrixです。切片を省略しても、最初のカテゴリ変数からレベルを除外しません。設計行列はglmnetどのような場合でも入力にする必要がありますか?そして、ラッソー回帰の最初のカテゴリ変数の省略されていないレベルをどのように解釈しますか?
ゴールドマンクラーク
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.