Gradient Boosting Tree: Có càng nhiều biến thì càng tốt?


10

Từ hướng dẫn của XGBoost, tôi nghĩ rằng khi mỗi cây phát triển, tất cả các biến được quét sẽ được chọn để phân chia các nút và biến có mức tăng tối đa sẽ được chọn. Vì vậy, câu hỏi của tôi là nếu tôi thêm một số biến nhiễu vào tập dữ liệu, liệu các biến nhiễu này có ảnh hưởng đến việc lựa chọn các biến (cho mỗi cây đang phát triển) không? Logic của tôi là bởi vì các biến nhiễu này KHÔNG phân chia mức tăng tối đa, nên chúng sẽ không bao giờ được chọn do đó chúng không ảnh hưởng đến sự phát triển của cây.

Nếu câu trả lời là có, thì có đúng là "càng nhiều biến càng tốt cho XGBoost" không? Chúng ta đừng xem xét thời gian đào tạo.

Ngoài ra, nếu câu trả lời là có, thì có đúng là "chúng ta không cần phải lọc ra các biến không quan trọng trong mô hình".

Cảm ơn bạn!

Câu trả lời:


10

Logic của tôi là bởi vì các biến nhiễu này KHÔNG phân chia mức tăng tối đa, nên chúng sẽ không bao giờ được chọn do đó chúng không ảnh hưởng đến sự phát triển của cây.

Điều này chỉ hoàn toàn chính xác đối với các tập dữ liệu rất lớn, gần vô hạn, trong đó số lượng mẫu trong tập huấn luyện của bạn cung cấp độ bao phủ tốt cho tất cả các biến thể. Trong thực tế, với đủ kích thước, bạn sẽ có rất nhiều tiếng ồn lấy mẫu, bởi vì phạm vi bảo hiểm của bạn về các ví dụ có thể yếu hơn khi dữ liệu của bạn có nhiều kích thước hơn.

Nhiễu trên các biến yếu kết thúc tương quan ngẫu nhiên với biến mục tiêu có thể hạn chế hiệu quả của việc tăng thuật toán và điều này có thể dễ dàng xảy ra hơn khi phân tách sâu hơn trong cây quyết định, nơi dữ liệu được đánh giá đã được nhóm thành một tập hợp con nhỏ.

Bạn càng thêm nhiều biến, bạn càng có nhiều khả năng bạn sẽ nhận được các biến tương quan yếu, điều này có vẻ phù hợp với thuật toán lựa chọn phân tách cho một số kết hợp cụ thể, sau đó tạo ra các cây học nhiễu này thay vì tín hiệu dự định và cuối cùng khái quát xấu.

Trong thực tế, tôi đã thấy XGBoost khá mạnh để gây nhiễu ở quy mô nhỏ. Tuy nhiên, tôi cũng đã thấy rằng đôi khi nó sẽ chọn các biến kỹ thuật chất lượng kém, ưu tiên cho dữ liệu tương quan tốt hơn, vì những lý do tương tự. Vì vậy, đây không phải là một thuật toán trong đó "càng nhiều biến càng tốt cho XGBoost" và bạn cần quan tâm đến các tính năng chất lượng thấp có thể có.


rất đẹp. Cảm ơn! Vì vậy, bạn có nghĩ rằng việc lựa chọn tính năng trước khi lắp XGBoost là cần thiết dựa trên kinh nghiệm của bạn không?
WCMC

@Frank: Có thể. Bạn cũng có thể bắt đầu với bộ tính năng đầy đủ và sử dụng báo cáo tầm quan trọng của biến xgboost để hỗ trợ bạn. Nhìn chung, XGBoost không hoàn toàn cứu bạn khỏi bất kỳ mối quan tâm thông thường nào về lựa chọn tính năng và kỹ thuật.
Neil Slater

Xin chào @Neil, vui lòng xem datascience.stackexchange.com/questions/17288/ vào bất cứ khi nào bạn có cơ hội. Cảm ơn bạn.
WCMC

@Frank: Tôi đã làm ngày hôm qua và để lại một câu hỏi để làm rõ vì các con số có vẻ hơi xa vời.
Neil Slater

Xin chào @Neil, vì người đăng trước không trả lời câu hỏi của bạn, tôi đăng lại nó ở đây với dự án của riêng tôi. Tôi cũng đã cung cấp tập dữ liệu và tập lệnh R ở đó, mà tôi hy vọng sẽ thuận tiện hơn cho những người khác hiểu vấn đề. Tôi đánh giá cao nếu bạn muốn cung cấp một số trợ giúp.
WCMC
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.