Python hồi quy bootstrap

Mục tiêu của các phương pháp tập hợp là kết hợp các dự đoán của một số công cụ ước tính cơ sở được xây dựng với một thuật toán học tập nhất định để cải thiện khả năng khái quát hóa / độ mạnh của một công cụ ước tính duy nhất

Show

Hai họ phương pháp tập hợp thường được phân biệt

  • Trong các phương pháp tính trung bình, nguyên tắc thúc đẩy là xây dựng một số công cụ ước tính một cách độc lập và sau đó lấy trung bình các dự đoán của chúng. Trung bình, công cụ ước tính kết hợp thường tốt hơn bất kỳ công cụ ước tính cơ sở nào vì phương sai của nó giảm

    Ví dụ. Phương pháp đóng bao , Rừng cây ngẫu nhiên , …

  • Ngược lại, trong các phương pháp tăng cường, các công cụ ước tính cơ sở được xây dựng tuần tự và người ta cố gắng giảm độ lệch của công cụ ước tính kết hợp. Động lực là kết hợp một số mô hình yếu để tạo ra một tập hợp mạnh mẽ

    Ví dụ. AdaBoost , Tăng độ dốc cây , …

1. 11. 1. Công cụ ước tính meta đóng bao¶

Trong các thuật toán tập hợp, các phương pháp đóng gói tạo thành một lớp thuật toán xây dựng một số phiên bản của công cụ ước tính hộp đen trên các tập con ngẫu nhiên của tập huấn luyện ban đầu và sau đó tổng hợp các dự đoán riêng lẻ của chúng để tạo thành dự đoán cuối cùng. Các phương pháp này được sử dụng như một cách để giảm phương sai của một công cụ ước tính cơ sở (e. g. , một cây quyết định), bằng cách đưa ngẫu nhiên vào quy trình xây dựng của nó và sau đó tạo ra một tổng thể từ nó. Trong nhiều trường hợp, các phương pháp đóng gói tạo thành một cách rất đơn giản để cải thiện đối với một mô hình duy nhất mà không cần phải điều chỉnh thuật toán cơ sở bên dưới. Vì chúng cung cấp một cách để giảm trang bị thừa, nên các phương pháp đóng bao hoạt động tốt nhất với các mô hình mạnh và phức tạp (e. g. , cây quyết định được phát triển đầy đủ), trái ngược với các phương pháp tăng cường thường hoạt động tốt nhất với các mô hình yếu (e. g. , cây quyết định nông)

Các phương pháp đóng bao có nhiều loại nhưng chủ yếu khác nhau ở cách chúng vẽ các tập con ngẫu nhiên của tập huấn luyện

  • Khi các tập con ngẫu nhiên của tập dữ liệu được vẽ dưới dạng các tập con ngẫu nhiên của các mẫu, thì thuật toán này được gọi là Dán [B1999] .

  • Khi các mẫu được lấy thay thế, thì phương pháp này được gọi là Đóng bao [B1996] .

  • Khi tập hợp con ngẫu nhiên của tập dữ liệu được vẽ dưới dạng tập hợp con ngẫu nhiên của các đối tượng địa lý, thì phương pháp này được gọi là Không gian con ngẫu nhiên [H1998] .

  • Cuối cùng, khi các công cụ ước tính cơ sở được xây dựng trên các tập hợp con của cả mẫu và tính năng, thì phương pháp này được gọi là Bản vá ngẫu nhiên [LG2012] .

Trong scikit-learning, các phương pháp đóng gói được cung cấp dưới dạng một công cụ ước tính meta

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
7 thống nhất (tương ứng.
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
8), lấy đầu vào là công cụ ước tính cơ sở do người dùng chỉ định cùng với các tham số chỉ định chiến lược để vẽ các tập con ngẫu nhiên. Cụ thể,
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
9 và
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
0 kiểm soát kích thước của các tập hợp con (về mẫu và tính năng), trong khi
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
1 và
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
2 kiểm soát xem các mẫu và tính năng được vẽ có hoặc không có sự thay thế. Khi sử dụng một tập hợp con của các mẫu có sẵn, độ chính xác tổng quát hóa có thể được ước tính với các mẫu bên ngoài bằng cách đặt
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
3. Ví dụ: đoạn mã bên dưới minh họa cách khởi tạo một tập hợp bao gồm 34 công cụ ước tính cơ sở, mỗi công cụ được xây dựng trên các tập hợp con ngẫu nhiên gồm 50% mẫu và 50% tính năng

________số 8

ví dụ

  • Công cụ ước tính đơn lẻ so với đóng bao. phân tách sai lệch phương sai

Người giới thiệu

[ B1999 ]

L. Breiman, “Dán phiếu nhỏ để phân loại trong cơ sở dữ liệu lớn và trực tuyến”, Học máy, 36(1), 85-103, 1999

[ B1996 ]

L. Breiman, “Dự báo đóng bao”, Học máy, 24(2), 123-140, 1996

[ H1998 ]

T. Ho, “Phương pháp không gian con ngẫu nhiên để xây dựng rừng quyết định”, Phân tích mẫu và trí tuệ máy, 20(8), 832-844, 1998

[ LG2012 ]

G. Louppe và P. Geurts, “Tập hợp trên các bản vá ngẫu nhiên”, Học máy và khám phá tri thức trong cơ sở dữ liệu, 346-361, 2012

1. 11. 2. Rừng cây ngẫu nhiên¶

Mô-đun

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
5 bao gồm hai thuật toán tính trung bình dựa trên cây quyết định ngẫu nhiên. thuật toán RandomForest và phương pháp Extra-Tees. Cả hai thuật toán đều là kỹ thuật xáo trộn và kết hợp [B1998] được thiết kế riêng cho cây cối. Điều này có nghĩa là một tập hợp các bộ phân loại đa dạng được tạo ra bằng cách đưa tính ngẫu nhiên vào cấu trúc bộ phân loại. Dự đoán của quần thể được đưa ra dưới dạng dự đoán trung bình của các phân loại riêng lẻ.

Như các bộ phân loại khác, bộ phân loại rừng phải được trang bị hai mảng. một mảng thưa thớt hoặc dày đặc X có hình dạng

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
6 chứa các mẫu đào tạo và một mảng Y có hình dạng
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
7 chứa các giá trị đích (nhãn lớp) cho các mẫu đào tạo

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
2

Giống như cây quyết định , rừng cây cũng mở rộng đến các vấn đề đa đầu ra (if Y is an array of shape

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
8).

1. 11. 2. 1. Rừng ngẫu nhiên¶

Trong các khu rừng ngẫu nhiên (xem các lớp

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
9 và
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
50), mỗi cây trong quần thể được xây dựng từ một mẫu được rút ra với sự thay thế (i. e. , một mẫu bootstrap) từ tập huấn luyện

Hơn nữa, khi tách từng nút trong quá trình xây dựng cây, phần tách tốt nhất được tìm thấy từ tất cả các tính năng đầu vào hoặc một tập hợp con ngẫu nhiên có kích thước

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
0. (Xem hướng dẫn điều chỉnh tham số để biết thêm chi tiết).

Mục đích của hai nguồn ngẫu nhiên này là để giảm phương sai của công cụ ước tính rừng. Thật vậy, các cây quyết định riêng lẻ thường thể hiện phương sai cao và có xu hướng khớp quá mức. Tính ngẫu nhiên được đưa vào trong các khu rừng tạo ra các cây quyết định với các lỗi dự đoán hơi tách rời. Bằng cách lấy trung bình của những dự đoán đó, một số lỗi có thể loại bỏ. Các khu rừng ngẫu nhiên đạt được phương sai giảm bằng cách kết hợp các cây khác nhau, đôi khi phải trả giá bằng việc tăng một chút sai lệch. Trong thực tế, việc giảm phương sai thường là đáng kể do đó mang lại một mô hình tổng thể tốt hơn

Ngược lại với ấn phẩm ban đầu [B2001] , việc triển khai scikit-learning kết hợp các bộ phân loại bằng cách lấy trung bình dự đoán xác suất của chúng, thay vì để mỗi .

1. 11. 2. 2. Cây cực kỳ ngẫu nhiên¶

Trong các cây cực kỳ ngẫu nhiên (xem các lớp

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
52 và
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
53), tính ngẫu nhiên tiến thêm một bước trong cách tính toán các phần tách. Như trong các khu rừng ngẫu nhiên, một tập hợp con ngẫu nhiên của các tính năng ứng cử viên được sử dụng, nhưng thay vì tìm kiếm các ngưỡng phân biệt đối xử nhất, các ngưỡng được rút ra ngẫu nhiên cho từng tính năng ứng cử viên và các ngưỡng tốt nhất được tạo ngẫu nhiên này được chọn làm quy tắc phân tách. Điều này thường cho phép giảm phương sai của mô hình hơn một chút, với chi phí là độ chệch tăng lên một chút

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True

Python hồi quy bootstrap

1. 11. 2. 3. Tham số¶

Các thông số chính cần điều chỉnh khi sử dụng các phương pháp này là

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
54 và
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
0. Cái trước là số cây trong rừng. Càng lớn càng tốt, nhưng cũng sẽ mất nhiều thời gian hơn để tính toán. Ngoài ra, lưu ý rằng kết quả sẽ ngừng tốt hơn đáng kể khi vượt quá số lượng cây quan trọng. Cái sau là kích thước của các tập hợp con ngẫu nhiên của các tính năng cần xem xét khi tách một nút. Càng thấp thì mức giảm phương sai càng lớn nhưng mức độ sai lệch càng tăng. Các giá trị mặc định tốt theo kinh nghiệm là ____156 hoặc tương đương ____157 (luôn xem xét tất cả các tính năng thay vì một tập hợp con ngẫu nhiên) cho các vấn đề hồi quy và ____158 (sử dụng một tập hợp con ngẫu nhiên có kích thước ____159) cho các nhiệm vụ phân loại (trong đó ____260 là số lượng các tính năng trong dữ liệu). Giá trị mặc định của
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
56 tương đương với cây được đóng gói và có thể đạt được nhiều tính ngẫu nhiên hơn bằng cách đặt các giá trị nhỏ hơn (e. g. 0. 3 là một mặc định điển hình trong tài liệu). Kết quả tốt thường đạt được khi cài đặt
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
62 kết hợp với
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
63 (i. e. , khi cây phát triển đầy đủ). Hãy nhớ rằng những giá trị này thường không tối ưu và có thể dẫn đến các kiểu máy ngốn nhiều RAM. Các giá trị tham số tốt nhất phải luôn được xác thực chéo. Ngoài ra, lưu ý rằng trong các khu rừng ngẫu nhiên, các mẫu bootstrap được sử dụng theo mặc định (
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
64) trong khi chiến lược mặc định cho các cây phụ là sử dụng toàn bộ tập dữ liệu (
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
65). Khi sử dụng lấy mẫu bootstrap, lỗi tổng quát hóa có thể được ước tính trên các mẫu còn lại hoặc ngoài túi. Điều này có thể được kích hoạt bằng cách cài đặt
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
3

Ghi chú

Kích thước của mô hình với các tham số mặc định là \(O( M * N * log (N) )\) , trong đó . Để giảm kích thước của mô hình, bạn có thể thay đổi các tham số này. ________ 267, ________ 268, ________ 269 và ________ 360. \(M\) is the number of trees and \(N\) is the number of samples. In order to reduce the size of the model, you can change these parameters:

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
67,
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
68,
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
69 and
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
60.

1. 11. 2. 4. Song song¶

Cuối cùng, mô-đun này cũng có tính năng xây dựng song song các cây và tính toán song song các dự đoán thông qua tham số

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
61. Nếu
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
62 thì các tính toán được phân chia thành các công việc
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
63 và chạy trên các lõi
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
63 của máy. Nếu
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
65 thì tất cả các lõi có trên máy đều được sử dụng. Lưu ý rằng do chi phí liên lạc giữa các quá trình, tốc độ tăng tốc có thể không tuyến tính (i. e. , sử dụng công việc ________ 363 rất tiếc sẽ không nhanh bằng ________ 363 lần). Tốc độ tăng đáng kể vẫn có thể đạt được mặc dù khi xây dựng một số lượng lớn cây hoặc khi xây dựng một cây đơn lẻ cần một khoảng thời gian hợp lý (e. g. , trên tập dữ liệu lớn)

ví dụ

  • Vẽ các bề mặt quyết định của quần thể cây trên bộ dữ liệu mống mắt

  • Tầm quan trọng của pixel với một rừng cây song song

  • Hoàn thành khuôn mặt với một công cụ ước tính nhiều đầu ra

Người giới thiệu

[ B2001 ]

  1. Breiman, “Rừng ngẫu nhiên”, Học máy, 45(1), 5-32, 2001

[ B1998 ]

  1. Breiman, “Arcing Classifiers”, Annals of Statistics 1998

  • P. Geurts, D. Ernst. , và tôi. Wehenkel, “Cây cực kỳ ngẫu nhiên”, Học máy, 63(1), 3-42, 2006

1. 11. 2. 5. Đánh giá tầm quan trọng của tính năng¶

Thứ hạng tương đối (i. e. độ sâu) của một tính năng được sử dụng làm nút quyết định trong cây có thể được sử dụng để đánh giá tầm quan trọng tương đối của tính năng đó đối với khả năng dự đoán của biến mục tiêu. Các tính năng được sử dụng ở đầu cây góp phần vào quyết định dự đoán cuối cùng của một phần lớn hơn các mẫu đầu vào. Do đó, phần dự kiến ​​của các mẫu mà chúng đóng góp có thể được sử dụng làm ước tính về tầm quan trọng tương đối của các tính năng. Trong scikit-learning, tỷ lệ mẫu mà một tính năng đóng góp được kết hợp với việc giảm tạp chất từ ​​việc phân tách chúng để tạo ra ước tính chuẩn hóa về khả năng dự đoán của tính năng đó

Bằng cách lấy trung bình các ước tính về khả năng dự đoán trên một số cây ngẫu nhiên, người ta có thể giảm phương sai của ước tính đó và sử dụng nó để lựa chọn tính năng. Điều này được gọi là mức giảm trung bình của tạp chất, hoặc MDI. Tham khảo [L2014] để biết thêm thông tin về MDI và đánh giá tầm quan trọng của tính năng với Rừng ngẫu nhiên.

Cảnh báo

Tầm quan trọng của tính năng dựa trên tạp chất được tính toán trên các mô hình dựa trên cây có hai sai sót có thể dẫn đến kết luận sai lệch. Đầu tiên, chúng được tính toán dựa trên số liệu thống kê thu được từ tập dữ liệu huấn luyện và do đó không nhất thiết phải thông báo cho chúng tôi về tính năng nào là quan trọng nhất để đưa ra dự đoán tốt trên tập dữ liệu đã lưu giữ. Thứ hai, họ ưu tiên các tính năng có cardinality cao, tức là các tính năng có nhiều giá trị độc đáo. Tầm quan trọng của tính năng hoán vị là một giải pháp thay thế cho tầm quan trọng của tính năng dựa trên tạp chất không mắc phải những sai sót này. Hai phương pháp để có được tầm quan trọng của tính năng được khám phá trong. Tầm quan trọng của hoán vị so với Tầm quan trọng của tính năng rừng ngẫu nhiên (MDI) .

Ví dụ sau đây hiển thị biểu diễn được mã hóa màu về tầm quan trọng tương đối của từng pixel riêng lẻ đối với tác vụ nhận dạng khuôn mặt bằng mô hình

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
52

Python hồi quy bootstrap

Trong thực tế, những ước tính đó được lưu trữ dưới dạng một thuộc tính có tên

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
69 trên mô hình được trang bị. Đây là một mảng có hình dạng
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
60 có giá trị dương và tổng bằng 1. 0. Giá trị càng cao, sự đóng góp của tính năng khớp với chức năng dự đoán càng quan trọng

ví dụ

  • Tầm quan trọng của pixel với một rừng cây song song

  • Tính năng quan trọng với một rừng cây

Người giới thiệu

[ L2014 ]

G. Louppe, “Hiểu rừng ngẫu nhiên. Từ lý thuyết đến thực tiễn”, Luận án tiến sĩ, U. của Liège, 2014

1. 11. 2. 6. Nhúng cây hoàn toàn ngẫu nhiên¶

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
61 thực hiện chuyển đổi dữ liệu không giám sát. Sử dụng một rừng cây hoàn toàn ngẫu nhiên,
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
61 mã hóa dữ liệu theo chỉ số của lá mà điểm dữ liệu kết thúc bằng. Chỉ mục này sau đó được mã hóa theo cách một trong K, dẫn đến mã hóa nhị phân thưa thớt, nhiều chiều. Mã này có thể được tính toán rất hiệu quả và sau đó có thể được sử dụng làm cơ sở cho các nhiệm vụ học tập khác. Kích thước và độ thưa thớt của mã có thể bị ảnh hưởng bằng cách chọn số lượng cây và độ sâu tối đa trên mỗi cây. Đối với mỗi cây trong quần thể, mã hóa chứa một mục của một. Kích thước của mã hóa tối đa là
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
63, số lượng lá tối đa trong rừng

Vì các điểm dữ liệu lân cận có nhiều khả năng nằm trong cùng một lá của cây, phép biến đổi thực hiện ước tính mật độ ẩn, không tham số

ví dụ

  • Chuyển đổi tính năng băm bằng cách sử dụng Cây hoàn toàn ngẫu nhiên

  • Học đa dạng trên các chữ số viết tay. Locally Linear Embedding, Isomap… so sánh các kỹ thuật giảm kích thước phi tuyến tính trên các chữ số viết tay.

  • Các phép biến đổi tính năng với nhóm cây so sánh các phép biến đổi tính năng dựa trên cây được giám sát và không được giám sát.

Xem thêm

Học đa dạng cũng có thể hữu ích để rút ra các biểu diễn phi tuyến tính của không gian đặc trưng, ​​đồng thời các phương pháp này cũng tập trung vào việc giảm kích thước.

1. 11. 3. AdaBoost¶

Mô-đun

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
5 bao gồm thuật toán tăng tốc phổ biến AdaBoost, được giới thiệu vào năm 1995 bởi Freund và Schapire [FS1995] .

Nguyên tắc cốt lõi của AdaBoost là phù hợp với một chuỗi những người học yếu (i. e. , các mô hình chỉ tốt hơn một chút so với phỏng đoán ngẫu nhiên, chẳng hạn như cây quyết định nhỏ) trên các phiên bản dữ liệu được sửa đổi nhiều lần. Các dự đoán từ tất cả chúng sau đó được kết hợp thông qua một cuộc bỏ phiếu đa số có trọng số (hoặc tổng) để đưa ra dự đoán cuối cùng. Việc sửa đổi dữ liệu ở mỗi lần lặp được gọi là tăng cường bao gồm việc áp dụng các trọng số \(w_1\) , \(w_2 . Ban đầu, tất cả các trọng số đó được đặt thành , …, \(w_N\) to each of the training samples. Initially, those weights are all set to \(w_i = 1/N\) , do đó, bước đầu tiên chỉ đơn giản là đào tạo một người học yếu trên dữ liệu gốc. Đối với mỗi lần lặp lại liên tiếp, các trọng số mẫu được sửa đổi riêng lẻ và thuật toán học được áp dụng lại cho dữ liệu được điều chỉnh lại. Tại một bước nhất định, những ví dụ đào tạo được dự đoán không chính xác bởi mô hình được tăng cường gây ra ở bước trước đó có trọng số tăng lên, trong khi trọng số bị giảm đối với những ví dụ được dự đoán chính xác. Khi lặp đi lặp lại, các ví dụ khó dự đoán sẽ nhận được ảnh hưởng ngày càng tăng. Do đó, mỗi người học yếu kém tiếp theo buộc phải tập trung vào các ví dụ mà những người trước đó bỏ qua trong trình tự [HTF] .

Python hồi quy bootstrap

AdaBoost có thể được sử dụng cho cả bài toán phân loại và hồi quy

  • Đối với phân loại nhiều lớp,

    >>> from sklearn.model_selection import cross_val_score
    >>> from sklearn.datasets import load_iris
    >>> from sklearn.ensemble import AdaBoostClassifier
    
    >>> X, y = load_iris(return_X_y=True)
    >>> clf = AdaBoostClassifier(n_estimators=100)
    >>> scores = cross_val_score(clf, X, y, cv=5)
    >>> scores.mean()
    0.9...
    
    65 triển khai AdaBoost-SAMME và AdaBoost-SAMME. R [ZZRH2009] .

  • Đối với hồi quy,

    >>> from sklearn.model_selection import cross_val_score
    >>> from sklearn.datasets import load_iris
    >>> from sklearn.ensemble import AdaBoostClassifier
    
    >>> X, y = load_iris(return_X_y=True)
    >>> clf = AdaBoostClassifier(n_estimators=100)
    >>> scores = cross_val_score(clf, X, y, cv=5)
    >>> scores.mean()
    0.9...
    
    66 triển khai AdaBoost. R2 [D1997] .

1. 11. 3. 1. Sử dụng¶

Ví dụ sau đây cho thấy cách điều chỉnh bộ phân loại AdaBoost với 100 người học yếu

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...

Số học sinh yếu được kiểm soát bởi tham số

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
54. Tham số
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
68 kiểm soát sự đóng góp của những người học yếu trong tổ hợp cuối cùng. Theo mặc định, những người học yếu kém là những gốc quyết định. Những người học yếu khác nhau có thể được chỉ định thông qua tham số
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
69. Các tham số chính cần điều chỉnh để thu được kết quả tốt là
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
54 và độ phức tạp của các công thức ước lượng cơ sở (e. g. , độ sâu của nó
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
69 hoặc số lượng mẫu tối thiểu cần thiết để xem xét sự phân tách
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
67)

ví dụ

  • AdaBoost rời rạc so với AdaBoost thực so sánh lỗi phân loại của gốc quyết định, cây quyết định và gốc quyết định được tăng cường bằng cách sử dụng AdaBoost-SAMME và AdaBoost-SAMME. R.

  • Cây quyết định AdaBoosted nhiều lớp thể hiện hiệu suất của AdaBoost-SAMME và AdaBoost-SAMME. R về một vấn đề nhiều lớp.

  • AdaBoost hai lớp hiển thị ranh giới quyết định và giá trị hàm quyết định cho vấn đề hai lớp có thể phân tách phi tuyến tính bằng AdaBoost-SAMME.

  • Hồi quy cây quyết định với AdaBoost thể hiện hồi quy với AdaBoost. thuật toán R2.

Người giới thiệu

[ FS1995 ]

Y. Freund và R. Schapire, “Khái quát hóa lý thuyết quyết định của học tập trực tuyến và ứng dụng để thúc đẩy”, 1997

[ ZZRH2009 ]

J. Zhu, H. Châu, S. Rosset, T. hấp tấp. “AdaBoost đa lớp”, 2009

[ D1997 ]

  1. người uống rượu. “Cải thiện hồi quy bằng cách sử dụng các kỹ thuật tăng cường”, 1997

[ HTF ] (1,2,3)

T. vội vã, R. Tibshirani và J. Friedman, “Các yếu tố của học tập thống kê Ed. 2”, Mùa xuân, 2009

1. 11. 4. Tăng cường cây chuyển sắc¶

Cây tăng cường độ dốc hoặc Cây quyết định tăng cường độ dốc (GBDT) là sự tổng quát hóa của việc tăng cường cho các hàm mất khả năng phân biệt tùy ý, hãy xem công việc chính của [Friedman2001]. GBDT is an accurate and effective off-the-shelf procedure that can be used for both regression and classification problems in a variety of areas including Web search ranking and ecology.

Mô-đun

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
5 cung cấp các phương pháp cho cả phân loại và hồi quy thông qua cây quyết định tăng cường độ dốc

Ghi chú

Scikit-learning 0. 21 giới thiệu hai triển khai mới của cây tăng cường độ dốc, cụ thể là

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
14 và
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
15, lấy cảm hứng từ LightGBM (Xem [LightGBM] ).

Các công cụ ước tính dựa trên biểu đồ này có thể có cấp độ nhanh hơn

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
16 và
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
17 khi số lượng mẫu lớn hơn hàng chục nghìn mẫu

Chúng cũng có hỗ trợ tích hợp cho các giá trị bị thiếu, giúp tránh sự cần thiết của một máy tính

Các công cụ ước tính này được mô tả chi tiết hơn bên dưới trong Tăng cường độ dốc dựa trên biểu đồ .

Hướng dẫn sau đây tập trung vào

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
16 và
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
17, có thể được ưu tiên cho các cỡ mẫu nhỏ vì việc tạo thành nhóm có thể dẫn đến các điểm phân tách quá gần đúng trong cài đặt này

Việc sử dụng và các thông số của

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
16 và
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
17 được mô tả bên dưới. 2 tham số quan trọng nhất của các công cụ ước tính này là
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
54 và
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
68

1. 11. 4. 1. Phân loại¶

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
16 hỗ trợ cả phân loại nhị phân và đa lớp. Ví dụ sau đây cho thấy cách điều chỉnh bộ phân loại tăng cường độ dốc với 100 gốc quyết định khi người học yếu

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
5

Số học sinh yếu kém (i. e. cây hồi quy) được điều khiển bởi tham số

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
54; .
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
68 là một siêu tham số trong phạm vi (0. 0, 1. 0] kiểm soát quá mức thông qua The size of each tree can be controlled either by setting the tree depth via
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
69 or by setting the number of leaf nodes via
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
68. The
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
68 is a hyper-parameter in the range (0.0, 1.0] that controls overfitting via co rút .

Ghi chú

Việc phân loại có nhiều hơn 2 lớp yêu cầu tạo ra _______779 cây hồi quy ở mỗi lần lặp, do đó, tổng số cây được tạo ra bằng _______1200. Đối với các bộ dữ liệu có số lượng lớn các lớp, chúng tôi thực sự khuyên bạn nên sử dụng

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
14 thay thế cho
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
16

1. 11. 4. 2. Hồi quy¶

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
17 hỗ trợ một số hàm mất mát khác nhau cho hồi quy có thể được chỉ định thông qua đối số
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
204; .

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
6

Hình dưới đây cho thấy kết quả của việc áp dụng

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
17 với tổn thất bình phương nhỏ nhất và 500 người học cơ sở cho bộ dữ liệu bệnh tiểu đường (
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
207). Biểu đồ hiển thị lỗi đào tạo và kiểm tra ở mỗi lần lặp. Lỗi đào tạo ở mỗi lần lặp được lưu trữ trong thuộc tính
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
208 của mô hình tăng cường độ dốc. Có thể thu được lỗi kiểm tra ở mỗi lần lặp lại thông qua phương pháp
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
209 trả về một trình tạo mang lại các dự đoán ở mỗi giai đoạn. Các ô như thế này có thể được sử dụng để xác định số lượng cây tối ưu (i. e.
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
54) bằng cách dừng sớm

Python hồi quy bootstrap

ví dụ

  • Hồi quy tăng cường độ dốc

  • Ước tính Out-of-Bag của Gradient Boosting

1. 11. 4. 3. Bổ trợ thêm cho những học sinh yếu kém¶

Cả

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
17 và
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
16 đều hỗ trợ
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
213 cho phép bạn thêm nhiều công cụ ước tính hơn vào một mô hình đã được trang bị sẵn

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
6

1. 11. 4. 4. Kiểm soát kích thước cây¶

Kích thước của những người học cơ sở cây hồi quy xác định mức độ tương tác thay đổi có thể được mô hình tăng cường độ dốc nắm bắt. Nói chung, một cây có chiều sâu

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
214 có thể nắm bắt các tương tác theo thứ tự
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
214. Có hai cách để kiểm soát kích thước của các cây hồi quy riêng lẻ

Nếu bạn chỉ định

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
216 thì cây nhị phân hoàn chỉnh có độ sâu
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
214 sẽ được phát triển. Những cây như vậy sẽ có (nhiều nhất)
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
218 nút lá và
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
219 nút tách

Ngoài ra, bạn có thể kiểm soát kích thước cây bằng cách chỉ định số nút lá thông qua tham số

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
68. Trong trường hợp này, cây sẽ được trồng bằng cách sử dụng tìm kiếm tốt nhất đầu tiên trong đó các nút có mức độ tạp chất được cải thiện cao nhất sẽ được mở rộng trước. Một cây có
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
221 có các nút phân tách
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
222 và do đó có thể mô hình hóa các tương tác lên tới thứ tự
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
223

Chúng tôi nhận thấy rằng

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
221 cho kết quả tương đương với
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
225 nhưng đào tạo nhanh hơn đáng kể với chi phí là lỗi đào tạo cao hơn một chút. Tham số
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
68 tương ứng với biến
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
227 trong chương về tăng cường độ dốc trong [Friedman2001] và có liên quan đến tham số
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
228 trong gói gbm của R trong đó
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
229.

1. 11. 4. 5. Công thức toán học¶

Trước tiên, chúng tôi trình bày GBRT cho hồi quy, sau đó nêu chi tiết trường hợp phân loại

1. 11. 4. 5. 1. Hồi quy¶

Các biến hồi quy GBRT là các mô hình cộng có dự đoán \(\hat{y}_i\) cho một đầu vào nhất định \(x_i\) is of the following form:

\[\hat{y}_i = F_M(x_i) = \sum_{m=1}^{M} h_m(x_i)\]

trong đó \(h_m\) là công cụ ước tính được gọi là người học yếu trong bối cảnh tăng cường. Tăng cường cây chuyển màu sử dụng các biến hồi quy cây quyết định có kích thước cố định như những người học yếu. Hằng số M tương ứng với tham số

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
54.

Tương tự như các thuật toán tăng tốc khác, GBRT được xây dựng theo kiểu tham lam

\[F_m(x) = F_{m-1}(x) + h_m(x),\]

nơi cây mới được thêm vào \(h_m\) được lắp vào để giảm thiểu tổng thiệt hại \(L_m\), given the previous ensemble \(F_{m-1}\):

\[h_m = \arg\min_{h} L_m = \arg\min_{h} \sum_{i=1}^{n} l(y_i, F_{m-1}(x_i) + h(x_i))

where \(l(y_i, F(x_i))\) được xác định bởi tham số

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
204, chi tiết trong phần tiếp theo.

Theo mặc định, mô hình ban đầu \(F_{0}\) được chọn làm hằng số giúp giảm thiểu tổn thất. đối với tổn thất bình phương nhỏ nhất, đây là giá trị trung bình theo kinh nghiệm của các giá trị mục tiêu. Mô hình ban đầu cũng có thể được chỉ định thông qua đối số

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
232.

Sử dụng xấp xỉ Taylor bậc nhất, giá trị của \(l\) có thể được xấp xỉ như sau.

\[l(y_i, F_{m-1}(x_i) + h_m(x_i)) \approx l(y_i, F_{m-1}(x_i)) + h_m(x_i) \left[ \frac{\partial . \]

Ghi chú

Tóm lại, xấp xỉ Taylor bậc nhất nói rằng \(l(z) \approx l(a) + (z - a) \frac{\partial l(a . Ở đây, . Here, \(z\) tương ứng với \(F_{m - 1}(x_i) + h_m(, and \(a\) corresponds to \(F_{m-1}(x_i)\)

Số lượng \(\left[ \frac{\partial l(y_i, F(x_i))}{\partial F(x_i)} \right]_{F . Dễ dàng tính toán cho bất kỳ is the derivative of the loss with respect to its second parameter, evaluated at \(F_{m-1}(x)\). It is easy to compute for any given \(F_{m - 1}(x_i)\) nào ở dạng đóng vì tổn thất có thể khả vi. Chúng tôi sẽ biểu thị nó bằng \(g_i\) .

Loại bỏ các số hạng không đổi, ta có

\[h_m \approx \arg\min_{h} \sum_{i=1}^{n} h(x_i) g_i\]

Điều này được giảm thiểu nếu \(h(x_i)\) phù hợp để dự đoán một giá trị tỷ lệ với độ dốc âm \(-g_i\). Therefore, at each iteration, the estimator \(h_m\) được trang bị để dự đoán độ dốc âm của các mẫu. Các gradient được cập nhật ở mỗi lần lặp lại. Đây có thể được coi là một số kiểu giảm dần độ dốc trong một không gian chức năng.

Ghi chú

Đối với một số tổn thất, e. g. độ lệch tuyệt đối nhỏ nhất (LAD) trong đó độ dốc là \(\pm 1\) , các giá trị được dự đoán bởi một \(h_m\) are not accurate enough: the tree can only output integer values. As a result, the leaves values of the tree \(h_m\) được sửa đổi sau khi cây được lắp vào, sao cho các giá trị lá giảm thiểu tổn thất < . Bản cập nhật phụ thuộc vào tổn thất. đối với tổn thất LAD, giá trị của một lá được cập nhật thành giá trị trung bình của các mẫu trong lá đó. \(L_m\). The update is loss-dependent: for the LAD loss, the value of a leaf is updated to the median of the samples in that leaf.

1. 11. 4. 5. 2. Phân loại¶

Tăng độ dốc để phân loại rất giống với trường hợp hồi quy. Tuy nhiên, tổng của các cây \(F_M(x_i) = \sum_m h_m(x_i)\) không đồng nhất với dự đoán. nó không thể là một lớp, vì cây dự đoán các giá trị liên tục.

Việc ánh xạ từ giá trị \(F_M(x_i)\) tới một lớp hoặc xác suất phụ thuộc vào tổn thất. Đối với trường hợp mất nhật ký, xác suất mà \(x_i\) thuộc loại tích cực được mô hình hóa là \ . x_i) = \sigma(F_M(x_i))\) trong đó \(\sigma\) là sigmoid .

Đối với phân loại nhiều lớp, K cây (đối với K lớp) được tạo ở mỗi lần lặp \(M\) . Xác suất mà \(x_i\) thuộc lớp k được mô hình hóa dưới dạng softmax của \(F_{ . values.

Lưu ý rằng ngay cả đối với tác vụ phân loại, công cụ ước lượng phụ \(h_m\) vẫn là một biến hồi quy, không phải là một hàm phân loại. Điều này là do các công cụ ước tính phụ được đào tạo để dự đoán độ dốc (âm), luôn là đại lượng liên tục.

1. 11. 4. 6. Hàm mất mát¶

Các hàm mất mát sau đây được hỗ trợ và có thể được chỉ định bằng tham số

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
204

  • hồi quy

    • Lỗi bình phương (

      >>> from sklearn.model_selection import cross_val_score
      >>> from sklearn.datasets import make_blobs
      >>> from sklearn.ensemble import RandomForestClassifier
      >>> from sklearn.ensemble import ExtraTreesClassifier
      >>> from sklearn.tree import DecisionTreeClassifier
      
      >>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
      ..     random_state=0)
      
      >>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
      ..     random_state=0)
      >>> scores = cross_val_score(clf, X, y, cv=5)
      >>> scores.mean()
      0.98...
      
      >>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
      ..     min_samples_split=2, random_state=0)
      >>> scores = cross_val_score(clf, X, y, cv=5)
      >>> scores.mean()
      0.999...
      
      >>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
      ..     min_samples_split=2, random_state=0)
      >>> scores = cross_val_score(clf, X, y, cv=5)
      >>> scores.mean() > 0.999
      True
      
      205). Sự lựa chọn tự nhiên cho hồi quy do tính chất tính toán vượt trội của nó. Mô hình ban đầu được đưa ra bởi giá trị trung bình của các giá trị mục tiêu

    • Độ lệch tuyệt đối nhỏ nhất (

      >>> from sklearn.model_selection import cross_val_score
      >>> from sklearn.datasets import make_blobs
      >>> from sklearn.ensemble import RandomForestClassifier
      >>> from sklearn.ensemble import ExtraTreesClassifier
      >>> from sklearn.tree import DecisionTreeClassifier
      
      >>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
      ..     random_state=0)
      
      >>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
      ..     random_state=0)
      >>> scores = cross_val_score(clf, X, y, cv=5)
      >>> scores.mean()
      0.98...
      
      >>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
      ..     min_samples_split=2, random_state=0)
      >>> scores = cross_val_score(clf, X, y, cv=5)
      >>> scores.mean()
      0.999...
      
      >>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
      ..     min_samples_split=2, random_state=0)
      >>> scores = cross_val_score(clf, X, y, cv=5)
      >>> scores.mean() > 0.999
      True
      
      235). Một hàm mất mát mạnh mẽ cho hồi quy. Mô hình ban đầu được đưa ra bởi trung bình của các giá trị mục tiêu

    • Huber (______1236). Một hàm mất mát mạnh mẽ khác kết hợp bình phương nhỏ nhất và độ lệch tuyệt đối nhỏ nhất; . [Friedman2001] for more details).

    • Số lượng phân vị (______1238). Hàm mất mát cho hồi quy lượng tử. Sử dụng

      >>> from sklearn.model_selection import cross_val_score
      >>> from sklearn.datasets import make_blobs
      >>> from sklearn.ensemble import RandomForestClassifier
      >>> from sklearn.ensemble import ExtraTreesClassifier
      >>> from sklearn.tree import DecisionTreeClassifier
      
      >>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
      ..     random_state=0)
      
      >>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
      ..     random_state=0)
      >>> scores = cross_val_score(clf, X, y, cv=5)
      >>> scores.mean()
      0.98...
      
      >>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
      ..     min_samples_split=2, random_state=0)
      >>> scores = cross_val_score(clf, X, y, cv=5)
      >>> scores.mean()
      0.999...
      
      >>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
      ..     min_samples_split=2, random_state=0)
      >>> scores = cross_val_score(clf, X, y, cv=5)
      >>> scores.mean() > 0.999
      True
      
      239 để chỉ định lượng tử. Hàm mất mát này có thể được sử dụng để tạo các khoảng thời gian dự đoán (xem Khoảng thời gian dự đoán cho hồi quy tăng cường độ dốc ).

  • phân loại

    • Mất nhật ký nhị phân (______1240). Hàm mất khả năng log âm nhị thức để phân loại nhị phân. Nó cung cấp ước tính xác suất. Mô hình ban đầu được đưa ra bởi tỷ lệ chênh lệch log

    • Mất log nhiều lớp (______1240). Hàm mất khả năng log âm đa thức cho phân loại nhiều lớp với

      >>> from sklearn.model_selection import cross_val_score
      >>> from sklearn.datasets import load_iris
      >>> from sklearn.ensemble import AdaBoostClassifier
      
      >>> X, y = load_iris(return_X_y=True)
      >>> clf = AdaBoostClassifier(n_estimators=100)
      >>> scores = cross_val_score(clf, X, y, cv=5)
      >>> scores.mean()
      0.9...
      
      79 lớp loại trừ lẫn nhau. Nó cung cấp ước tính xác suất. Mô hình ban đầu được đưa ra bởi xác suất trước của mỗi lớp. Tại mỗi lần lặp lại, cây hồi quy
      >>> from sklearn.model_selection import cross_val_score
      >>> from sklearn.datasets import load_iris
      >>> from sklearn.ensemble import AdaBoostClassifier
      
      >>> X, y = load_iris(return_X_y=True)
      >>> clf = AdaBoostClassifier(n_estimators=100)
      >>> scores = cross_val_score(clf, X, y, cv=5)
      >>> scores.mean()
      0.9...
      
      79 phải được xây dựng, điều này làm cho GBRT không hiệu quả đối với các tập dữ liệu có số lượng lớn các lớp

    • Mất theo cấp số nhân (

      >>> from sklearn.model_selection import cross_val_score
      >>> from sklearn.datasets import make_blobs
      >>> from sklearn.ensemble import RandomForestClassifier
      >>> from sklearn.ensemble import ExtraTreesClassifier
      >>> from sklearn.tree import DecisionTreeClassifier
      
      >>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
      ..     random_state=0)
      
      >>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
      ..     random_state=0)
      >>> scores = cross_val_score(clf, X, y, cv=5)
      >>> scores.mean()
      0.98...
      
      >>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
      ..     min_samples_split=2, random_state=0)
      >>> scores = cross_val_score(clf, X, y, cv=5)
      >>> scores.mean()
      0.999...
      
      >>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
      ..     min_samples_split=2, random_state=0)
      >>> scores = cross_val_score(clf, X, y, cv=5)
      >>> scores.mean() > 0.999
      True
      
      244). Chức năng mất tương tự như
      >>> from sklearn.model_selection import cross_val_score
      >>> from sklearn.datasets import load_iris
      >>> from sklearn.ensemble import AdaBoostClassifier
      
      >>> X, y = load_iris(return_X_y=True)
      >>> clf = AdaBoostClassifier(n_estimators=100)
      >>> scores = cross_val_score(clf, X, y, cv=5)
      >>> scores.mean()
      0.9...
      
      65. Ít mạnh mẽ hơn đối với các ví dụ bị dán nhãn sai so với
      >>> from sklearn.model_selection import cross_val_score
      >>> from sklearn.datasets import make_blobs
      >>> from sklearn.ensemble import RandomForestClassifier
      >>> from sklearn.ensemble import ExtraTreesClassifier
      >>> from sklearn.tree import DecisionTreeClassifier
      
      >>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
      ..     random_state=0)
      
      >>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
      ..     random_state=0)
      >>> scores = cross_val_score(clf, X, y, cv=5)
      >>> scores.mean()
      0.98...
      
      >>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
      ..     min_samples_split=2, random_state=0)
      >>> scores = cross_val_score(clf, X, y, cv=5)
      >>> scores.mean()
      0.999...
      
      >>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
      ..     min_samples_split=2, random_state=0)
      >>> scores = cross_val_score(clf, X, y, cv=5)
      >>> scores.mean() > 0.999
      True
      
      240;

1. 11. 4. 7. Suy giảm thông qua tỷ lệ học tập¶

[Friedman2001] đã đề xuất một chiến lược chính quy hóa đơn giản giúp chia tỷ lệ đóng góp của mỗi người học yếu theo hệ số không đổi \(\nu\)< . :

\[F_m(x) = F_{m-1}(x) + \nu h_m(x)\]

Tham số \(\nu\) còn được gọi là tốc độ học vì nó chia tỷ lệ độ dài bước của quy trình giảm dần độ dốc; .

Tham số

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
68 tương tác mạnh với tham số
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
54, số lượng học viên yếu để phù hợp. Các giá trị nhỏ hơn của
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
68 yêu cầu số lượng người học yếu lớn hơn để duy trì lỗi đào tạo liên tục. Bằng chứng thực nghiệm cho thấy rằng các giá trị nhỏ của
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
68 có lợi cho lỗi kiểm tra tốt hơn. [HTF] khuyên bạn nên đặt tốc độ học thành một hằng số nhỏ (e. g.
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
252) và chọn
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
54 bằng cách dừng sớm. Để thảo luận chi tiết hơn về sự tương tác giữa
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
68 và
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
54, hãy xem [R2007] .

1. 11. 4. 8. Lấy mẫu phụ¶

[Friedman2002] đã đề xuất tăng cường độ dốc ngẫu nhiên, kết hợp tăng cường độ dốc với tính trung bình bootstrap (đóng gói). Tại mỗi lần lặp lại, trình phân loại cơ sở được đào tạo trên một phần nhỏ

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
256 của dữ liệu đào tạo có sẵn. Mẫu phụ được rút ra mà không cần thay thế. Giá trị điển hình của
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
256 là 0. 5.

Hình bên dưới minh họa ảnh hưởng của việc thu nhỏ và lấy mẫu con đối với mức độ phù hợp của mô hình. Chúng ta có thể thấy rõ rằng sự co ngót vượt trội so với không co ngót. Lấy mẫu con với độ co ngót có thể làm tăng thêm độ chính xác của mô hình. Mặt khác, việc lấy mẫu con không co ngót lại hoạt động kém

Python hồi quy bootstrap

Một chiến lược khác để giảm phương sai là lấy mẫu con các đặc điểm tương tự với các phân tách ngẫu nhiên trong

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
9. Số lượng các tính năng lấy mẫu phụ có thể được kiểm soát thông qua tham số
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
0

Ghi chú

Sử dụng một giá trị nhỏ

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
0 có thể làm giảm đáng kể thời gian chạy

Tăng cường độ dốc ngẫu nhiên cho phép tính toán các ước tính sẵn có về độ lệch thử nghiệm bằng cách tính toán sự cải thiện độ lệch trên các ví dụ không có trong mẫu bootstrap (i. e. các ví dụ xuất túi). Các cải tiến được lưu trữ trong thuộc tính

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
261.
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
262 giữ nguyên sự cải thiện về tổn thất trên các mẫu OOB nếu bạn thêm giai đoạn thứ i vào các dự đoán hiện tại. Có thể sử dụng các ước tính ngoài túi để lựa chọn mô hình, chẳng hạn như để xác định số lần lặp lại tối ưu. Các ước tính OOB thường rất bi quan, do đó chúng tôi khuyên bạn nên sử dụng xác thực chéo thay thế và chỉ sử dụng OOB nếu xác thực chéo quá tốn thời gian

ví dụ

  • Chính quy hóa tăng cường độ dốc

  • Ước tính Out-of-Bag của Gradient Boosting

  • Lỗi OOB cho các khu rừng ngẫu nhiên

1. 11. 4. 9. Giải thích với tầm quan trọng của tính năng¶

Các cây quyết định riêng lẻ có thể được giải thích dễ dàng bằng cách trực quan hóa cấu trúc cây. Tuy nhiên, các mô hình tăng cường độ dốc bao gồm hàng trăm cây hồi quy, do đó chúng không thể được giải thích dễ dàng bằng cách kiểm tra trực quan từng cây riêng lẻ. May mắn thay, một số kỹ thuật đã được đề xuất để tóm tắt và giải thích các mô hình tăng cường độ dốc

Thông thường các tính năng không đóng góp như nhau để dự đoán phản hồi mục tiêu; . Khi giải thích một mô hình, câu hỏi đầu tiên thường là. những tính năng quan trọng đó là gì và chúng đóng góp như thế nào trong việc dự đoán phản hồi mục tiêu?

Cây quyết định riêng lẻ về bản chất thực hiện lựa chọn tính năng bằng cách chọn các điểm phân chia thích hợp. Thông tin này có thể được sử dụng để đo lường tầm quan trọng của từng tính năng; . một tính năng được sử dụng trong các điểm phân chia của cây càng thường xuyên thì tính năng đó càng quan trọng. Khái niệm về tầm quan trọng này có thể được mở rộng cho các nhóm cây quyết định bằng cách đơn giản lấy trung bình tầm quan trọng của tính năng dựa trên tạp chất của mỗi cây (xem Đánh giá tầm quan trọng của tính năng để biết thêm chi tiết).

Điểm quan trọng của tính năng của mô hình tăng độ dốc phù hợp có thể được truy cập thông qua thuộc tính

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
69

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
6

Lưu ý rằng tính toán về tầm quan trọng của tính năng này dựa trên entropy và nó khác với

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
264 dựa trên hoán vị của các tính năng

ví dụ

  • Hồi quy tăng cường độ dốc

Người giới thiệu

[ Friedman2001 ] (1,2,3,4)

Friedman, J. H. (2001). Xấp xỉ hàm tham lam. Máy tăng cường độ dốc. Biên niên sử thống kê, 29, 1189-1232

[ Friedman2002 ]

Friedman, J. H. (2002). Tăng cường độ dốc ngẫu nhiên. Thống kê tính toán & Phân tích dữ liệu, 38, 367-378

[ R2007 ]

G. Con đường mòn (2006). Mô hình tăng cường tổng quát. Hướng dẫn về gói gbm

1. 11. 5. Tăng cường độ dốc dựa trên biểu đồ¶

Scikit-learning 0. Ngày 21 tháng 10 đã giới thiệu hai triển khai mới của cây tăng cường độ dốc, đó là

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
14 và
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
15, lấy cảm hứng từ LightGBM (Xem [LightGBM] ).

Các công cụ ước tính dựa trên biểu đồ này có thể có cấp độ nhanh hơn

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
16 và
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
17 khi số lượng mẫu lớn hơn hàng chục nghìn mẫu

Chúng cũng có hỗ trợ tích hợp cho các giá trị bị thiếu, giúp tránh sự cần thiết của một máy tính

Các công cụ ước tính nhanh này trước tiên sẽ chuyển các mẫu đầu vào

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
269 thành các ngăn có giá trị số nguyên (thường là 256 ngăn), giúp giảm đáng kể số điểm phân tách cần xem xét và cho phép thuật toán tận dụng các cấu trúc dữ liệu (biểu đồ) dựa trên số nguyên thay vì dựa vào liên tục được sắp xếp . API của các công cụ ước tính này hơi khác một chút và một số tính năng từ
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
16 và
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
17 chưa được hỗ trợ, chẳng hạn như một số hàm mất mát

ví dụ

  • Sự phụ thuộc một phần và các ô mong đợi có điều kiện của cá nhân

1. 11. 5. 1. Sử dụng¶

Hầu hết các tham số không thay đổi từ

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
16 và
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
17. Một ngoại lệ là tham số
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
274 thay thế cho
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
54 và kiểm soát số lần lặp lại của quy trình tăng tốc

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
1

Các tổn thất khả dụng đối với hồi quy là 'squared_error', 'absolute_error', ít nhạy cảm hơn với các giá trị ngoại lệ và 'poisson', rất phù hợp với số lượng và tần suất của mô hình. Để phân loại, ‘log_loss’ là tùy chọn duy nhất. Để phân loại nhị phân, nó sử dụng mất nhật ký nhị phân, còn được gọi là độ lệch nhị thức hoặc entropy chéo nhị phân. Đối với

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
276, nó sử dụng hàm mất nhật ký nhiều lớp, với độ lệch đa thức và entropy chéo phân loại làm tên thay thế. Phiên bản mất dữ liệu thích hợp được chọn dựa trên y được chuyển đến fit .

Kích thước của cây có thể được kiểm soát thông qua các tham số

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
68,
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
69 và
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
60

Số lượng thùng được sử dụng để chuyển dữ liệu được kiểm soát bằng tham số

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
280. Sử dụng ít thùng hơn hoạt động như một hình thức chính quy hóa. Thông thường nên sử dụng càng nhiều thùng càng tốt, đây là giá trị mặc định

Tham số

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
281 là một bộ điều chỉnh của hàm mất mát và tương ứng với \(\lambda\) trong phương trình (2) của [XGBoost].

Lưu ý rằng tính năng dừng sớm được bật theo mặc định nếu số lượng mẫu lớn hơn 10.000. Hành vi dừng sớm được kiểm soát thông qua các tham số

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
282,
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
283,
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
284,
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
285 và
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
286. Có thể dừng sớm việc sử dụng một trình ghi điểm tùy ý hoặc chỉ mất quá trình đào tạo hoặc xác thực. Lưu ý rằng vì lý do kỹ thuật, sử dụng cầu thủ ghi bàn chậm hơn đáng kể so với sử dụng thua. Theo mặc định, dừng sớm được thực hiện nếu có ít nhất 10.000 mẫu trong tập huấn luyện, sử dụng mất xác nhận.

1. 11. 5. 2. Hỗ trợ thiếu giá trị¶

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
14 và
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
15 có hỗ trợ tích hợp cho các giá trị bị thiếu (NaN)

Trong quá trình đào tạo, người trồng cây sẽ học tại mỗi điểm phân tách xem các mẫu có giá trị bị thiếu nên chuyển sang phần con bên trái hay bên phải, dựa trên mức tăng tiềm năng. Khi dự đoán, các mẫu có giá trị bị thiếu sẽ được gán cho con bên trái hoặc bên phải

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
7

Khi mẫu thiếu là dự đoán, việc phân tách có thể được thực hiện dựa trên việc liệu giá trị tính năng có bị thiếu hay không

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
20

Nếu không gặp phải giá trị bị thiếu cho một tính năng nhất định trong quá trình đào tạo, thì các mẫu có giá trị bị thiếu sẽ được ánh xạ tới bất kỳ phần tử con nào có nhiều mẫu nhất

1. 11. 5. 3. Hỗ trợ trọng lượng mẫu¶

______614 và

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
15 trọng lượng hỗ trợ mẫu trong thời gian phù hợp .

Ví dụ về đồ chơi sau đây minh họa cách mô hình bỏ qua các mẫu có trọng lượng mẫu bằng không

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
21

Như bạn có thể thấy,

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
291 được phân loại thoải mái thành
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
292 vì hai mẫu đầu tiên bị bỏ qua do trọng lượng mẫu của chúng

Chi tiết triển khai. lấy trọng lượng mẫu tính đến số lượng để nhân độ dốc (và hessian) với trọng lượng mẫu. Lưu ý rằng giai đoạn tạo thùng (cụ thể là tính toán lượng tử) không tính đến trọng số

1. 11. 5. 4. Hỗ trợ tính năng phân loại¶

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
14 và
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
15 có hỗ trợ riêng cho các tính năng phân loại. họ có thể xem xét phân chia trên dữ liệu phân loại, không theo thứ tự

Đối với các bộ dữ liệu có các tính năng phân loại, sử dụng hỗ trợ phân loại riêng thường tốt hơn là dựa vào mã hóa một lần nóng (

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
295), vì mã hóa một lần yêu cầu độ sâu của cây nhiều hơn để đạt được các phân tách tương đương. Cũng thường tốt hơn nếu dựa vào hỗ trợ phân loại riêng thay vì coi các đặc điểm phân loại là liên tục (thứ tự), điều này xảy ra đối với dữ liệu phân loại được mã hóa theo thứ tự, vì các danh mục là số lượng danh nghĩa trong đó thứ tự không quan trọng

Để bật hỗ trợ phân loại, một mặt nạ boolean có thể được chuyển đến tham số

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
296, cho biết tính năng nào là phân loại. Sau đây, tính năng đầu tiên sẽ được coi là phân loại và tính năng thứ hai là số

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
22

Tương tự, người ta có thể chuyển một danh sách các số nguyên chỉ ra các chỉ số của các tính năng phân loại

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
23

Số lượng bản số của từng đối tượng địa lý phải nhỏ hơn tham số

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
280 và mỗi đối tượng địa lý dự kiến ​​sẽ được mã hóa bằng
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
298. Để đạt được điều đó, có thể hữu ích khi xử lý trước dữ liệu bằng một
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
299 như được thực hiện trong Hỗ trợ tính năng phân loại trong Tăng cường độ dốc .

Nếu có các giá trị bị thiếu trong quá trình đào tạo, các giá trị bị thiếu sẽ được coi là một danh mục phù hợp. Nếu không có giá trị nào bị thiếu trong quá trình đào tạo, thì tại thời điểm dự đoán, các giá trị bị thiếu sẽ được ánh xạ tới nút con có nhiều mẫu nhất (giống như đối với các tính năng liên tục). Khi dự đoán, các danh mục không được nhìn thấy trong thời gian phù hợp sẽ được coi là giá trị bị thiếu

Tìm kiếm phân tách với các tính năng phân loại. Cách chính tắc để xem xét các phân chia phân loại trong một cây là xem xét tất cả các phân vùng \(2^{K - 1} - 1\) , trong đó . Điều này có thể nhanh chóng trở nên nghiêm trọng khi \(K\) is the number of categories. This can quickly become prohibitive when \(K\) lớn. May mắn thay, vì các cây tăng cường độ dốc luôn là cây hồi quy (ngay cả đối với các bài toán phân loại), tồn tại một chiến lược nhanh hơn có thể mang lại các phân tách tương đương. Đầu tiên, các danh mục của một tính năng được sắp xếp theo phương sai của mục tiêu, đối với mỗi danh mục

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
63. Khi các danh mục được sắp xếp, người ta có thể xem xét các phân vùng liên tục, tôi. e. xử lý các danh mục như thể chúng được sắp xếp theo thứ tự các giá trị liên tục (xem Fisher [Fisher1958] để biết bằng chứng chính thức). Do đó, chỉ \(K - 1\) các phần tách cần được xem xét thay vì \(2^ . Việc sắp xếp ban đầu là một . The initial sorting is a \(\mathcal{O}(K \log(K))\) , dẫn đến tổng độ phức tạp là \(\mathcal{O}(K \log(K) + K)\), instead of \(\mathcal{O}(2^K)\).

ví dụ

  • Hỗ trợ tính năng phân loại trong Tăng cường độ dốc

1. 11. 5. 5. Ràng buộc đơn điệu¶

Tùy thuộc vào vấn đề hiện tại, bạn có thể có kiến ​​thức trước cho thấy rằng một tính năng nhất định nói chung sẽ có tác động tích cực (hoặc tiêu cực) đến giá trị mục tiêu. Ví dụ: tất cả những thứ khác đều bình đẳng, điểm tín dụng cao hơn sẽ làm tăng khả năng được chấp thuận cho vay. Các ràng buộc đơn điệu cho phép bạn kết hợp kiến ​​thức trước đó vào mô hình

Ràng buộc đơn điệu dương là một ràng buộc có dạng

\(x_1 \leq x_1' \implies F(x_1, x_2) \leq F(x_1', x_2)\) , trong đó \(F\) is the predictor with two features.

Tương tự, ràng buộc đơn điệu âm có dạng

\(x_1 \leq x_1' \implies F(x_1, x_2) \geq F(x_1', x_2)\) .

Lưu ý rằng các ràng buộc đơn điệu chỉ ràng buộc đầu ra “tất cả những thứ khác đều bằng nhau”. Thật vậy, mối quan hệ sau đây không được thực thi bởi một ràng buộc tích cực. \(x_1 \leq x_1' \implies F(x_1, x_2) \leq F(x_1', x_2')\) .

Bạn có thể chỉ định một ràng buộc đơn điệu trên mỗi tính năng bằng cách sử dụng tham số

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
01. Đối với mỗi tính năng, giá trị 0 biểu thị không có ràng buộc, trong khi -1 và 1 biểu thị ràng buộc âm và dương tương ứng

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
24

Trong bối cảnh phân loại nhị phân, áp đặt một ràng buộc đơn điệu có nghĩa là tính năng được cho là có tác động tích cực/tiêu cực đến xác suất thuộc về lớp tích cực. Các ràng buộc đơn điệu không được hỗ trợ cho ngữ cảnh nhiều lớp

Ghi chú

Vì các danh mục là số lượng không có thứ tự, nên không thể thực thi các ràng buộc đơn điệu đối với các tính năng phân loại

ví dụ

  • ràng buộc đơn điệu

1. 11. 5. 6. Song song cấp thấp¶

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
14 và
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
15 có triển khai sử dụng OpenMP để song song hóa thông qua Cython. Để biết thêm chi tiết về cách kiểm soát số lượng luồng, vui lòng tham khảo ghi chú Song song của chúng tôi.

Các phần sau được song song hóa

  • ánh xạ các mẫu từ các giá trị thực sang các thùng có giá trị số nguyên (tuy nhiên, việc tìm các ngưỡng của thùng là tuần tự)

  • biểu đồ tòa nhà được song song hóa trên các tính năng

  • tìm điểm phân chia tốt nhất tại một nút được song song hóa trên các tính năng

  • trong quá trình điều chỉnh, các mẫu ánh xạ vào các phần con bên trái và bên phải được song song hóa trên các mẫu

  • tính toán độ dốc và hessian được song song hóa trên các mẫu

  • dự đoán được song song hóa trên các mẫu

1. 11. 5. 7. Tại sao nó nhanh hơn¶

Nút thắt cổ chai của quy trình tăng cường độ dốc đang xây dựng cây quyết định. Xây dựng cây quyết định truyền thống (như trong các GBDT khác

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
16 và
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
17) yêu cầu sắp xếp các mẫu tại mỗi nút (cho mỗi tính năng). Việc sắp xếp là cần thiết để có thể tính toán hiệu quả mức tăng tiềm năng của một điểm phân chia. Do đó, việc tách một nút có độ phức tạp là \(\mathcal{O}(n_\text{features} \times n \log(n))\) where \(n\) is the number of samples at the node.

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
14 và
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
15 không yêu cầu sắp xếp các giá trị tính năng và thay vào đó sử dụng cấu trúc dữ liệu được gọi là biểu đồ, trong đó các mẫu được sắp xếp ngầm định. Xây dựng một biểu đồ có độ phức tạp \(\mathcal{O}(n)\) , vì vậy quy trình tách nút có \(\mathcal{O}(n_\text{features} \times n)\) complexity, much smaller than the previous one. In addition, instead of considering \(n\) điểm chia, ở đây chúng tôi chỉ xem xét
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
280 điểm chia, nhỏ hơn nhiều.

Để xây dựng biểu đồ, dữ liệu đầu vào

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
269 cần được sắp xếp thành các thùng có giá trị nguyên. Quy trình tạo thùng này yêu cầu sắp xếp các giá trị tính năng, nhưng nó chỉ xảy ra một lần khi bắt đầu quá trình tăng cường (không phải tại mỗi nút, như trong
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
16 và
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
17)

Cuối cùng, nhiều phần của việc triển khai

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
14 và
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier

>>> X, y = load_iris(return_X_y=True)
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.9...
15 được song song hóa

Người giới thiệu

[ XGBoost ]

Tianqi Chen, Carlos Guestrin, “XGBoost. Một hệ thống tăng cường cây có thể mở rộng”

[ LightGBM ] (1,2)

Kế hoạch. tất cả. “Ánh sángGBM. Cây quyết định tăng cường độ dốc hiệu quả cao”

[ Fisher1958 ]

ngư dân, W. D. (1958). Tạp chí “On Grouping for Maximum Homogeneity” của Hiệp hội Thống kê Hoa Kỳ, 53, 789-798

1. 11. 6. Bộ phân loại biểu quyết¶

Ý tưởng đằng sau

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
14 là kết hợp các bộ phân loại học máy khác nhau về mặt khái niệm và sử dụng phiếu bầu theo đa số hoặc xác suất dự đoán trung bình (phiếu mềm) để dự đoán nhãn lớp. Một bộ phân loại như vậy có thể hữu ích cho một tập hợp các mô hình hoạt động tốt như nhau để cân bằng các điểm yếu riêng lẻ của chúng

1. 11. 6. 1. Nhãn Nhóm Đa số (Đa số/Biểu quyết cứng rắn)¶

Trong biểu quyết đa số, nhãn lớp được dự đoán cho một mẫu cụ thể là nhãn lớp đại diện cho đa số (chế độ) nhãn lớp được dự đoán bởi từng bộ phân loại riêng lẻ

E. g. , nếu dự đoán cho một mẫu nhất định là

  • phân loại 1 -> lớp 1

  • phân loại 2 -> loại 1

  • phân loại 3 -> loại 2

VotingClassifier (với

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
15) sẽ phân loại mẫu là “loại 1” dựa trên nhãn loại đa số

Trong trường hợp hòa,

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
14 sẽ chọn lớp dựa trên thứ tự sắp xếp tăng dần. e. g. , trong trường hợp sau

  • phân loại 1 -> loại 2

  • phân loại 2 -> loại 1

nhãn lớp 1 sẽ được gán cho mẫu

1. 11. 6. 2. Sử dụng¶

Ví dụ sau đây cho thấy cách điều chỉnh bộ phân loại theo quy tắc đa số

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
25

1. 11. 6. 3. Xác suất trung bình có trọng số (Bỏ phiếu mềm)¶

Trái ngược với biểu quyết đa số (biểu quyết cứng), biểu quyết mềm trả về nhãn lớp là argmax của tổng xác suất dự đoán

Các trọng số cụ thể có thể được gán cho từng bộ phân loại thông qua tham số

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
17. Khi trọng số được cung cấp, xác suất lớp dự đoán cho mỗi bộ phân loại được thu thập, nhân với trọng số của bộ phân loại và tính trung bình. Nhãn lớp cuối cùng sau đó được lấy từ nhãn lớp có xác suất trung bình cao nhất

Để minh họa điều này bằng một ví dụ đơn giản, giả sử chúng ta có 3 bộ phân loại và bài toán phân loại 3 lớp trong đó chúng ta gán các trọng số bằng nhau cho tất cả các bộ phân loại. w1=1, w2=1, w3=1

Xác suất trung bình có trọng số cho một mẫu sau đó sẽ được tính như sau

phân loại

lớp 1

lớp 2

lớp 3

phân loại 1

w1 * 0. 2

w1 * 0. 5

w1 * 0. 3

phân loại 2

w2 * 0. 6

w2 * 0. 3

w2 * 0. 1

phân loại 3

w3 * 0. 3

w3 * 0. 4

w3 * 0. 3

bình quân gia quyền

0. 37

0. 4

0. 23

Ở đây, nhãn lớp dự đoán là 2, vì nó có xác suất trung bình cao nhất

Ví dụ sau đây minh họa cách các vùng quyết định có thể thay đổi khi sử dụng

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
14 mềm dựa trên Máy Vector Hỗ trợ tuyến tính, Cây Quyết định và bộ phân loại K-láng giềng gần nhất

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
26

Python hồi quy bootstrap

1. 11. 6. 4. Sử dụng >>> from sklearn.model_selection import cross_val_score >>> from sklearn.datasets import make_blobs >>> from sklearn.ensemble import RandomForestClassifier >>> from sklearn.ensemble import ExtraTreesClassifier >>> from sklearn.tree import DecisionTreeClassifier >>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100, .. random_state=0) >>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2, .. random_state=0) >>> scores = cross_val_score(clf, X, y, cv=5) >>> scores.mean() 0.98... >>> clf = RandomForestClassifier(n_estimators=10, max_depth=None, .. min_samples_split=2, random_state=0) >>> scores = cross_val_score(clf, X, y, cv=5) >>> scores.mean() 0.999... >>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None, .. min_samples_split=2, random_state=0) >>> scores = cross_val_score(clf, X, y, cv=5) >>> scores.mean() > 0.999 True 14 với >>> from sklearn.model_selection import cross_val_score >>> from sklearn.datasets import make_blobs >>> from sklearn.ensemble import RandomForestClassifier >>> from sklearn.ensemble import ExtraTreesClassifier >>> from sklearn.tree import DecisionTreeClassifier >>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100, .. random_state=0) >>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2, .. random_state=0) >>> scores = cross_val_score(clf, X, y, cv=5) >>> scores.mean() 0.98... >>> clf = RandomForestClassifier(n_estimators=10, max_depth=None, .. min_samples_split=2, random_state=0) >>> scores = cross_val_score(clf, X, y, cv=5) >>> scores.mean() 0.999... >>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None, .. min_samples_split=2, random_state=0) >>> scores = cross_val_score(clf, X, y, cv=5) >>> scores.mean() > 0.999 True 20¶

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
14 cũng có thể được sử dụng cùng với
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
20 để điều chỉnh siêu tham số của các công cụ ước tính riêng lẻ

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
27

1. 11. 6. 5. Sử dụng¶

Để dự đoán nhãn lớp dựa trên xác suất lớp được dự đoán (công cụ ước tính scikit-learning trong VotingClassifier phải hỗ trợ phương thức

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
23)

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
28

Tùy chọn, trọng số có thể được cung cấp cho các phân loại riêng lẻ

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
29

1. 11. 7. Công cụ hồi quy biểu quyết¶

Ý tưởng đằng sau

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
24 là kết hợp các biến hồi quy học máy khác nhau về mặt khái niệm và trả về các giá trị dự đoán trung bình. Một biến hồi quy như vậy có thể hữu ích cho một tập hợp các mô hình hoạt động tốt như nhau để cân bằng các điểm yếu riêng lẻ của chúng

1. 11. 7. 1. Sử dụng¶

Ví dụ sau đây cho thấy cách điều chỉnh VotingRegressor

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
0

Python hồi quy bootstrap

ví dụ

  • Vẽ biểu đồ dự đoán hồi quy cá nhân và biểu quyết

1. 11. 8. Tổng quát hóa xếp chồng¶

Tổng quát hóa xếp chồng là phương pháp kết hợp các công cụ ước tính để giảm sai số của chúng [W1992] [HTF] . Chính xác hơn, các dự đoán của từng công cụ ước tính riêng lẻ được xếp chồng lên nhau và được sử dụng làm đầu vào cho công cụ ước tính cuối cùng để tính toán dự đoán. Công cụ ước tính cuối cùng này được đào tạo thông qua xác thực chéo.

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
25 và
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
26 cung cấp các chiến lược như vậy có thể áp dụng cho các bài toán phân loại và hồi quy

Tham số

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
27 tương ứng với danh sách các ước lượng được xếp song song với nhau trên dữ liệu đầu vào. Nó nên được đưa ra dưới dạng danh sách tên và ước tính

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
1

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
28 sẽ sử dụng các dự đoán của
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
27 làm đầu vào. Nó cần phải là một bộ phân loại hoặc một bộ hồi quy khi sử dụng
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
25 hoặc
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
26, tương ứng

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
2

Để huấn luyện

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
27 và
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
28, phương thức
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
34 cần được gọi trên dữ liệu huấn luyện

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
3

Trong quá trình đào tạo,

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
27 được trang bị trên toàn bộ dữ liệu đào tạo
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
36. Chúng sẽ được sử dụng khi gọi
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
37 hoặc
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
23. Để khái quát hóa và tránh khớp quá mức,
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
28 được đào tạo về các mẫu bên ngoài bằng cách sử dụng
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
40 trong nội bộ

Đối với

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
25, lưu ý rằng đầu ra của
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
27 được điều khiển bởi tham số
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
43 và nó được gọi bởi mỗi bộ ước tính. Tham số này là một chuỗi, là tên phương thức ước tính hoặc
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
44 sẽ tự động xác định một phương thức khả dụng tùy thuộc vào tính khả dụng, được kiểm tra theo thứ tự ưu tiên.
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
23,
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
46 và
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
37

Một

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
26 và
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
25 có thể được sử dụng như bất kỳ biến hồi quy hoặc phân loại nào khác, hiển thị các phương thức
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
37,
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
23 và
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
46, e. g

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
4

Lưu ý rằng cũng có thể lấy đầu ra của

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
27 xếp chồng lên nhau bằng cách sử dụng phương pháp
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
54

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
5

Trong thực tế, một công cụ dự đoán xếp chồng dự đoán tốt như công cụ dự đoán tốt nhất của lớp cơ sở và thậm chí đôi khi vượt trội hơn nó bằng cách kết hợp các điểm mạnh khác nhau của các công cụ dự đoán này. Tuy nhiên, đào tạo một công cụ dự đoán xếp chồng rất tốn kém về mặt tính toán

Ghi chú

Đối với

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
25, khi sử dụng
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier

>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
..     random_state=0)

>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
..     random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.98...

>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean()
0.999...

>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
..     min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y, cv=5)
>>> scores.mean() > 0.999
True
56, cột đầu tiên bị loại bỏ khi sự cố là sự cố phân loại nhị phân. Thật vậy, cả hai cột xác suất được dự đoán bởi mỗi công cụ ước tính đều hoàn toàn thẳng hàng