Hướng dẫn toàn diện để thúc đẩy thuật toán học máy



Blog này hoàn toàn tập trung vào cách hoạt động của Tăng cường Máy học và cách nó có thể được triển khai để tăng hiệu quả của các mô hình Học máy.

Với rất nhiều tiến bộ trong lĩnh vực chăm sóc sức khỏe, tiếp thị, kinh doanh, v.v., nhu cầu phát triển ngày càng cao và phức tạp hơn . Thúc đẩy Học máy là một trong những kỹ thuật có thể được sử dụng để giải quyết các vấn đề phức tạp, theo hướng dữ liệu, trong thế giới thực. Blog này hoàn toàn tập trung vào cách hoạt động của Tăng cường Máy học và cách nó có thể được triển khai để tăng hiệu quả của các mô hình Học máy.

Để có kiến ​​thức chuyên sâu về Trí tuệ nhân tạo và Máy học, bạn có thể đăng ký trực tiếp của Edureka với hỗ trợ 24/7 và quyền truy cập trọn đời.





Dưới đây là danh sách các chủ đề sẽ được đề cập trong blog này:

  1. Tại sao tăng cường được sử dụng?
  2. Tăng cường là gì?
  3. Thuật toán tăng cường hoạt động như thế nào?
  4. Các loại thúc đẩy
  5. Bản giới thiệu

Tại sao tăng cường được sử dụng?

Để giải quyết các vấn đề phức tạp, chúng tôi yêu cầu các kỹ thuật nâng cao hơn. Giả sử rằng trên một bộ dữ liệu có chứa hình ảnh về chó và mèo được cung cấp, bạn được yêu cầu xây dựng một mô hình có thể phân loại những hình ảnh này thành hai lớp riêng biệt. Giống như mọi người khác, bạn sẽ bắt đầu bằng cách xác định các hình ảnh bằng cách sử dụng một số quy tắc, như dưới đây:



  1. Hình ảnh có đôi tai nhọn: Cat

  2. Hình ảnh có đôi mắt hình mèo: Cat

  3. Hình ảnh có chi lớn hơn: Con chó



  4. Hình ảnh có vuốt sắc nét: Cat

  5. Hình ảnh có cấu trúc miệng rộng hơn: Con chó

Tất cả các quy tắc này giúp chúng tôi xác định hình ảnh là Chó hay mèo, tuy nhiên, nếu chúng tôi phân loại hình ảnh dựa trên một quy tắc riêng lẻ (đơn lẻ), thì dự đoán sẽ thiếu sót. Mỗi quy tắc này, riêng lẻ, được gọi là người học yếu vì những quy tắc này không đủ mạnh để phân loại một hình ảnh là mèo hoặc chó.

Do đó, để chắc chắn rằng dự đoán của chúng tôi chính xác hơn, chúng tôi có thể kết hợp dự đoán từ từng học viên yếu kém này bằng cách sử dụng quy tắc đa số hoặc trung bình có trọng số. Điều này tạo nên một hình mẫu người học mạnh mẽ.

Trong ví dụ trên, chúng tôi đã xác định 5 người học yếu và phần lớn các quy tắc này (tức là 3 trong số 5 người học dự đoán hình ảnh là một con mèo) cho chúng tôi dự đoán rằng hình ảnh là một con mèo. Do đó, đầu ra cuối cùng của chúng tôi là một con mèo.

Vì vậy, điều này đưa chúng ta đến câu hỏi,

Tăng cường là gì?

Tăng cường là một kỹ thuật học tập tổng hợp sử dụng một tập hợp các thuật toán Máy học để chuyển đổi người học yếu thành người học mạnh nhằm tăng độ chính xác của mô hình.

What-Is-Boosting-Boosting-Machine-Learning-Edureka

Thúc đẩy là gì - Thúc đẩy máy học - Edureka

Giống như tôi đã đề cập, Tăng cường là một phương pháp học tập theo nhóm, nhưng chính xác thì học theo nhóm là gì?

Ensemble trong Machine Learning là gì?

Học theo nhóm là một phương pháp được sử dụng để nâng cao hiệu suất của mô hình Học máy bằng cách kết hợp nhiều người học. Khi so sánh với một mô hình duy nhất, kiểu học này xây dựng các mô hình với độ chính xác và hiệu quả được cải thiện. Đây chính xác là lý do tại sao các phương pháp tổng hợp được sử dụng để giành chiến thắng trong các cuộc thi dẫn đầu thị trường như cuộc thi đề xuất Netflix, cuộc thi Kaggle, v.v.

Học Ensemble là gì - Tăng cường học máy - Edureka

Dưới đây tôi cũng đã thảo luận về sự khác biệt giữa Tăng cường và Đóng gói.

logic mờ trong trí tuệ nhân tạo

Thúc đẩy so với đóng gói

Học theo nhóm có thể được thực hiện theo hai cách:

  1. Nhóm tuần tự, phổ biến được gọi là thúc đẩy , ở đây những người học yếu được sản xuất tuần tự trong giai đoạn đào tạo. Hiệu suất của mô hình được cải thiện bằng cách ấn định trọng số cao hơn cho các mẫu trước đó, được phân loại không chính xác. Một ví dụ về tăng cường là thuật toán AdaBoost.

  2. Bộ song song , thường được gọi là đóng bao , ở đây những người học yếu được sản xuất song song trong giai đoạn đào tạo. Hiệu suất của mô hình có thể được tăng lên bằng cách đào tạo song song một số người học yếu về tập dữ liệu được khởi động. Một ví dụ về việc đóng túi là Khu rừng ngẫu nhiên thuật toán.

Trong blog này, tôi sẽ tập trung vào phương pháp Tăng cường, vì vậy trong phần dưới đây, chúng ta sẽ hiểu cách hoạt động của thuật toán tăng cường.

Thuật toán tăng cường hoạt động như thế nào?

Nguyên tắc cơ bản đằng sau hoạt động của thuật toán tăng cường là tạo ra nhiều người học yếu và kết hợp các dự đoán của họ để tạo thành một quy tắc mạnh. Các quy tắc yếu này được tạo ra bằng cách áp dụng các thuật toán Học máy cơ sở trên các bản phân phối khác nhau của tập dữ liệu. Các thuật toán này tạo ra các quy tắc yếu cho mỗi lần lặp. Sau nhiều lần lặp lại, những người học yếu được kết hợp để tạo thành một người học mạnh sẽ dự đoán kết quả chính xác hơn.

Thuật toán tăng cường hoạt động như thế nào - Thúc đẩy máy học - Edureka

Đây là cách thuật toán hoạt động:

Bước 1: Thuật toán cơ sở đọc dữ liệu và gán trọng số bằng nhau cho mỗi lần quan sát mẫu.

Bước 2: Các dự đoán sai do người học cơ sở đưa ra được xác định. Trong lần lặp tiếp theo, những dự đoán sai này được chỉ định cho người học cơ sở tiếp theo với tỷ trọng cao hơn đối với những dự đoán sai này.

Bước 3: Lặp lại bước 2 cho đến khi thuật toán có thể phân loại chính xác đầu ra.

Do đó, mục đích chính của việc Thúc đẩy là để tập trung nhiều hơn vào các dự đoán không được phân loại.

Bây giờ chúng ta đã biết cách hoạt động của thuật toán thúc đẩy, hãy cùng tìm hiểu các loại kỹ thuật thúc đẩy khác nhau.

Các loại thúc đẩy

Có ba cách chính để tăng cường có thể được thực hiện:

  1. Tăng cường thích ứng hoặc AdaBoost

  2. Tăng cường Gradient

  3. XGBoost

Tôi sẽ thảo luận về những điều cơ bản đằng sau mỗi loại này.

Tăng cường thích ứng

  • AdaBoost được triển khai bằng cách kết hợp một số người học yếu thành một người học mạnh.

  • Những người học yếu trong AdaBoost tính đến một tính năng đầu vào duy nhất và vẽ ra một cây quyết định phân tách duy nhất được gọi là gốc quyết định. Mỗi quan sát được cân nhắc như nhau trong khi vẽ ra gốc quyết định đầu tiên.

  • Kết quả từ gốc quyết định đầu tiên được phân tích và nếu bất kỳ quan sát nào bị phân loại sai, chúng sẽ được gán trọng số cao hơn.

  • Đăng bài này, một cơ sở quyết định mới được rút ra bằng cách xem xét các quan sát có trọng số càng cao càng có ý nghĩa.

    php chuyển đổi chuỗi thành mảng
  • Một lần nữa nếu bất kỳ quan sát nào bị phân loại sai, chúng sẽ có trọng số cao hơn và quá trình này tiếp tục cho đến khi tất cả các quan sát rơi vào đúng loại.

  • Adaboost có thể được sử dụng cho cả các vấn đề phân loại và dựa trên hồi quy, tuy nhiên, nó được sử dụng phổ biến hơn cho mục đích phân loại.

Tăng cường Gradient

Gradient Bo boost cũng dựa trên việc học theo nhóm tuần tự. Ở đây, người học cơ sở được tạo tuần tự theo cách sao cho người học cơ sở hiện tại luôn hiệu quả hơn người học trước, tức là mô hình tổng thể cải thiện tuần tự với mỗi lần lặp.

Sự khác biệt trong kiểu tăng cường này là trọng số cho các kết quả được phân loại sai không được tăng lên, thay vào đó, phương pháp Tăng cường Gradient cố gắng tối ưu hóa chức năng mất của người học trước bằng cách thêm một mô hình mới bổ sung người học yếu để giảm chức năng mất đi.

Ý tưởng chính ở đây là khắc phục những sai sót trong dự đoán của người học trước. Loại tăng này có ba thành phần chính:

  1. Thiếu chức năng cần được cải tiến.

  2. Người học yếu để dự đoán tính toán và hình thành những người học giỏi.

  3. An Mô hình phụ gia điều đó sẽ điều chỉnh hàm mất mát.

Giống như AdaBoost, Gradient Bo boost cũng có thể được sử dụng cho cả vấn đề phân loại và hồi quy.

XGBoost

XGBoost là một phiên bản nâng cao của phương pháp tăng cường Gradient, nó có nghĩa đen là eXtreme Gradient Boosting. XGBoost được phát triển bởi Tianqi Chen, thuộc danh mục Cộng đồng Máy học Phân tán (DMLC).

Mục đích chính của thuật toán này là tăng tốc độ và hiệu quả tính toán. Thuật toán Gradient Descent Boosting tính toán đầu ra với tốc độ chậm hơn vì chúng phân tích tuần tự tập dữ liệu, do đó XGBoost được sử dụng để tăng hoặc cực kỳ tăng hiệu suất của mô hình.

XGBoost - Thúc đẩy Máy học - Edureka

XGBoost được thiết kế để tập trung vào tốc độ tính toán và hiệu quả của mô hình. Các tính năng chính được cung cấp bởi XGBoost là:

  • Song song tạo cây quyết định.

  • Thực hiện các phương pháp tính toán phân tán để đánh giá các mô hình lớn và phức tạp.

  • Sử dụng Máy tính ngoài lõi để phân tích bộ dữ liệu khổng lồ.

  • Thực hiện tối ưu hóa bộ nhớ cache để sử dụng tài nguyên tốt nhất.

Vì vậy, đây làcác loại thuật toán Tăng cường Máy học khác nhau. Để làm cho mọi thứ trở nên thú vị, trong phần dưới đây, chúng tôi sẽ chạy một bản demo để xem cách các thuật toán tăng cường có thể được triển khai trong Python.

Tăng cường học máy bằng Python

Tuyên bố từ chối trách nhiệm ngắn: Tôi sẽ sử dụng Python để chạy bản trình diễn này, vì vậy nếu bạn không biết Python, bạn có thể xem qua các blog sau:

  1. Cách học Python 3 từ Scratch - Hướng dẫn cho người mới bắt đầu

Bây giờ đã đến lúc bạn phải làm bẩn tay và bắt đầu viết mã.

Báo cáo vấn đề: Để nghiên cứu tập dữ liệu về nấm và xây dựng mô hình Học máy có thể phân loại nấm là độc hay không, bằng cách phân tích các đặc điểm của nó.

Mô tả Tập dữ liệu: Tập dữ liệu này cung cấp mô tả chi tiết về các mẫu giả định phù hợp với 23 loài nấm mang. Mỗi loài được phân loại là nấm ăn được hoặc không ăn được (độc).

Hợp lý: Để xây dựng mô hình Học máy bằng cách sử dụng một trong các thuật toán Tăng cường nhằm dự đoán xem nấm có ăn được hay không.

Bước 1: Nhập các gói cần thiết

from sklearn.ensemble import AdaBoostClassifier từ sklearn.preprocessing import LabelEncoder từ sklearn.tree import DecisionTreeClassifier nhập gấu trúc dưới dạng pd # Nhập hàm train_test_split từ sklearn.model_selection import train_test_split #Import scikit-learning metrics module để tính toán độ chính xác từ sklearn

Bước 2: Nhập tập dữ liệu

# Tải trong tập dữ liệu dữ liệu = pd.read_csv ('C: //Users//NeelTemp//Desktop//mushroomsdataset.csv')

Bước 3: Xử lý dữ liệu

# Xác định tên cột dataset.columns = ['target', 'cap-shape', 'cap-surface', 'cap-color', 'bruce', 'aroma', 'gill-attachment', 'gill-spacing ',' kích thước mang ',' màu mang ',' hình dạng cuống ',' gốc-cuống ',' cuống-bề mặt-trên-vòng ',' cuống-bề mặt-dưới-vòng ',' màu cuống -trên-vòng ',' cuống-màu-dưới-vòng ',' kiểu màn che ',' màu màn che ',' số vòng ',' kiểu vòng ',' màu bào tử ',' quần thể ',' môi trường sống '] cho nhãn trong dataset.columns: dataset [label] = LabelEncoder (). fit (dataset [label]). variable (dataset [label]) # Hiển thị thông tin về tập dữ liệu in (dataset.info ( )) Int64Index: 8124 mục nhập, từ 6074 đến 686 cột dữ liệu (tổng số 23 cột): target 8124 non-null int32 cap-shape 8124 non-null int32 cap-surface 8124 non-null int32 cap-color 8124 non-null int32 dark 8124 non-null int32 mùi 8124 non-null int32 mang 8124 non-null int32 gill-spacing 8124 non-null int32 gill-size 8124 non-null int32 gill-color 8124 non-null int32 stalk-shape 8124 non-null int32 stalk-root 8124 non-null int32 stalk-surface-trên-ring 8124 non-null int32 stalk-surface-under-ring 8124 non-null int32 stalk-color-above-ring 8124 non-null int32 stalk-color-under-ring 8124 non-null int32 veil- kiểu 8124 không null int32 veil-color 8124 non-null int32 ring-number 8124 non-null int32 ring-type 8124 non-null int32 spore-print-color 8124 non-null int32 quần thể 8124 không null int32 môi trường sống 8124 non- null int32 dtypes: sử dụng bộ nhớ int32 (23): 793,4 KB

Bước 4: Nối dữ liệu

X = dataset.drop (['target'], axis = 1) Y = dataset ['target'] X_train, X_test, Y_train, Y_test = train_test_split (X, Y, test_size = 0.3)

Bước 5: Xây dựng mô hình

model = DecisionTreeClassifier (tiêu chí = 'entropy', max_depth = 1) AdaBoost = AdaBoostClassifier (base_estimator = model, n_estimators = 400, learning_rate = 1)

Trong đoạn mã trên, chúng tôi đã triển khai thuật toán AdaBoost. Hàm ‘AdaBoostClassifier’ nhận ba tham số quan trọng:

  • base_estimator: Công cụ ước tính cơ sở (người học yếu) là Cây quyết định theo mặc định
  • n_estimator: Trường này chỉ định số lượng người học cơ sở sẽ được sử dụng.
  • learning_rate: Trường này chỉ định tốc độ học, mà chúng tôi đã đặt thành giá trị mặc định, tức là 1.
#Fit the model with training data boostmodel = AdaBoost.fit (X_train, Y_train)

Bước 6: Đánh giá mô hình

# Đánh giá độ chính xác của mô hình y_pred = boostmodel.p Dự đoán (X_test) = metrics.accuracy_score (Y_test, y_pred) # Tính độ chính xác bằng phần trăm in ('Độ chính xác là:', dự đoán * 100, '%') là: 100,0%

Chúng tôi đã nhận được độ chính xác 100% là hoàn hảo!

Vì vậy, với điều này, chúng ta đến phần cuối của Blog Tăng cường Máy học này. Nếu bạn muốn tìm hiểu thêm về Học máy, bạn có thể đọc các blog này:

  1. nhảy trong c ++

Nếu bạn muốn đăng ký một khóa học hoàn chỉnh về Trí tuệ nhân tạo và Học máy, Edureka có một điều đó sẽ giúp bạn thành thạo các kỹ thuật như Học có giám sát, Học không giám sát và Xử lý ngôn ngữ tự nhiên. Nó bao gồm đào tạo về những tiến bộ và phương pháp tiếp cận kỹ thuật mới nhất trong Trí tuệ nhân tạo & Máy học như Học sâu, Mô hình đồ họa và Học tăng cường.