国产亚洲精品AA片在线观看,丰满熟妇HD,亚洲成色www成人网站妖精,丁香五月天婷婷五月天男人天堂

博客專(zhuān)欄

EEPW首頁(yè) > 博客 > 在機(jī)器學(xué)習(xí)中使用 SHAP 值實(shí)現(xiàn)模型可解釋性

在機(jī)器學(xué)習(xí)中使用 SHAP 值實(shí)現(xiàn)模型可解釋性

發(fā)布人:ygtu 時(shí)間:2023-08-06 來(lái)源:工程師 發(fā)布文章

推薦:使用NSDT場(chǎng)景編輯器助你快速搭建可二次編輯的3D應(yīng)用場(chǎng)景

機(jī)器學(xué)習(xí)可解釋性

機(jī)器學(xué)習(xí)可解釋性是指用于解釋和理解機(jī)器學(xué)習(xí)模型如何進(jìn)行預(yù)測(cè)的技術(shù)。隨著模型變得越來(lái)越復(fù)雜,解釋它們的內(nèi)在邏輯并深入了解它們的行為變得越來(lái)越重要。

這很重要,因?yàn)闄C(jī)器學(xué)習(xí)模型通常用于做出具有現(xiàn)實(shí)世界后果的決策,例如醫(yī)療保健、金融和刑事司法。如果沒(méi)有可解釋性,就很難知道機(jī)器學(xué)習(xí)模型是否做出了正確的決策,或者它是否有偏見(jiàn)。

在機(jī)器學(xué)習(xí)可解釋性方面,需要考慮各種技術(shù)。一種流行的方法是確定特征重要性分?jǐn)?shù),該分?jǐn)?shù)揭示了對(duì)模型預(yù)測(cè)影響最大的特征。SKlearn 模型默認(rèn)提供特征重要性分?jǐn)?shù),但您也可以利用 SHAP、Lime 和 Yellowbrick 等工具來(lái)更好地可視化和理解機(jī)器學(xué)習(xí)結(jié)果。

本教程將介紹 SHAP 值以及如何使用 SHAP Python 包解釋機(jī)器學(xué)習(xí)結(jié)果。

什么是 SHAP 值?

SHAP 值基于博弈論中的 Shapley 值。在博弈論中,Shapley值有助于確定協(xié)作博弈中的每個(gè)玩家對(duì)總支出的貢獻(xiàn)。

對(duì)于機(jī)器學(xué)習(xí)模型,每個(gè)特征都被視為一個(gè)“玩家”。要素的 Shapley 值表示該要素在所有可能的特征組合中的貢獻(xiàn)的平均量級(jí)。

具體而言,SHAP 值是通過(guò)比較存在和不存在特定特征的模型預(yù)測(cè)來(lái)計(jì)算的。這是針對(duì)數(shù)據(jù)集中的每個(gè)要素和每個(gè)樣本以迭代方式完成的。

通過(guò)為每個(gè)特征分配每個(gè)預(yù)測(cè)的重要性值,SHAP 值提供了模型行為的本地、一致的解釋。它們揭示了哪些特征對(duì)特定預(yù)測(cè)的影響最大,無(wú)論是正面的還是負(fù)面的。這對(duì)于理解復(fù)雜機(jī)器學(xué)習(xí)模型(如深度神經(jīng)網(wǎng)絡(luò))背后的推理很有價(jià)值。

SHAP 值入門(mén)

在本節(jié)中,我們將使用 Kaggle 的移動(dòng)價(jià)格分類(lèi)數(shù)據(jù)集來(lái)構(gòu)建和分析多分類(lèi)模型。我們將根據(jù)功能(例如RAM,尺寸等)對(duì)手機(jī)價(jià)格進(jìn)行分類(lèi)。目標(biāo)變量為 <code>price_range</code>,值為 0(低成本)、1(中等成本)、2(高成本)和 3(非常高的成本)。

注意:帶有輸出的代碼源可在 Deepnote 工作區(qū)中找到。

安裝 SHAP

使用<code>pip</code>或<code>conda</code>命令在系統(tǒng)上安裝<code>shap</code>非常簡(jiǎn)單。

pip install shap

conda install -c conda-forge shap
加載數(shù)據(jù)

數(shù)據(jù)集干凈且組織良好,使用標(biāo)簽編碼器將類(lèi)別轉(zhuǎn)換為數(shù)字。

import pandas as pd

mobile = pd.read_csv("train.csv")
mobile.head()

在機(jī)器學(xué)習(xí)中使用 SHAP 值實(shí)現(xiàn)模型可解釋性

準(zhǔn)備數(shù)據(jù)

首先,我們將確定因變量和自變量,然后將它們拆分為單獨(dú)的訓(xùn)練集和測(cè)試集。

from sklearn.model_selection import train_test_split

 
X = mobile.drop('price_range', axis=1)
y = mobile.pop('price_range')

# Train and test split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=1)
訓(xùn)練和評(píng)估模型

之后,我們將使用訓(xùn)練集訓(xùn)練我們的隨機(jī)森林分類(lèi)器模型,并在測(cè)試集上評(píng)估其性能。我們獲得了 87% 的準(zhǔn)確率,這是相當(dāng)不錯(cuò)的,我們的模型總體上是平衡的。

from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import classification_report

# Model fitting
rf = RandomForestClassifier()
rf.fit(X_train, y_train)

# Prediction
y_pred = rf.predict(X_test)

# Model evaluation
print(classification_report(y_pred, y_test))
              precision    recall  f1-score   support

           0       0.95      0.91      0.93       141
           1       0.83      0.81      0.82       153
           2       0.80      0.85      0.83       158
           3       0.93      0.93      0.93       148

    accuracy                           0.87       600
   macro avg       0.88      0.87      0.88       600
weighted avg       0.87      0.87      0.87       600
計(jì)算 SHAP 值

在這一部分中,我們將創(chuàng)建一個(gè) SHAP 樹(shù)解釋器,并使用它來(lái)計(jì)算測(cè)試集的 SHAP 值。

import shap
shap.initjs()

# Calculate SHAP values
explainer = shap.TreeExplainer(rf)
shap_values = explainer.shap_values(X_test)
摘要圖

匯總圖是模型中每個(gè)特征的特征重要性的圖形表示。它是了解模型如何進(jìn)行預(yù)測(cè)和識(shí)別最重要特征的有用工具。

在我們的例子中,它顯示了每個(gè)目標(biāo)類(lèi)的特征重要性。事實(shí)證明,手機(jī)的“內(nèi)存”,“battery_power”和尺寸在決定價(jià)格范圍方面起著重要作用。

# Summarize the effects of features
shap.summary_plot(shap_values, X_test)

在機(jī)器學(xué)習(xí)中使用 SHAP 值實(shí)現(xiàn)模型可解釋性

我們現(xiàn)在將可視化類(lèi)“0”的未來(lái)重要性。我們可以清楚地看到,RAM、電池和手機(jī)尺寸對(duì)預(yù)測(cè)低成本手機(jī)有負(fù)面影響。

shap.summary_plot(shap_values[0], X_test)

在機(jī)器學(xué)習(xí)中使用 SHAP 值實(shí)現(xiàn)模型可解釋性

依賴(lài)關(guān)系圖

依賴(lài)圖是一種散點(diǎn)圖,用于顯示特定特征如何影響模型的預(yù)測(cè)。在此示例中,功能為“battery_power”。

圖的 x 軸顯示“battery_power”的值,y 軸顯示形狀值。當(dāng)電池電量超過(guò)1200時(shí),開(kāi)始對(duì)低端手機(jī)型號(hào)的分類(lèi)產(chǎn)生負(fù)面影響。

shap.dependence_plot("battery_power", shap_values[0], X_test,interaction_index="ram")

在機(jī)器學(xué)習(xí)中使用 SHAP 值實(shí)現(xiàn)模型可解釋性

力圖

讓我們將焦點(diǎn)縮小到單個(gè)樣本。具體來(lái)說(shuō),我們將仔細(xì)研究第 12 個(gè)樣本,看看哪些特征導(dǎo)致了“0”結(jié)果。為此,我們將使用力圖并輸入期望值、SHAP 值和測(cè)試樣本。

事實(shí)證明,RAM、手機(jī)尺寸和時(shí)鐘速度對(duì)型號(hào)的影響更大。我們還注意到,該模型不會(huì)預(yù)測(cè)“0”類(lèi),因?yàn)?f(x) 較低。

shap.plots.force(explainer.expected_value[0], shap_values[0][12,:], X_test.iloc[12, :], matplotlib = True)

在機(jī)器學(xué)習(xí)中使用 SHAP 值實(shí)現(xiàn)模型可解釋性

我們現(xiàn)在將可視化類(lèi)“1”的力圖,我們可以看到它是正確的類(lèi)。

shap.plots.force(explainer.expected_value[1], shap_values[1][12, :], X_test.iloc[12, :],matplotlib = True)

在機(jī)器學(xué)習(xí)中使用 SHAP 值實(shí)現(xiàn)模型可解釋性

我們可以通過(guò)檢查測(cè)試集的第 12 條記錄來(lái)確認(rèn)我們的預(yù)測(cè)。

y_test.iloc[12]
>>> 1
決策圖

決策圖可以成為了解機(jī)器學(xué)習(xí)模型決策過(guò)程的有用工具。它們可以幫助我們識(shí)別對(duì)模型預(yù)測(cè)最重要的特征,并識(shí)別潛在的偏差。

為了更好地理解影響模型預(yù)測(cè)類(lèi)“1”的因素,我們將檢查決策圖。根據(jù)此圖,手機(jī)高度似乎對(duì)模型有負(fù)面影響,而RAM則有積極影響。

shap.decision_plot(explainer.expected_value[1], shap_values[1][12,:], X_test.columns)

在機(jī)器學(xué)習(xí)中使用 SHAP 值實(shí)現(xiàn)模型可解釋性

結(jié)論

在這篇博文中,我們介紹了 SHAP 值,這是一種解釋機(jī)器學(xué)習(xí)模型輸出的方法。我們已經(jīng)展示了如何使用 SHAP 值來(lái)解釋單個(gè)預(yù)測(cè)和模型的整體性能。我們還提供了如何在實(shí)踐中使用 SHAP 值的示例。

隨著機(jī)器學(xué)習(xí)擴(kuò)展到醫(yī)療保健、金融和自動(dòng)駕駛汽車(chē)等敏感領(lǐng)域,可解釋性和可解釋性只會(huì)變得越來(lái)越重要。SHAP 值提供了一種靈活、一致的方法來(lái)解釋預(yù)測(cè)和模型行為。它可用于深入了解模型如何進(jìn)行預(yù)測(cè)、識(shí)別潛在偏差并提高模型的性能。

原文鏈接:在機(jī)器學(xué)習(xí)中使用 SHAP 值實(shí)現(xiàn)模型可解釋性 (mvrlink.com)


*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。



關(guān)鍵詞: AI 人工智能 chatgpt

相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉