Tóm lại, có - điều này sẽ chuẩn hóa các biến giả, nhưng có lý do để làm như vậy. Hàm glmnet
lấy một ma trận làm đầu vào cho tham số X
của nó, không phải là khung dữ liệu, do đó, nó không tạo sự khác biệt cho các cột factor
mà bạn có thể có nếu thông số là data.frame
. Nếu bạn có một cái nhìn tại các chức năng R, mã glmnet các standardize
tham số trong nội bộ như
isd = as.integer(standardize)
nào chuyển đổi boolean R để 0 hoặc 1 số nguyên để nuôi với bất kỳ chức năng FORTRAN nội (elnet, lognet, et ..! al)
Nếu bạn đi xa hơn nữa bằng cách kiểm tra mã FORTRAN (cố định chiều rộng - trường cũ), bạn sẽ thấy các khối sau:
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
hãy nhìn vào các đường đánh dấu 1000 - về cơ bản là áp dụng công thức chuẩn hóa cho t ma trận X
.
Hiện tại, theo thống kê, thường không chuẩn hóa các biến phân loại để duy trì tính giải nghĩa của các biến hồi quy ước tính. Tuy nhiên, như đã được chỉ ra bởi Tibshirani here, "Phương pháp Lasso yêu cầu chuẩn hóa ban đầu của các biến hồi quy, để sơ đồ phạt là công bằng cho tất cả các biến hồi quy. Đối với các biến hồi quy phân loại, một mã trả về biến giả và sau đó chuẩn hóa các biến giả" - do đó, trong khi điều này gây ra sự phân chia tùy ý giữa các biến liên tục và phân loại, nó được thực hiện cho việc xử lý xử phạt bằng nhau.
Tại sao bạn làm tất cả công việc phụ đó? –
@DWin Tôi không thấy cách nào khác. Nếu glmnet không phân biệt đối xử thì tôi cần. Như tôi vừa mới đăng dưới đây, nếu chúng ta không thể diễn giải một hệ số trên một biến giả chuẩn hóa, thì tôi cần phải tách riêng các núm vú giả từ các không giả trước khi chuẩn hóa. –