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
ですが、試してみることができます。