2015-07-10 41 views
5

Tôi đang cố gắng hiểu cách hoạt động của rừng ngẫu nhiên bằng tiếng Anh chứ không phải về toán học. Ai có thể cho tôi một lời giải thích thực sự đơn giản về cách thuật toán này hoạt động không?Một giải thích đơn giản về Rừng Ngẫu nhiên

Theo tôi hiểu, chúng tôi cung cấp các tính năng và nhãn mà không nói thuật toán nào nên được phân loại là nhãn nào? Như tôi đã từng làm Naive Bayes dựa trên xác suất chúng ta cần phải biết tính năng nào nên là nhãn nào. Tôi hoàn toàn xa?

Nếu tôi có thể nhận được bất kỳ lời giải thích rất đơn giản nào bằng tiếng Anh, tôi sẽ thực sự được đánh giá cao.

+5

https: //www.quora.com/Random-Rừng/Làm thế nào-do-ngẫu nhiên-rừng-làm việc-in-laymans-điều khoản – CoryKramer

Trả lời

4

RandomForest sử dụng phương pháp đóng bao được gọi là đóng bao. Ý tưởng được dựa trên thương mại sai lệch thiên vị cổ điển. Giả sử rằng chúng ta có một tập hợp (giả sử N) của các bộ ước lượng được trang bị có độ lệch thấp nhưng phương sai chéo cao. Vì vậy, thiên vị thấp là tốt và chúng tôi muốn giữ nó, phương sai cao là xấu và chúng tôi muốn giảm nó. RandomForest cố gắng đạt được điều này bằng cách thực hiện cái gọi là bootstraps/sub-sampling (như @Alexander đã đề cập, đây là sự kết hợp của lấy mẫu bootstrap trên cả quan sát và tính năng). Dự đoán là mức trung bình của các ước tính cá nhân, do đó thuộc tính thiên vị thấp được bảo toàn thành công. Và hơn nữa theo Định lý giới hạn trung tâm, phương sai của mẫu trung bình này có phương sai bằng variance of individual estimator divided by square root of N. Vì vậy, bây giờ, nó có cả thuộc tính thiên vị thấp và phương sai thấp, và đây là lý do tại sao RandomForest thường hoạt động tốt hơn so với ước tính độc lập.

+0

Để mở rộng một chút tóm tắt tuyệt vời của Jianxun ở trên, một RandomForest thường mất một lựa chọn ngẫu nhiên của một phần ba các thuộc tính tại mỗi nút trong cây cho một vấn đề hồi quy (và căn bậc hai của số thuộc tính cho một vấn đề phân loại). Vì vậy, nó là một sự kết hợp của đóng bao (lấy mẫu bootstrap ngẫu nhiên của dữ liệu gốc) và lựa chọn thuộc tính ngẫu nhiên. – Alexander

8

Tôi sẽ cố gắng đưa ra một giải thích bổ sung khác với những từ đơn giản.

Rừng ngẫu nhiên là tập hợp các cây quyết định ngẫu nhiên (số n_estimators trong sklearn). Điều bạn cần hiểu là cách xây dựng một cây quyết định ngẫu nhiên.

Nói thật, để xây dựng một cây quyết định ngẫu nhiên bạn bắt đầu từ một tập hợp con các mẫu đào tạo của bạn. Tại mỗi nút, bạn sẽ vẽ ngẫu nhiên một tập hợp con các đối tượng địa lý (số được xác định bởi max_features trong sklearn). Đối với mỗi tính năng này, bạn sẽ kiểm tra các ngưỡng khác nhau và xem cách chúng phân tách các mẫu của bạn theo một tiêu chí cụ thể (thông thường là entropy hoặc gini, tham số criterion trong sklearn). Sau đó, bạn sẽ giữ cho đối tượng địa lý và ngưỡng của nó chia tách dữ liệu của bạn tốt nhất và ghi lại nó trong nút. Khi việc xây dựng cây kết thúc (có thể vì nhiều lý do khác nhau: đạt độ sâu tối đa (max_depth trong sklearn), số mẫu tối thiểu đạt được (min_samples_leaf trong sklearn) v.v.) bạn xem các mẫu trong mỗi chiếc lá và giữ nguyên tần số của nhãn. Kết quả là, nó giống như cây cung cấp cho bạn một phân vùng mẫu đào tạo của bạn theo các tính năng có ý nghĩa.

Khi mỗi nút được xây dựng từ các tính năng được lấy ngẫu nhiên, bạn hiểu rằng mỗi cây được tạo theo cách này sẽ khác nhau. Điều này góp phần vào sự thỏa hiệp tốt giữa thiên vị và phương sai, như được giải thích bởi @Jianxun Li.

Sau đó, trong chế độ thử nghiệm, mẫu thử sẽ đi qua từng cây, cho bạn tần số nhãn cho mỗi cây. Nhãn được đại diện nhiều nhất thường là kết quả phân loại cuối cùng.

4

Thêm vào hai câu trả lời ở trên, Vì bạn đã đề cập một lời giải thích đơn giản. Đây là một cách viết mà tôi cảm thấy là cách đơn giản nhất bạn có thể giải thích những khu rừng ngẫu nhiên.

Các khoản tín dụng đi tới Edwin Chen để được giải thích đơn giản here về các thuật ngữ dành cho các khu rừng ngẫu nhiên. Đăng bài như dưới đây.

Giả sử bạn rất thiếu quyết đoán, vì vậy bất cứ khi nào bạn muốn xem phim, bạn hỏi Willow nếu bạn nghĩ mình thích nó. Để trả lời, Willow trước tiên cần tìm ra những bộ phim bạn thích, vì vậy bạn cho cô ấy một bộ phim và nói với cô ấy liệu bạn có thích từng bộ phim hay không (tức là, bạn đưa cho cô ấy một bộ huấn luyện có nhãn). Sau đó, khi bạn hỏi cô ấy nếu cô ấy nghĩ bạn sẽ thích phim X hay không, cô ấy chơi một trò chơi 20 câu hỏi giống như với IMDB, đặt câu hỏi như "Is X là một bộ phim lãng mạn?", "Johnny Depp có sao trong X không?" , v.v. Trước tiên, cô ấy đặt câu hỏi nhiều thông tin hơn (tức là, cô ấy tối đa hóa mức tăng thông tin của từng câu hỏi) và trả lời có/không có ở cuối câu hỏi.

Do đó, Willow là cây quyết định cho tùy chọn phim của bạn.

Nhưng Willow chỉ là con người, vì vậy cô ấy không phải lúc nào cũng khái quát hóa sở thích của bạn rất tốt (tức là, cô ấy mặc đồ). Để nhận được các đề xuất chính xác hơn, bạn muốn hỏi một nhóm bạn bè và xem phim X nếu hầu hết trong số họ nói rằng họ nghĩ bạn sẽ thích nó. Nghĩa là, thay vì chỉ hỏi Willow, bạn cũng muốn hỏi Woody, Apple và Cartman và họ bỏ phiếu cho dù bạn có thích một bộ phim hay không (tức là bạn xây dựng một bộ phân loại quần thể, hay còn gọi là một khu rừng trong trường hợp này).

Bây giờ bạn không muốn mỗi người bạn của bạn làm điều tương tự và đưa ra câu trả lời giống nhau, vì vậy trước tiên bạn cung cấp cho mỗi người một số dữ liệu hơi khác nhau. Sau khi tất cả, bạn không hoàn toàn chắc chắn về sở thích của mình - bạn đã nói với Willow rằng bạn yêu thích Titanic, nhưng có lẽ bạn chỉ hạnh phúc ngày hôm đó vì đó là sinh nhật của bạn, vì vậy có thể một số bạn bè của bạn không nên sử dụng thực tế bạn thích Titanic đưa ra khuyến nghị của họ. Hoặc có thể bạn đã nói với cô ấy rằng bạn yêu Cô bé Lọ Lem, nhưng thực sự bạn thực sự thực sự yêu thích nó, vì vậy một số bạn bè của bạn nên cho Cinderella nhiều trọng lượng hơn. Vì vậy, thay vì cho bạn bè của bạn cùng một dữ liệu bạn đã cho Willow, bạn cung cấp cho họ những phiên bản hơi bị xáo trộn. Bạn không thay đổi quyết định yêu thích/ghét của mình, bạn chỉ cần nói rằng bạn yêu thích/ghét một số phim nhiều hơn một chút (chính thức, bạn cung cấp cho mỗi người bạn một phiên bản khởi động của dữ liệu đào tạo ban đầu của bạn). Ví dụ, trong khi bạn nói với Willow rằng bạn thích Black Swan và Harry Potter và Avatar không thích, bạn nói với Woody rằng bạn thích Black Swan rất nhiều khi bạn xem nó hai lần, bạn không thích Avatar, và không đề cập đến Harry Potter chút nào.

Bằng cách sử dụng bộ quần áo này, bạn hy vọng rằng trong khi mỗi người bạn của bạn đưa ra một số khuyến nghị riêng biệt (Willow nghĩ bạn thích phim ma cà rồng hơn bạn làm, Woody nghĩ bạn thích phim Pixar, và Cartman nghĩ bạn ghét mọi thứ), lỗi bị hủy bỏ trong phần lớn. Vì vậy, bạn bè của bạn bây giờ tạo thành một khu rừng bagged (bootstrap aggregated) của sở thích phim của bạn.

Tuy nhiên, vẫn có một vấn đề với dữ liệu của bạn. Trong khi bạn yêu cả Titanic và Inception, đó không phải vì bạn thích những bộ phim có ngôi sao Leonardo DiCaprio. Có thể bạn thích cả hai bộ phim vì những lý do khác. Vì vậy, bạn không muốn bạn bè của bạn tất cả các cơ sở khuyến nghị của họ về việc liệu Leo có trong phim hay không. Vì vậy, khi mỗi người bạn hỏi IMDB một câu hỏi, chỉ có một tập con ngẫu nhiên của các câu hỏi có thể được cho phép (tức là khi bạn xây dựng một cây quyết định, tại mỗi nút bạn sử dụng một số ngẫu nhiên trong việc chọn thuộc tính để chia nhỏ, bằng cách chọn ngẫu nhiên một thuộc tính hoặc bằng cách chọn một thuộc tính từ một tập hợp con ngẫu nhiên). Điều này có nghĩa là bạn bè của bạn không được phép hỏi liệu Leonardo DiCaprio có trong phim bất cứ khi nào họ muốn hay không. Vì vậy, trong khi trước đây bạn đã tiêm ngẫu nhiên ở cấp dữ liệu, bằng cách làm rối loạn sở thích phim của bạn một chút, bây giờ bạn đang tiêm ngẫu nhiên ở cấp mô hình, bằng cách kết bạn của bạn hỏi các câu hỏi khác nhau vào những thời điểm khác nhau.

Và vì vậy, bạn bè của bạn giờ đây tạo thành một khu rừng ngẫu nhiên.

Các vấn đề liên quan