Logo Zephyrnet

SHAP: Giải thích mọi mô hình học máy bằng Python

Ngày:

Hãy tưởng tượng bạn đang cố gắng đào tạo một mô hình máy học để dự đoán liệu một người cụ thể có nhấp vào quảng cáo hay không. Sau khi nhận được một số thông tin về một người, mô hình dự đoán rằng một người sẽ không nhấp vào quảng cáo.

 

SHAP: Giải thích mọi mô hình học máy bằng Python
Hình ảnh của Tác giả

 

Nhưng tại sao mô hình lại dự đoán như vậy? Mỗi tính năng đóng góp bao nhiêu cho dự đoán? Sẽ thật tuyệt nếu bạn có thể thấy một biểu đồ cho biết mức độ đóng góp của mỗi tính năng vào dự đoán như bên dưới phải không?

 

SHAP: Giải thích mọi mô hình học máy bằng Python
Hình ảnh của Tác giả

 

Đó là khi giá trị Shapley có ích.

Giá trị Shapley là một phương pháp được sử dụng trong lý thuyết trò chơi liên quan đến việc phân phối công bằng cả lợi ích và chi phí cho những người tham gia làm việc trong một liên minh.

Vì mỗi tác nhân đóng góp khác nhau cho liên minh, nên giá trị Shapley đảm bảo rằng mỗi tác nhân được chia sẻ công bằng tùy thuộc vào số tiền họ đóng góp.

 

SHAP: Giải thích mọi mô hình học máy bằng Python
Hình ảnh của Tác giả

 

Một ví dụ đơn giản

Giá trị Shapley được sử dụng cho nhiều vấn đề đặt câu hỏi về sự đóng góp của từng worker/feature trong một nhóm. Để hiểu giá trị Shapley hoạt động như thế nào, hãy tưởng tượng rằng công ty của bạn vừa thực hiện thử nghiệm A/B, nơi họ thử nghiệm các kết hợp chiến lược quảng cáo khác nhau.

Doanh thu cho mỗi chiến lược trong một tháng cụ thể là:

  • không có quảng cáo: $150
  • mạng xã hội: $300
  • Quảng cáo Google: $200
  • tiếp thị qua email: $350
  • phương tiện truyền thông xã hội và quảng cáo Google $320
  • phương tiện truyền thông xã hội và tiếp thị qua email: $400
  • Quảng cáo Google và tiếp thị qua email: $350
  • tiếp thị qua email, quảng cáo Google và phương tiện truyền thông xã hội: $450

 

SHAP: Giải thích mọi mô hình học máy bằng Python
Hình ảnh của Tác giả

 

Sự khác biệt về doanh thu giữa việc sử dụng ba quảng cáo và không sử dụng quảng cáo là $300. Mỗi quảng cáo đóng góp bao nhiêu vào sự khác biệt này?

 

SHAP: Giải thích mọi mô hình học máy bằng Python
Hình ảnh của Tác giả

 

Chúng ta có thể tìm ra điều đó bằng cách tính toán giá trị Shapley cho từng loại quảng cáo. Bài viết này cung cấp một cách tuyệt vời để tính toán giá trị Shap. Tôi sẽ tóm tắt nó ở đây.

Chúng tôi bắt đầu bằng cách tính tổng đóng góp của quảng cáo Google vào doanh thu của công ty. Tổng đóng góp của quảng cáo Google có thể được tính theo công thức:

 

SHAP: Giải thích mọi mô hình học máy bằng Python
Hình ảnh của Tác giả

 

Hãy tìm phần đóng góp cận biên của quảng cáo Google và trọng số của nó.

Tìm đóng góp cận biên của Quảng cáo Google

Đầu tiên, chúng tôi sẽ tìm thấy đóng góp cận biên của quảng cáo Google cho các nhóm sau:

  • không quảng cáo
  • Quảng cáo Google + mạng xã hội
  • Quảng cáo Google + tiếp thị qua email
  • Quảng cáo Google + tiếp thị qua email + phương tiện truyền thông xã hội

 

SHAP: Giải thích mọi mô hình học máy bằng Python
Hình ảnh của Tác giả

 

Đóng góp cận biên của quảng cáo Google so với không có quảng cáo là:

 

SHAP: Giải thích mọi mô hình học máy bằng Python

Hình ảnh của Tác giả

 

Đóng góp cận biên của quảng cáo Google cho nhóm quảng cáo Google và truyền thông xã hội là:

 

SHAP: Giải thích mọi mô hình học máy bằng Python
Hình ảnh của Tác giả

 

Đóng góp cận biên của quảng cáo Google cho nhóm tiếp thị qua email và quảng cáo Google là:

 

SHAP: Giải thích mọi mô hình học máy bằng Python
Hình ảnh của Tác giả

 

Đóng góp cận biên của quảng cáo Google cho nhóm quảng cáo, tiếp thị qua email và phương tiện truyền thông xã hội của Google là:

 

SHAP: Giải thích mọi mô hình học máy bằng Python
Hình ảnh của Tác giả

 

Tìm trọng lượng

Để tìm trọng số, chúng tôi sẽ sắp xếp các kết hợp của các chiến lược quảng cáo khác nhau thành nhiều cấp độ như dưới đây. Mỗi cấp độ tương ứng với số lượng chiến lược quảng cáo trong mỗi kết hợp.

Sau đó, chúng tôi sẽ gán trọng số dựa trên số lượng cạnh trong mỗi cấp độ. Chúng tôi thấy rằng:

  • Cấp độ đầu tiên chứa 3 cạnh vì vậy trọng số của mỗi cạnh sẽ là 1/3
  • Cấp độ thứ hai chứa 6 cạnh vì vậy trọng số của mỗi cạnh sẽ là 1/6
  • Cấp độ thứ ba chứa 3 cạnh vì vậy trọng số của mỗi cạnh sẽ là 1/3

 

SHAP: Giải thích mọi mô hình học máy bằng Python
Hình ảnh của Tác giả

 

Tìm tổng đóng góp của quảng cáo Google

Bây giờ chúng ta đã sẵn sàng để tìm tổng đóng góp của quảng cáo Google dựa trên trọng số và đóng góp cận biên mà chúng ta đã tìm thấy trước đó!

 

SHAP: Giải thích mọi mô hình học máy bằng Python
Hình ảnh của Tác giả

 
SHAP: Giải thích mọi mô hình học máy bằng Python
Hình ảnh của Tác giả

 

Mát mẻ! Vì vậy, quảng cáo của Google đóng góp 36.67 đô la vào tổng chênh lệch doanh thu giữa việc sử dụng 3 chiến lược quảng cáo và không sử dụng quảng cáo. 36.67 là giá trị Shapey cho quảng cáo của Google.

 

SHAP: Giải thích mọi mô hình học máy bằng Python
Hình ảnh của Tác giả

 

Lặp lại các bước trên cho hai chiến lược quảng cáo khác, chúng ta có thể thấy rằng:

  • Tiếp thị qua email đóng góp $151.67
  • Phương tiện truyền thông xã hội đóng góp $111.67
  • Quảng cáo của Google đóng góp $36.67

 

SHAP: Giải thích mọi mô hình học máy bằng Python
Hình ảnh của Tác giả

 

Họ cùng nhau đóng góp $300 cho sự khác biệt giữa việc sử dụng 3 loại quảng cáo khác nhau và không sử dụng quảng cáo! Khá tuyệt, phải không?

Bây giờ chúng ta đã hiểu giá trị Shapley, hãy xem cách chúng ta có thể sử dụng nó để diễn giải một mô hình máy học.

HÌNH DẠNG là một thư viện Python sử dụng các giá trị Shapley để giải thích đầu ra của bất kỳ mô hình máy học nào.

Để cài đặt SHAP, gõ:

pip install shap

 

Đào tạo người mẫu

Để hiểu SHAP hoạt động như thế nào, chúng ta sẽ thử nghiệm với một bộ dữ liệu quảng cáo:

 

Chúng tôi sẽ xây dựng một mô hình học máy để dự đoán liệu người dùng có nhấp vào quảng cáo hay không dựa trên một số thông tin về người đó.

Chúng tôi sẽ sử dụng Patsy để biến DataFrame thành một mảng các tính năng và một mảng các giá trị đích:

Chia dữ liệu thành các tập huấn luyện và thử nghiệm:

Tiếp theo, chúng tôi sẽ sử dụng XGBoost để xây dựng mô hình và đưa ra dự đoán:

Để xem mô hình hoạt động tốt như thế nào, chúng tôi sẽ sử dụng điểm F1:

0.9619047619047619

 

Khá tốt!

Giải thích mô hình

Mô hình đã thực hiện tốt công việc dự đoán liệu người dùng có nhấp vào quảng cáo hay không. Nhưng làm thế nào nó đưa ra những dự đoán như vậy? Mỗi tính năng đã đóng góp bao nhiêu vào sự khác biệt giữa dự đoán cuối cùng và dự đoán trung bình?

Lưu ý rằng vấn đề này rất giống với vấn đề chúng tôi đã giải quyết ở đầu bài viết.

Đó là lý do tại sao việc tìm kiếm giá trị Shapley của từng tính năng có thể giúp chúng tôi xác định đóng góp của chúng. Các bước để biết tầm quan trọng của tính năng i, trong đó i là chỉ mục của các tính năng, tương tự như trước đây:

  • Nhận tất cả các tập hợp con không chứa tính năng i
  • Tìm phần đóng góp cận biên của tính năng i cho mỗi tập hợp con này
  • Tổng hợp tất cả các đóng góp cận biên để tính toán các đóng góp của tính năng i

Để tìm các giá trị Shapley bằng SHAP, chỉ cần chèn mô hình được đào tạo của bạn vào shap.Explainer :

Hình dung lời giải thích của dự đoán đầu tiên:

SHAP: Giải thích mọi mô hình học máy bằng Python
Hình ảnh của Tác giả

 

A ha! Bây giờ chúng tôi biết sự đóng góp của từng tính năng cho dự đoán đầu tiên. Giải thích cho biểu đồ trên:

 

SHAP: Giải thích mọi mô hình học máy bằng Python
Hình ảnh của Tác giả

 

  • Thanh màu xanh cho thấy một tính năng cụ thể làm giảm bao nhiêu giá trị của dự đoán.
  • Thanh màu đỏ cho biết mức độ một tính năng cụ thể làm tăng giá trị của dự đoán.
  • Giá trị âm ngụ ý xác suất nhỏ hơn 0.5 rằng người đó đã nhấp vào quảng cáo

Đối với mỗi tập hợp con này, SHAP không xóa một tính năng rồi đào tạo lại mô hình mà thay thế tính năng đó bằng giá trị trung bình của tính năng đó, sau đó tạo dự đoán.

Chúng ta nên mong đợi tổng đóng góp bằng với sự khác biệt giữa dự đoán và dự đoán trung bình. Hãy kiểm tra xem:

 

SHAP: Giải thích mọi mô hình học máy bằng Python
Hình ảnh của Tác giả

 

Mát mẻ! Họ bình đẳng.

Hình dung lời giải thích của dự đoán thứ hai:

SHAP: Giải thích mọi mô hình học máy bằng Python
Hình ảnh của Tác giả

 

Thay vì xem xét từng trường hợp riêng lẻ, chúng ta có thể hình dung tác động tổng thể của các tính năng này trên nhiều trường hợp bằng biểu đồ tóm tắt SHAP:

SHAP: Giải thích mọi mô hình học máy bằng Python
Hình ảnh của Tác giả

 

Biểu đồ tóm tắt SHAP cho chúng ta biết các tính năng quan trọng nhất và phạm vi ảnh hưởng của chúng đối với tập dữ liệu.

Từ biểu đồ trên, chúng ta có thể thu được một số hiểu biết thú vị về các dự đoán của mô hình:

  • Việc sử dụng internet hàng ngày của người dùng có ảnh hưởng mạnh nhất đến việc người dùng đó có nhấp vào quảng cáo hay không.
  • như sử dụng internet hàng ngày tăng, một người dùng là ít có khả năng để nhấp vào một quảng cáo.
  • như thời gian hàng ngày dành cho trang web tăng lên, một người dùng là ít có khả năng để nhấp vào một quảng cáo.
  • như thu nhập khu vực tăng, một người dùng là ít có khả năng để nhấp vào một quảng cáo.
  • Như tuổi tăng, một người dùng là nhiều khả năng để nhấp vào một quảng cáo.
  • Nếu một người dùng là một người đàn ông, người dùng đó là ít có khả năng để nhấp vào một quảng cáo.

Chúng ta cũng có thể nhận được biểu đồ tầm quan trọng của tính năng toàn cầu bằng cách sử dụng biểu đồ thanh SHAP.

SHAP: Giải thích mọi mô hình học máy bằng Python
Hình ảnh của Tác giả

 

Chúng ta có thể quan sát tác động của một tính năng duy nhất đối với tất cả các dự đoán do mô hình đưa ra bằng cách sử dụng biểu đồ phân tán phụ thuộc SHAP.

Sử dụng Internet hàng ngày

Biểu đồ phân tán của tính năng sử dụng internet hàng ngày:

SHAP: Giải thích mọi mô hình học máy bằng Python
Hình ảnh của Tác giả

 

Từ biểu đồ trên, chúng ta có thể thấy rằng khi mức sử dụng internet hàng ngày tăng lên, giá trị SHAP cho mức sử dụng internet hàng ngày sẽ giảm. Điều này xác nhận những gì chúng ta đã thấy trong cốt truyện trước đó.

Chúng ta cũng có thể quan sát sự tương tác giữa tính năng sử dụng internet hàng ngày với các tính năng khác trong cùng một biểu đồ bằng cách thêm color=shap_values .

Biểu đồ phân tán sẽ cố gắng chọn ra cột tính năng có tương tác mạnh nhất với việc sử dụng internet hàng ngày, tức là thời gian hàng ngày dành cho trang web.

SHAP: Giải thích mọi mô hình học máy bằng Python
Hình ảnh của Tác giả

 

Mát mẻ! Từ biểu đồ trên, chúng ta có thể thấy rằng một người sử dụng Internet 150 phút mỗi ngày và dành một lượng thời gian nhỏ trên trang web mỗi ngày có nhiều khả năng nhấp vào quảng cáo hơn.

Hãy xem biểu đồ phân tán của một số tính năng khác:

Thời gian hàng ngày dành cho trang web

 

SHAP: Giải thích mọi mô hình học máy bằng Python
Hình ảnh của Tác giả

 

thu nhập khu vực

SHAP: Giải thích mọi mô hình học máy bằng Python
Hình ảnh của Tác giả

 

Độ tuổi

SHAP: Giải thích mọi mô hình học máy bằng Python
Hình ảnh của Tác giả

 

Giới Tính

SHAP: Giải thích mọi mô hình học máy bằng Python
Hình ảnh của Tác giả

 

Bạn cũng có thể quan sát ma trận của tương tác giữa các tính năng với biểu đồ tóm tắt giá trị tương tác SHAP. Trong biểu đồ này, các hiệu ứng chính nằm trên đường chéo và các hiệu ứng tương tác nằm ngoài đường chéo.

SHAP: Giải thích mọi mô hình học máy bằng Python
Hình ảnh của Tác giả

 

Tuyệt đấy!

Xin chúc mừng! Bạn vừa tìm hiểu về giá trị Shapey và cách sử dụng nó để diễn giải một mô hình học máy. Tôi hy vọng bài viết này sẽ cung cấp cho bạn kiến ​​thức cần thiết để diễn giải mô hình học máy của riêng bạn bằng Python.

Tôi khuyên bạn nên kiểm tra Tài liệu của SHAP để tìm hiểu thêm về các ứng dụng khác của SHAP.

Vui lòng chơi với mã nguồn trong sổ tay tương tác này hoặc ngã ba của tôi kho.

Tài liệu tham khảo

Mazzanti, S. (2021, ngày 21 tháng XNUMX). SHAP đã giải thích theo cách mà tôi ước ai đó giải thích cho tôi. Vừa phải. Truy cập ngày 23 tháng 2021 năm XNUMX, từ https://towardsdatascience.com/shap-explained-the-way-i-wish-someone-explained-it-to-me-ab81cc69ef30.

 
 
Khuyên Trần là một nhà văn khoa học dữ liệu phong phú và đã viết một bộ sưu tập ấn tượng về các chủ đề khoa học dữ liệu hữu ích cùng với mã và các bài báo. Khuyne hiện đang tìm kiếm vai trò kỹ sư học máy, vai trò nhà khoa học dữ liệu hoặc vai trò ủng hộ nhà phát triển ở Bay Area sau tháng 2022 năm XNUMX, vì vậy, vui lòng liên hệ nếu bạn đang tìm người có bộ kỹ năng của cô ấy.

 
Nguyên. Đăng lại với sự cho phép.
 

tại chỗ_img

Tin tức mới nhất

tại chỗ_img