Logo Zephyrnet

Triển khai Adaboost trong Scikit-learning

Ngày:

Nguồn: Hình ảnh tác giả

Thuật toán AdaBoost, viết tắt của Adaptive Boosting, là một loại kỹ thuật Boosting được sử dụng như một Phương pháp tập hợp trong Machine Learning. Nó được gọi là Tăng cường thích ứng do thực tế là các trọng số được gán lại cho từng phiên bản, với các trọng số cao hơn được gán cho các phiên bản được không được phân loại chính xác – do đó nó 'thích nghi'.

Nếu bạn muốn tìm hiểu thêm về Ensemble Methods và thời điểm sử dụng chúng, hãy đọc bài viết này: Khi nào thì Kỹ thuật lắp ráp sẽ là một lựa chọn tốt?

Tăng cường là một phương pháp đi kèm với các thuật toán học máy tập hợp và được sử dụng để giảm lỗi trong phân tích dữ liệu dự đoán. Nó thực hiện điều này bằng cách kết hợp các dự đoán của những người học yếu. Tăng tốc là một khái niệm lý thuyết nhiều hơn trước khi nó trở thành một khái niệm thực tế. 

Nếu bạn muốn biết thêm về Boosting, hãy đọc bài viết này: Tăng cường thuật toán học máy: Tổng quan

Thuật ngữ

Thế nào là học yếu? Người học yếu đề cập đến một mô hình đơn giản có trình độ kỹ năng ở mức độ nào đó và làm tốt hơn một chút so với cơ hội ngẫu nhiên. 

Gốc cây là gì? Với các thuật toán dựa trên cây, một nút có hai lá được gọi là Gốc cây. Những người học yếu hầu như luôn luôn là những người vấp ngã.

AdaBoost hoạt động như thế nào?

Thuật toán AdaBoost sử dụng cây quyết định ngắn trong thời gian đào tạo dữ liệu. Các trường hợp được phân loại không chính xác được ưu tiên và được sử dụng làm đầu vào cho mô hình thứ hai – được gọi là người học yếu. Quá trình này diễn ra lặp đi lặp lại cho đến khi mô hình cố gắng sửa các dự đoán mà mô hình đưa ra trước đó. 

Ý tưởng đằng sau AdaBoost:

  1. Tổng hợp học lực yếu để xếp loại
  2. Một số gốc cây có nhiều tiếng nói hơn trong việc phân loại so với những gốc cây khác
  3. Mỗi gốc cây đều xem xét những sai lầm của gốc cây trước đó

scikit-học cung cấp các phương thức tập hợp bằng cách sử dụng thư viện máy học Python triển khai AdaBoost. AdaBoost có thể được sử dụng cho cả vấn đề phân loại và hồi quy, vì vậy, hãy xem cách chúng ta có thể sử dụng Scikit-Learn cho các loại vấn đề này. 

phân loại

sklearn.ensemble.AdaBoostClassifier

Mục đích của trình phân loại AdaBoost là bắt đầu bằng việc điều chỉnh một trình phân loại trên tập dữ liệu gốc cho tác vụ đang thực hiện và sau đó điều chỉnh các trình phân loại bổ sung trong đó trọng số của các trường hợp được phân loại không chính xác được điều chỉnh. 

Đây là các tham số:

sklearn.ensemble.AdaBoostClassifier(base_estimator = Không, * , n_estimators = 50, learning_rate = 1.0, thuật toán = 'SAMME.R', random_state = Không)

Bạn có thể tìm hiểu thêm về chúng và các thuộc tính của chúng tại đây

Hãy xem nó như một ví dụ:

Nhập khẩu: 

từ sklearn.ensemble nhập AdaBoostClassifier từ sklearn.tree nhập Quyết địnhTreeClassifier từ sklearn.datasets nhập load_breast_cancer nhập gấu trúc dưới dạng pd nhập numpy dưới dạng np từ sklearn.model_selection nhập train_test_split từ sklearn.metrics nhập nhầm lẫn_matrix từ sklearn.tiền xử lý nhập LabelEncoder

Tải tập dữ liệu:

breast_Cancer = load_breast_Cancer() X = pd.DataFrame(vú_Cancer.data, cột=vú_Cancer.feature_names) y = pd.Categorical.From_codes(Vú_ung thư.mục tiêu, tên_ung thư vú.Tên_mục tiêu)

Mã hóa ác tính thành 1 và lành tính thành 0:

bộ mã hóa = LabelEncoder() binary_encoded_y = pd.Series(encoder.fit_transform(y))

Tập huấn luyện/kiểm tra:

train_X, test_X, train_y, test_y = train_test_split(X, binary_encoded_y, random_state = 1)

Phù hợp với mô hình của chúng tôi:

bộ phân loại = AdaBoostClassifier( DecisionTreeClassifier(max_depth = 1), n_estimators = 200 ) classifier.fit(train_X, train_y)

Đưa ra dự đoán:

dự đoán = classifier.predict(test_X)

Đánh giá mô hình:

confused_matrix(test_y, dự đoán)

Đầu ra:

mảng([[86, 2], [ 3, 52]])

Nguồn mã: Cory Maklin

Hồi quy

sklearn.ensemble.AdaBoostRegressor

Mục đích của biến hồi quy AdaBoost là bắt đầu bằng việc điều chỉnh một biến giải thích trên tập dữ liệu gốc cho nhiệm vụ hiện tại và sau đó điều chỉnh các biến giải thích bổ sung trong đó các trọng số đã được điều chỉnh dựa trên lỗi dự đoán hiện tại.

Đây là các tham số:

sklearn.ensemble.AdaBoostRegressor(base_estimator = Không, * , n_estimators = 50, learning_rate = 1.0, loss = 'linear', random_state = Không)

Nếu bạn muốn biết thêm về chúng và các thuộc tính của chúng, hãy nhấp vào tại đây

Hãy xem nó như một ví dụ:

#evaluate tập hợp adaboost cho hồi quy từ numpy import nghĩa là từ numpy import std từ sklearn.datasets nhập make_regression từ sklearn.model_selection nhập cross_val_score từ sklearn.model_selection , n_features = 1000, n_informative = 20, noise = 15, random_state = 0.1) # xác định mô hình model = AdaBoostRegressor() # đánh giá mô hình cv = RepeatedKFold(n_splits = 6, n_repeats = 10, random_state = 3) n_scores = cross_val_score( mô hình, X, y, chấm điểm = 'neg_mean_absolute_error', cv = cv, n_jobs = -1, error_score = 'raise') # báo cáo hiệu suất print('MAE: %.1f (%.3f)' % (mean(n_scores) , tiêu chuẩn(n_scores)))

Nguồn mã: MáyHọcLàm Chủ

Nếu bạn muốn tìm hiểu thêm về các phương pháp tập hợp và cách bạn có thể đưa ra dự đoán tốt hơn bằng cách sử dụng các kỹ thuật: đóng gói, tăng tốc và xếp chồng – hãy xem cuốn sách MachineLearningMastery: Tập hợp các thuật toán học tập với Python

Josh Starmer, Chuyên gia thống kê và học máy đã giúp tôi hiểu rõ hơn về AdaBoost thông qua video này: AdaBoost, giải thích rõ ràng

 
 
Nisha Arya là Nhà khoa học dữ liệu và Nhà văn kỹ thuật tự do. Cô ấy đặc biệt quan tâm đến việc cung cấp lời khuyên hoặc hướng dẫn nghề nghiệp về Khoa học Dữ liệu và kiến ​​thức dựa trên lý thuyết về Khoa học Dữ liệu. Cô cũng mong muốn khám phá những cách khác nhau mà Trí tuệ nhân tạo có thể mang lại / có thể mang lại lợi ích cho sự trường tồn của cuộc sống con người. Một người ham học hỏi, tìm cách mở rộng kiến ​​thức công nghệ và kỹ năng viết của mình, đồng thời giúp hướng dẫn người khác.
 

tại chỗ_img

Tin tức mới nhất

tại chỗ_img