<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>
"); //-->

博客專(zhuān)欄

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

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

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

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

機器學(xué)習可解釋性

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

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

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

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

什么是 SHAP 值?

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

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

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

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

SHAP 值入門(mén)

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

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

安裝 SHAP

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

pip install shap

conda install -c conda-forge shap
加載數據

數據集干凈且組織良好,使用標簽編碼器將類(lèi)別轉換為數字。

import pandas as pd

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

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

準備數據

首先,我們將確定因變量和自變量,然后將它們拆分為單獨的訓練集和測試集。

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)
訓練和評估模型

之后,我們將使用訓練集訓練我們的隨機森林分類(lèi)器模型,并在測試集上評估其性能。我們獲得了 87% 的準確率,這是相當不錯的,我們的模型總體上是平衡的。

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
計算 SHAP 值

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

import shap
shap.initjs()

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

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

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

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

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

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

shap.summary_plot(shap_values[0], X_test)

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

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

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

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

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

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

力圖

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

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

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

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

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

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

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

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

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

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

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

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

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

結論

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

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

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


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



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

相關(guān)推薦

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

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>