Khi nào nên tránh rừng ngẫu nhiên?


25

Các khu rừng ngẫu nhiên được biết đến là thực hiện khá tốt trên nhiều nhiệm vụ khác nhau và được gọi là người làm phương pháp học tập . Có bất kỳ loại vấn đề hoặc điều kiện cụ thể nào trong đó người ta nên tránh sử dụng một khu rừng ngẫu nhiên không?


8
Chào. "PLS là người da của ...", "Bootstrap là người da của ...", "Khu rừng ngẫu nhiên là người da của ..." <- Tôi khuyên bạn nên nghi ngờ về những tuyên bố như vậy. Đó chỉ là một nhận xét :)
Stéphane Laurent

Câu trả lời:


24

Suy nghĩ về ngôn ngữ cụ thể của trích dẫn, một người da là một công cụ đa năng: một phần cứng duy nhất với rất nhiều gizmos nhỏ nhét vào nó. Đó là một cặp kìm, một con dao, và một cái tuốc nơ vít và hơn thế nữa! Thay vì phải mang riêng từng dụng cụ này, người da là một món đồ duy nhất mà bạn có thể kẹp vào quần để nó luôn ở trong tầm tay. Điều này là thuận tiện , nhưng sự đánh đổi là mỗi công cụ thành phần không phải là tốt nhất trong công việc của nó. Dụng cụ mở hộp rất khó sử dụng, các bit tuốc nơ vít thường có kích thước sai và dao có thể hoàn thành ít hơn so với việc cắt xén. Nếu thực hiện bất kỳ nhiệm vụ nào trong số này là quan trọng, bạn sẽ được phục vụ tốt hơn với một công cụ chuyên dụng: một con dao thực tế, một tuốc nơ vít thực tế hoặc một cặp kìm thực tế.

Một khu rừng ngẫu nhiên có thể được nghĩ theo cùng một điều khoản. Rừng ngẫu nhiên mang lại kết quả mạnh mẽ trên nhiều bộ dữ liệu và không nhạy cảm lắm với các thông số điều chỉnh. Nhưng nó không hoàn hảo. Bạn càng biết nhiều về vấn đề, bạn càng dễ dàng xây dựng các mô hình chuyên biệt để phù hợp với vấn đề cụ thể của mình.

Có một vài trường hợp rõ ràng trong đó các khu rừng ngẫu nhiên sẽ đấu tranh:

  • Độ thưa thớt - Khi dữ liệu rất thưa thớt, rất có lý khi đối với một số nút, mẫu bootstrapping và tập hợp con ngẫu nhiên của các tính năng sẽ hợp tác để tạo ra một không gian tính năng bất biến. Không có sự phân chia năng suất để có được, vì vậy không chắc rằng những đứa trẻ của nút này sẽ hoàn toàn hữu ích. XGBoost có thể làm tốt hơn trong bối cảnh này.

  • Dữ liệu không được căn chỉnh theo trục - Giả sử rằng có một ranh giới quyết định đường chéo trong không gian của hai tính năng, x1x2 . Ngay cả khi đây là thứ nguyên duy nhất có liên quan đến dữ liệu của bạn, nó sẽ lấy một mô hình rừng ngẫu nhiên thông thường, nhiều phần tách để mô tả ranh giới đường chéo đó. Điều này là do mỗi phân chia được định hướng vuông góc với trục của x1 hoặc x2 . (Điều này nên trực quan vì một mô hình rừng ngẫu nhiên thông thường đang thực hiện phân chia dạng x1>4.) Rừng xoay, thực hiện phép chiếu PCA trên tập hợp các tính năng được chọn cho mỗi lần phân tách, có thể được sử dụng để khắc phục điều này: các phép chiếu vào cơ sở trực giao, về nguyên tắc, sẽ làm giảm ảnh hưởng của thuộc tính căn chỉnh trục vì các phần tách sẽ không còn được căn chỉnh trục trong cơ sở ban đầu.

    Hình ảnh này cung cấp một ví dụ khác về cách phân chia theo trục ảnh hưởng đến các quyết định rừng ngẫu nhiên. Ranh giới quyết định là một vòng tròn ở điểm gốc, nhưng lưu ý rằng mô hình rừng ngẫu nhiên đặc biệt này vẽ một hộp để xấp xỉ vòng tròn. Có một số điều người ta có thể làm để cải thiện ranh giới này; đơn giản nhất bao gồm thu thập nhiều dữ liệu hơn và xây dựng nhiều cây hơn. nhập mô tả hình ảnh ở đây

  • Rừng ngẫu nhiên về cơ bản chỉ hoạt động trên dữ liệu dạng bảng,tức là không có mối quan hệ mạnh mẽ, quan trọng về mặt chất lượng giữa các tính năng theo nghĩa dữ liệu là hình ảnh hoặc các quan sát được nối mạng với nhau trên biểu đồ. Các cấu trúc này thường không được xấp xỉ bằng nhiều phân vùng hình chữ nhật. Nếu dữ liệu của bạn sống theo chuỗi thời gian, hoặc là một chuỗi hình ảnh, hoặc sống trên biểu đồ hoặc có một số cấu trúc rõ ràng khác, khu rừng ngẫu nhiên sẽ rất khó nhận ra điều đó. Tôi chắc chắn rằng các nhà nghiên cứu đã phát triển các biến thể của phương pháp để cố gắng giải quyết các tình huống này, nhưng một khu rừng ngẫu nhiên vanilla sẽ không nhất thiết phải chọn các cấu trúc này một cách hữu ích. Tin tốt là bạn thường biết khi nào là trường hợp này, tức là bạn biết bạn có hình ảnh, chuỗi thời gian hoặc biểu đồ để làm việc với,

Tôi nghĩ rằng rừng ngẫu nhiên vanilla có khả năng nhận ra các phân vùng không phải hình chữ nhật. Chúng ta có thể có các tính năng bậc hai chẳng hạn và nhận ra các ranh giới như x ^ 2 <c.
Aniruddha Acharya

2
@AniruddhaAcharya Tôi đã nói "đấu tranh", không thất bại. Câu trả lời của tôi ở đây cho thấy rõ rằng các tính năng bậc hai không phải là vấn đề không thể vượt qua. Nhưng các đường chéo hoặc ô vuông hoặc các kiểu phân chia không liên kết khác sẽ yêu cầu các cây phải phân chia các đặc điểm đó nhiều lần theo kiểu hình chữ nhật để xấp xỉ một đường chéo / đường cong. Bạn có thể thấy hiệu ứng đó trong cốt truyện của bài này: nhìn vào các góc sắc nét. RF đang sử dụng một hình vuông để xấp xỉ một hình tròn.
Sycorax nói Phục hồi lại

Tôi có nghĩa là cung cấp các tính năng bậc hai (và thứ tự cao hơn khác) cho RF sẽ làm giảm cuộc đấu tranh trong việc mô hình hóa các phân vùng không phải hình chữ nhật. Ví dụ, RF có thể sử dụng 2 ô tiêu chuẩn để xấp xỉ hình tròn thay vì sử dụng hình vuông. Mặc dù tôi đồng ý rằng nó không dễ như các mô hình kết hợp tương tác giữa các biến, tôi cảm thấy nó không khó vì RF không bị hạn chế sử dụng ngưỡng trên các tính năng thô.
Aniruddha Acharya

1
@AniruddhaAcharya Nếu bạn biết rằng các số hạng vuông là mô hình phù hợp, bạn không cần rừng ngẫu nhiên: chỉ cần thêm các số hạng vuông vào mô hình tuyến tính. RF là một cách tốt để xấp xỉ các hàm tùy ý, đặc biệt khi chúng có các hàm quyết định căn chỉnh trục.
Sycorax nói Phục hồi lại

Tại sao kỹ thuật tính năng (bậc hai) được đề xuất bởi @AniruddhaAcharya không phải là một bước hữu ích để sử dụng kết hợp với RF? Có, các tính năng này có thể được thêm vào mô hình tuyến tính: nhưng các tính năng sau không cung cấp hành vi kết hợp các đóng góp của nhiều kết quả được tối ưu hóa riêng cho các tập hợp con khác nhau của các tính năng.
javadba

22

Góc nhọn. Chính xác.

Họ sử dụng các phương pháp khuếch tán. Họ phù hợp với những thứ sần sùi tốt. Chúng không phù hợp với những thứ phức tạp và chi tiết cao khi kích thước mẫu thấp. Tôi sẽ tưởng tượng rằng họ không làm tốt với dữ liệu chuỗi thời gian đa biến - khi một cái gì đó ở đây phụ thuộc vào một thứ ở đằng kia.

Các khu rừng được tăng cường độ dốc có thể phù hợp hoặc quá phù hợp, nhưng có thể nhận được lỗi thấp hơn đáng kể cho cùng một dữ liệu.

" Leathermen " không tồn tại. Không có "đạn bạc". Có hộp công cụ. Biết các công cụ của bạn và chăm sóc chúng tốt để chúng có thể chăm sóc bạn. Hãy cảnh giác với "khi bạn là một cái búa, thì mọi vấn đề trông giống như một cái đinh" đặc biệt là khi bạn không có một thư viện dày đặc trong hộp công cụ của mình.

Cho đến khi bạn biết rõ vấn đề, thật dễ dàng để tưởng tượng bất cứ điều gì có thể giải quyết nó, hoặc công cụ yêu thích của bạn có thể giải quyết nó. Trí tuệ cho thấy hiểu sâu về vấn đề và rất quen thuộc với các công cụ của bạn.

Đã thêm: Nếu bạn có đủ tài nguyên tính toán hoặc biên độ thời gian để sử dụng thứ khác. RF không chỉ nhanh để đào tạo, mà còn nhanh để thực hiện. Một cấu trúc được thúc đẩy rất sâu là ít hơn thế. Bạn phải có chi phí để hỗ trợ điều đó.


2
Trở thành người ủng hộ của ác quỷ ở đây: Không có gì sẽ " phù hợp với những điều phức tạp và chi tiết cao khi kích thước mẫu thấp. "
usεr11852 nói Phục hồi Monic

5

Đây là lần đầu tiên tôi thực sự trả lời một câu hỏi, vì vậy đừng đặt câu hỏi cho tôi .. nhưng tôi nghĩ tôi có thể trả lời câu hỏi của bạn:

Nếu bạn thực sự chỉ quan tâm đến hiệu suất mô hình và không phải là thứ ngẫu nhiên, thì rừng ngẫu nhiên thực sự thường là một thuật toán học tập rất tốt, nhưng thực hiện kém hơn một chút trong các trường hợp sau:

1.) Khi kích thước (số tính năng) rất cao so với số lượng mẫu đào tạo, trong những trường hợp đó, hồi quy tuyến tính chính quy hoặc SVM sẽ tốt hơn.

2.) Trong trường hợp có các biểu diễn bậc cao / cấu trúc tích chập trong dữ liệu, ví dụ như trong các vấn đề về thị giác máy tính. Trong những trường hợp thị giác máy tính, một mạng lưới thần kinh tích chập sẽ vượt trội hơn một khu rừng ngẫu nhiên (Nói chung nếu có kiến ​​thức, người ta có thể kết hợp vào việc học là một điều tốt hơn).

Điều đó được nói rằng rừng ngẫu nhiên là một điểm khởi đầu rất tốt. Một trong những người tôi ngưỡng mộ vì kỹ năng Machine Learning của anh ấy luôn bắt đầu bằng việc học một khu rừng ngẫu nhiên và một hồi quy tuyến tính chính quy.

Tuy nhiên, nếu bạn muốn hiệu suất tốt nhất có thể, tôi tin rằng ngày nay các mạng thần kinh aka. Deep Learning trông giống như một cách tiếp cận rất hấp dẫn. Ngày càng có nhiều người chiến thắng trên các trang web thách thức dữ liệu như Kaggle sử dụng các mô hình Deep Learning cho cuộc thi. Một ưu điểm khác của mạng nơ-ron là chúng có thể xử lý số lượng mẫu rất lớn (> 10 ^ 6 người ta có thể huấn luyện chúng bằng cách sử dụng độ dốc giảm dần ngẫu nhiên, cung cấp các bit dữ liệu cùng một lúc). Cá nhân tôi thấy đây là một pro rất hấp dẫn cho Deep Learning.


2
Câu trả lời hay, nhưng điểm cuối cùng của bạn là không chính xác: đào tạo theo đợt nhỏ có thể được thực hiện cho tất cả các thuật toán học máy phổ biến, xem ví dụ h2o .
jubo

Oke, thú vị, tôi không biết điều đó. Bạn có nói rằng bằng cách sử dụng các phương pháp này, người ta có thể huấn luyện một cây (quyết định) bằng cách sử dụng phương pháp học tập theo đợt nhỏ / SGD và do đó xây dựng một cây duy nhất dựa trên phần lớn phân chia tổng số dữ liệu đào tạo (giả sử là 65%)?
MJW

1
Tôi nghĩ rằng rừng ngẫu nhiên vẫn tốt khi số lượng tính năng cao - chỉ cần không sử dụng nhiều tính năng cùng một lúc khi xây dựng một cây duy nhất và cuối cùng, bạn sẽ có một rừng phân loại độc lập nên ( hy vọng) làm tốt
Alexey Grigorev

Theo tôi hiểu, h2o sử dụng mô hình thu nhỏ bản đồ cho đào tạo xe buýt nhỏ. Các cây đơn (GIỎI) không được triển khai như vậy trong h2o (nhưng tôi cho rằng một cây chưa được xử lý là trường hợp đặc biệt của rừng ngẫu nhiên chỉ với một cây và sự lựa chọn tối đa của các yếu tố dự báo?).
jubo

2
Sự biện minh cho (1) là gì? Bạn đưa ra yêu cầu, nhưng không cung cấp bất kỳ đối số hỗ trợ nào.
Sycorax nói Phục hồi lại

0

Trước hết, Rừng ngẫu nhiên không thể được áp dụng cho các loại dữ liệu sau:

  • hình ảnh
  • âm thanh
  • văn bản (sau khi dữ liệu tiền xử lý sẽ thưa thớt và RF không hoạt động tốt với dữ liệu thưa)

Đối với loại dữ liệu dạng bảng, luôn luôn tốt khi kiểm tra Rừng ngẫu nhiên vì:

  • nó đòi hỏi ít chuẩn bị dữ liệu và tiền xử lý hơn Mạng thần kinh hoặc SVM. Ví dụ: bạn không cần phải mở rộng tính năng.
  • Đối với đào tạo Rừng ngẫu nhiên, bạn chỉ cần sử dụng các tham số mặc định và đặt số lượng cây ( càng nhiều cây trong RF thì càng tốt ). Khi bạn so sánh Rừng ngẫu nhiên với Mạng thần kinh , việc đào tạo rất dễ dàng (không cần xác định kiến ​​trúc hoặc điều chỉnh thuật toán đào tạo). Random Forest dễ huấn luyện hơn Mạng thần kinh.
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.