Lập trình bậc hai và Lasso


11

Tôi đang cố gắng thực hiện hồi quy Lasso, có dạng sau:

Thu nhỏ trong( Y - X w ) ' ( Y - X w ) + λw(YXw)(YXw)+λ|w|1

Đưa ra một , tôi được khuyên nên tìm tối ưu với sự trợ giúp của lập trình bậc hai, có dạng sau:wλw

Thu nhỏ trong , tuân theo1xAxb.12xQx+cxAxb.

Bây giờ tôi nhận ra rằng thuật ngữ nên được chuyển thành thuật ngữ ràng buộc , điều này khá đơn giản. Tuy nhiên, bằng cách nào đó tôi không thấy làm thế nào tôi có thể chuyển thuật ngữ đầu tiên của phương trình đầu tiên sang thuật ngữ đầu tiên của thứ hai. Tôi không thể tìm thấy nhiều về nó trên mạng, vì vậy tôi quyết định hỏi ở đây.Một x bλAxb

Câu trả lời:


10

Hãy nhớ rằng chúng tôi đang làm việc với là biến ' ' ở dạng chuẩn, mở rộng và thu thập các thuật ngữ trong và trong và và hằng số.x ( Y - X w ) ' ( Y - X w ) w 'wx(YXw)(YXw)w ww[something]www

Giải thích tại sao bạn có thể bỏ qua các hằng số.

Giải thích tại sao bạn có thể kết hợp các thuật ngữ và . www


Vì BananaCode hiện đã tìm ra một số dẫn đầu trên đường dẫn, bạn có thể viết và hoặc đơn giản hơn, bạn chỉ có thể viết và (vì và có cùng số argmin cho mọi ).c = - 2 X Y Q = X X c = - X Y f ( x ) k f ( x ) k > 0Q=2XXc=2XY Q=XXc=XYf(x)kf(x)k>0


Các hằng số có thể được bỏ qua, vì nếu x_ là giá trị tối thiểu của f (x), thì x_ + c là mức tối thiểu của f (x) + c, do đó chúng ta có thể bỏ qua hằng số c. Tôi sẽ chỉnh sửa câu hỏi của mình để chỉ ra nơi tôi bị mắc kẹt.
spurra

BananaCode giải thích của bạn có một số sai sót. Nếu bởi "là tối thiểu đối với " bạn có nghĩa là "là đối số mà tại đó được thu nhỏ", bạn nói một cái gì đó như " là của ". Nhưng kết luận của bạn là sai. Nếu bạn thêm vào , bạn không thêm vào argmin. f ( x ) x argmin f c f cf(x)f(x)xargminfcfc
Glen_b -Reinstate Monica

Xem nơi tôi đã viết trong câu trả lời của tôi? Cái bây giờ bạn có giữa và ở cuối câu hỏi của bạn ?? w ww[something]www
Glen_b -Reinstate Monica

Vâng, ý tôi là là của . Bạn có thể cho một ví dụ mà kết luận của tôi là sai? Các là ma trận Tôi đang cố gắng để tạo thành. Nếu tôi mở rộng tôi sẽ nhận được . Phần đầu tiên sẽ biểu thị dạng ma trận , tuy nhiên tôi không thể thoát khỏi thuật ngữ thứ hai . a r g m i n f [ s o m e t h i n g ] Q w ( X X w - X Y ) w X X w - w X Y Q - w X ' Yxargminf[something]Qw(XXwXY)wXXwwXYQwXY
spurra

1
@ AD.Net Các ràng buộc chủ yếu được đề cập trong câu trả lời khác.
Glen_b -Reinstate Monica

11

Tôi muốn thêm cách giải quyết chuyển đổi các ràng buộc thành một dạng có thể sử dụng để lập trình bậc hai, vì nó không hoàn toàn đơn giản như tôi nghĩ. Không thể tìm thấy ma trận thực sao cho .Một Một w s Σ | w i | s|wi|sAAws|wi|s

Cách tiếp cận tôi đã sử dụng là chia các phần tử của vectơ thành và , sao cho . Nếu , bạn có và , nếu không bạn cóvà . Hoặc theo thuật ngữ toán học nhiều hơn, vàCả và đều là số không âm. Ý tưởng đằng sau việc chia số lên là bây giờ bạn cówiwwi+wiwi=wi+wiwi0wi+=wiwi=0wi=|wi|wi+=0wi+=|wi|+wi2wi=|wi|wi2.wiwi+|wi|=wi++wi, có hiệu quả thoát khỏi các giá trị tuyệt đối.

Hàm để tối ưu hóa biến thành: , chủ đề đến 12(w+w)TQ(w+w)+cT(w+w)wi++wis,wi+,wi0

Trong đó và được đưa ra như đã nêu ở trên bởi Glen_bQc

Điều này cần phải được chuyển đổi thành một hình thức có thể sử dụng, tức là chúng ta cần một vector. Điều này được thực hiện theo cách sau:

12[w+w]T[QQQQ][w+w]+[cTcT][w+w]

tùy thuộc vào

[IDIDI2D][w+w][sD02D]

Trong đó là ma trận đơn vị , một vectơ -chiều chỉ bao gồm các giá trị và một vectơ 0 chiềuNửa đầu đảm bảo , Bây giờ, nó ở dạng có thể sử dụng để sử dụng lập trình bậc hai để tìm kiếm và , cho . Khi đã xong, tham số tối ưu của bạn đối với là . D s D D s 0 D 2 * D | w i | = w + i + w - is w + i , w - i0 w + w - s s w = w + - w -IDDsDDs0D2D|wi|=wi++wiswi+,wi0w+wssw=w+w

Nguồn và đọc thêm: Giải bài toán lập trình bậc hai với các ràng buộc tuyến tính chứa các giá trị tuyệt đối


Giả sử chúng ta đã tìm thấy một tối ưu vector chiều . Điều gì đảm bảo rằng và thực sự là phần dương và phần âm của một số vectơ , tức là vị trí nhập của chúng khớp với nhau? ( w + , w - ) w + w - w 02D(w+,w)w+ww0
Myath

Ma trận và vectơ trong biểu thức cuối cùng có thể đơn giản hơn, và thực sự chính xác hơn. Thay vì [Id Id] [w + w−] 'Sd bạn có thể đặt đơn giản [1 1 .... 1] [w + w-]' s. Điều này có nghĩa đen tương đương với ∑ | wi | = ∑ (wi + + wi−) ≤ s.
Marko
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.