Là tính năng kỹ thuật vẫn hữu ích khi sử dụng XGBoost?


9

Tôi đã đọc tài liệu liên quan đến XGBoost. Dường như phương pháp này không yêu cầu bất kỳ tỷ lệ thay đổi nào vì nó dựa trên cây và phương pháp này có thể nắm bắt mô hình phi tuyến tính phức tạp, các tương tác. Và nó có thể xử lý cả biến số và biến phân loại và dường như các biến dư thừa không ảnh hưởng quá nhiều đến phương pháp này.

Thông thường, trong mô hình dự đoán, bạn có thể thực hiện một số lựa chọn trong số tất cả các tính năng bạn có và bạn cũng có thể tạo một số tính năng mới từ bộ tính năng bạn có. Vì vậy, chọn một tập hợp các tính năng có nghĩa là bạn nghĩ rằng có một số dự phòng trong bộ tính năng của bạn; tạo một số tính năng mới từ bộ tính năng hiện tại có nghĩa là bạn thực hiện một số chuyển đổi chức năng trên các tính năng hiện tại của mình. Sau đó, cả hai điểm này sẽ được đề cập trong XGBoost. Sau đó, điều đó có nghĩa là để sử dụng XGBoost, bạn chỉ cần chọn các tham số điều chỉnh đó một cách khôn ngoan? Giá trị của việc thực hiện kỹ thuật tính năng bằng XGBoost là gì?


Nếu bạn tìm kiếm sự cải thiện nhỏ về hiệu suất, tốt hơn hết là mô hình hóa các tương tác giữa các tính năng một cách rõ ràng bởi vì cây không tốt ở đó: stats.stackexchange.com/questions/147594/ Lỗi
Anton Tarasenko

Câu trả lời:


12

Hãy xác định Kỹ thuật tính năng đầu tiên:

  1. Lựa chọn tính năng
  2. Khai thác tính năng
  3. Thêm tính năng thông qua chuyên môn tên miền

XGBoost làm (1) cho bạn. XGBoost không làm (2) / (3) cho bạn.

Vì vậy, bạn vẫn phải tự làm kỹ thuật tính năng. Chỉ một mô hình học tập sâu có thể thay thế khai thác tính năng cho bạn.


7
  1. Lựa chọn tính năng: XGBoost thực hiện lựa chọn tính năng lên đến cấp độ. Theo kinh nghiệm của tôi, tôi luôn thực hiện lựa chọn tính năng theo một vòng xgboost với các tham số khác với những gì tôi sử dụng cho mô hình cuối cùng. Tôi thường sử dụng các số thấp để lấy mẫu hàng và tính năng, và các cây không sâu và chỉ giữ các tính năng nhập vào mô hình. Sau đó tinh chỉnh với một mô hình khác. Điều này đã ngăn chặn quá mức cho tôi khi số lượng tính năng rất cao.
  2. Tạo tính năng: XGBoost (phân loại, booster = gbtree) sử dụng các phương thức dựa trên cây. Điều này có nghĩa là mô hình sẽ gặp khó khăn trong việc chọn các mối quan hệ như ab , a / ba + b cho các tính năng ab . Tôi thường thêm sự tương tác giữa các tính năng bằng tay hoặc chọn những tính năng phù hợp với một số phương pháp phỏng đoán. Tùy thuộc vào ứng dụng, điều này thực sự có thể tăng hiệu suất.

2

Giá trị của việc thực hiện kỹ thuật tính năng bằng XGBoost là gì?

Hiệu suất có thể?

(Lưu ý rằng chúng tôi không sử dụng XGBoost, nhưng một thư viện tăng cường độ dốc khác - mặc dù hiệu suất của XGBoost có thể cũng phụ thuộc vào tính chiều của dữ liệu theo một cách nào đó.)

Chúng tôi có một bộ dữ liệu trong đó mỗi mục bao gồm 3 tín hiệu, mỗi tín hiệu dài 6000 mẫu - đó là các tính năng 18k. Việc sử dụng các tính năng này trực tiếp mất nhiều thời gian (ngày), vì vậy chúng tôi đã thực hiện một số kỹ thuật tính năng thủ công để giảm số lượng tính năng xuống còn khoảng 200. Bây giờ việc đào tạo (bao gồm cả điều chỉnh tham số) chỉ mất vài giờ.

Để so sánh: một thời gian ngắn trước đây, chúng tôi cũng đã bắt đầu đào tạo ConvNets với cùng dữ liệu và toàn bộ tính năng 18k (không có tính năng kỹ thuật). Chúng đạt độ chính xác tương tự như các mô hình tăng cường độ dốc chỉ sau khoảng 2 giờ đào tạo.


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.