Kurz gesagt, ja - das wird die Dummy-Variablen standardisieren, aber es gibt einen Grund dafür. Die glmnet
Funktion nimmt eine Matrix als Eingabe für ihren X
Parameter, nicht einen Datenrahmen, so dass sie nicht für factor
Spalten unterscheidet, die Sie haben könnten, wenn der Parameter ein data.frame
wäre. Wenn Sie einen Blick auf die R-Funktion, glmnet Codes der standardize
Parameter intern als
isd = as.integer(standardize)
dem die R boolean auf einen 0 oder 1 ganze Zahl umwandelt einem der internen FORTRAN Funktionen zuzuführen (ELNET, LogNet, et ..! al)
Wenn Sie noch weiter gehen, indem der Fortran-Code (feste Breite Prüfung - alte Schule), werden Sie den folgenden Block sehen:
subroutine standard1 (no,ni,x,y,w,isd,intr,ju,xm,xs,ym,ys,xv,jerr) 989
real x(no,ni),y(no),w(no),xm(ni),xs(ni),xv(ni) 989
integer ju(ni) 990
real, dimension (:), allocatable :: v
allocate(v(1:no),stat=jerr) 993
if(jerr.ne.0) return 994
w=w/sum(w) 994
v=sqrt(w) 995
if(intr .ne. 0)goto 10651 995
ym=0.0 995
y=v*y 996
ys=sqrt(dot_product(y,y)-dot_product(v,y)**2) 996
y=y/ys 997
10660 do 10661 j=1,ni 997
if(ju(j).eq.0)goto 10661 997
xm(j)=0.0 997
x(:,j)=v*x(:,j) 998
xv(j)=dot_product(x(:,j),x(:,j)) 999
if(isd .eq. 0)goto 10681 999
xbq=dot_product(v,x(:,j))**2 999
vc=xv(j)-xbq 1000
xs(j)=sqrt(vc) 1000
x(:,j)=x(:,j)/xs(j) 1000
xv(j)=1.0+xbq/vc 1001
goto 10691 1002
einen Blick auf die Linien nehmen markiert 1000 - Hier wird im Wesentlichen die Standardisierungsformel auf t angewendet er X
Matrix.
Jetzt standardisiert man kategorische Variablen im Allgemeinen nicht, um die Interpretierbarkeit der geschätzten Regressoren beizubehalten. Wie jedoch von Tibshirani here ausgeführt, "erfordert die Lasso-Methode eine anfängliche Standardisierung der Regressoren, so dass das Bestrafungsschema für alle Regressoren angemessen ist. Bei kategorischen Regressoren kodiert man den Regressor mit Dummy-Variablen und standardisiert dann die Dummy-Variablen" Während dies eine willkürliche Skalierung zwischen kontinuierlichen und kategorischen Variablen bewirkt, wird dies für eine gleichwertige Bestrafung getan.
Warum machst du all diese zusätzliche Arbeit? –
@DWin Ich sehe keinen anderen Weg. Wenn glmnet nicht diskriminiert, muss ich es tun. Wie ich gerade geschrieben habe, wenn wir einen Koeffizienten für eine standardisierte Dummy-Variable nicht interpretieren können, muss ich vor der Standardisierung Dummies von Nicht-Dummies trennen. –