Làm thế nào để người học cơ sở tuyến tính làm việc trong việc thúc đẩy? Và nó hoạt động như thế nào trong thư viện xgboost?


9

Tôi biết cách triển khai chức năng mục tiêu tuyến tính và tăng tuyến tính trong XGBoost. Câu hỏi cụ thể của tôi là: khi thuật toán phù hợp với phần dư (hoặc độ dốc âm) là nó sử dụng một tính năng ở mỗi bước (tức là mô hình đơn biến) hay tất cả các tính năng (mô hình đa biến)?

Mọi tham chiếu đến tài liệu về các mức tăng tuyến tính trong XGBoost sẽ được đánh giá cao.

EDIT: Tăng cường tuyến tính có thể được triển khai trong XGBoost bằng cách đặt tham số 'booster' thành 'gblinear'. Xem: http://www.ncbi.nlm.nih.gov/pmc/articles/PMC3885826/ để biết thông tin hữu ích về việc tăng tuyến tính. Lưu ý rằng tôi không nói về hàm mục tiêu (cũng có thể là tuyến tính) mà là về sự tăng cường của chúng.

Cảm ơn!


1
Tôi không biết nó được triển khai như thế nào nhưng tôi không thấy lý do tại sao nó chỉ nên xem xét một tính năng tại một thời điểm
Alexey Grigorev

@AlexeyGrigorev có lẽ cần nhiều tính năng cùng một lúc, nhưng sau đó, các tính năng này được chọn như thế nào? Bất kỳ tài liệu nào về quy trình cụ thể để tăng cường tuyến tính sẽ rất rõ ràng.
Người đi bộ

Câu trả lời:


17

Câu trả lời ngắn cho bạn câu hỏi:

khi thuật toán phù hợp với phần dư (hoặc độ dốc âm) là nó sử dụng một tính năng ở mỗi bước (tức là mô hình đơn biến) hoặc tất cả các tính năng (mô hình đa biến)?

Thuật toán đang sử dụng một tính năng hoặc tất cả các tính năng tùy thuộc vào thiết lập của bạn. Trong câu trả lời dài của tôi được liệt kê dưới đây, trong cả hai ví dụ về người học quyết định và người học tuyến tính, họ sử dụng tất cả các tính năng, nhưng nếu bạn muốn, bạn cũng có thể phù hợp với một tập hợp các tính năng. Các cột lấy mẫu (tính năng) được xem là làm giảm phương sai của mô hình hoặc tăng "độ mạnh" của mô hình, đặc biệt nếu bạn có số lượng lớn các tính năng.

Trong xgboost, đối với người học cơ sở cây, bạn có thể đặt colsample_bytreethành các tính năng mẫu để phù hợp với mỗi lần lặp. Đối với người học cơ sở tuyến tính, không có các tùy chọn như vậy, vì vậy, nó phải phù hợp với tất cả các tính năng. Ngoài ra, không có quá nhiều người sử dụng người học tuyến tính trong xgboost hoặc tăng cường độ dốc nói chung.


Câu trả lời dài cho tuyến tính là người học yếu để thúc đẩy:

Trong hầu hết các trường hợp, chúng tôi không thể sử dụng người học tuyến tính như một người học cơ sở. Lý do rất đơn giản: thêm nhiều mô hình tuyến tính với nhau vẫn sẽ là một mô hình tuyến tính.

Trong việc thúc đẩy mô hình của chúng tôi là một tổng số người học cơ sở:

f(x)=m=1Mbm(x)

Mbmmth

2b1=β0+β1xb2=θ0+θ1x

f(x)=m=12bm(x)=β0+β1x+θ0+θ1x=(β0+θ0)+(β1+θ1)x

đó là một mô hình tuyến tính đơn giản! Nói cách khác, mô hình đoàn có "sức mạnh tương tự" với người học cơ sở!

XTXβ=XTy


Do đó, mọi người muốn sử dụng các mô hình khác ngoài mô hình tuyến tính làm người học cơ sở. Cây là một lựa chọn tốt, vì thêm hai cây không bằng một cây. Tôi sẽ giới thiệu nó với một trường hợp đơn giản: gốc cây quyết định, đó là một cây chỉ có 1 lần chia.

f(x,y)=x2+y2

nhập mô tả hình ảnh ở đây

Bây giờ, kiểm tra bốn lần lặp đầu tiên.

nhập mô tả hình ảnh ở đây

Lưu ý, khác với người học tuyến tính, mô hình trong lần lặp thứ 4 không thể đạt được bằng một lần lặp (một gốc quyết định duy nhất) với các tham số khác.


Cho đến nay, tôi đã giải thích, tại sao mọi người không sử dụng người học tuyến tính như người học cơ sở. Tuy nhiên, không có gì ngăn cản mọi người làm điều đó. Nếu chúng ta sử dụng mô hình tuyến tính làm người học cơ sở và hạn chế số lần lặp, thì bằng với việc giải hệ phương trình tuyến tính, nhưng giới hạn số lần lặp trong quá trình giải.

Ví dụ tương tự, nhưng trong cốt truyện 3d, đường cong màu đỏ là dữ liệu và mặt phẳng màu xanh lá cây là sự phù hợp cuối cùng. Bạn có thể dễ dàng thấy, mô hình cuối cùng là một mô hình tuyến tính và nó z=mean(data$label)song song với mặt phẳng x, y. (Bạn có thể nghĩ tại sao? Điều này là do dữ liệu của chúng tôi là "đối xứng", do đó, bất kỳ độ nghiêng nào của mặt phẳng sẽ làm tăng tổn thất). Bây giờ, hãy kiểm tra những gì đã xảy ra trong 4 lần lặp đầu tiên: mô hình được trang bị đang dần đi lên giá trị tối ưu (trung bình).

nhập mô tả hình ảnh ở đây


Kết luận cuối cùng, người học tuyến tính không được sử dụng rộng rãi, nhưng không có gì ngăn cản mọi người sử dụng nó hoặc thực hiện nó trong thư viện R. Ngoài ra, bạn có thể sử dụng nó và giới hạn số lần lặp để chuẩn hóa mô hình.

Bài liên quan:

Gradient Boosting cho hồi quy tuyến tính - tại sao nó không hoạt động?

Là một quyết định gốc một mô hình tuyến tính?


1
Tôi muốn nói rằng sự kết hợp của n cây là một cây, cho dù n lớn đến đâu!
Metariat

@Metariat KHÔNG!, Cây kết hợp KHÔNG phải là cây!. đối với cây, bạn sẽ thấy hình chữ "T" trên tách. Nhưng gốc cây được tăng cường bạn sẽ thấy hình dạng "#". tức là sự phân chia sẽ vượt qua sự chia tách khác!
Haitao Du

Bạn có thể cho một ví dụ về n cây? Tôi sẽ cho bạn một cây tương đương!
Metariat

@Metariat xin lỗi bây giờ tôi không có thời gian. Nhưng tôi chắc chắn thúc đẩy gốc cây quyết định không thể dễ dàng tạo ra bởi cây quyết định. Sẽ trở lại câu hỏi này khi tôi có thời gian.
Haitao Du

1
Tôi đồng ý rằng sự kết hợp của n cây vẫn là một cây, nhưng cây này sẽ lớn hơn đáng kể. Trong trường hợp xấu nhất, số lượng lá bằng với số lượng lá trong tất cả các cây đầu vào, vì vậy độ phức tạp của cây đó là không thực tế. Mặt khác trong trường hợp các hàm tuyến tính phức tạp là hoàn toàn giống nhau.
Tomek Tarczynski
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.