熱線電話:13121318867

登錄
首頁精彩閱讀如何評估機器學習模型的商業價值
如何評估機器學習模型的商業價值
2021-09-22
收藏
如何評估<a href='/map/jiqixuexi/' style='color:#000;font-size:inherit;'>機器學習</a>模型的商業價值

作者:amitvkulkarni

CDA數據分析師編譯

概述

對于任何評估來說,最難的是保持簡單易操作,在數據科學中也是如此。在任何數據科學項目中,細化數據、微調模型、部署它們的迭代過程都是一個持續的過程。隨著工具、算法的進步,以及隨著 MLOps 的出現,事情變得容易了很多,而且未來也會繼續發展——技術會優化自己。

業務方面呢?說服客戶相信使用先進工具和技術構建的復雜模型的預測能力有多容易?客戶是否愿意為項目提供資金并信任我們模型的建議?好吧,不妨試著解釋模型的 ROC 曲線,試著用特異性和敏感性指標來說服客戶——你會看到的只是眼球在滾動。

但是,如果我們能夠在沒有復雜指標和技術術語的情況下回答業務問題呢?那么,我們就可能有機會從業務部門那里獲得支持。在本文中,我們將看到一個用例,在該用例中,我們仍將構建我們的模型,但以不同的方式對其進行解釋——業務方式。

使用 ML 模型提取商業價值的方法

在這篇博客中,我們將探索十分位數的使用,了解各種評估圖,如累積增益圖和提升圖等,以評估 ML 模型的商業價值。該方法將幫助我們解釋 ML 模型的預測能力,并使解釋模型結果變得很簡單。這些圖表和指標將使企業能夠更有信心地做出明智的決策。

我們將在本文中探索以下主題。

  1. 數據探索
  2. 數據處理
  3. 建立模型
  4. 生成十分位數和報告
  5. 模型對比
  6. 業務場景
  7. 結論

入門

我們將使用來自 UCI 機器學習存儲庫的公開可用的銀行數據 集, zip 文件中有四個數據集,但我們感興趣的是*bank-additional-full.csv。*所有的屬性信息都可以在上面的 URL 中找到。數據來自直接營銷電話聯系客戶,以評估客戶是否有興趣訂閱銀行定期存款。如果訂閱,則為 Yes,否則為 No。本文討論的是如何評估 ML 模型的商業價值。

數據加載和處理:

讓我們加載數據并查看一下以便更好的理解數據。

import wget import zipfile import pandas as pd import numpy as np
url = 'https://archive.ics.uci.edu/ml/machine-learning-databases/00222/bank-additional.zip' wget.download(url) 
zf = zipfile.ZipFile('bank-additional.zip')
df= pd.read_csv(zf.open('bank-additional/bank-additional-full.csv'), sep=';')

我們可以進行完整的EDA/特征工程/選擇重要變量然后構建模型,但為了簡單起見,我們將選擇很少的變量進行模型構建。

df= df[['y', 'duration', 'campaign', 'pdays', 'previous', 'euribor3m']]

此外,還需要更進一步地探索數據,將目標變量轉換為分類變量并對其進行編碼。

df.y[df.y == 'yes'] = 'term deposit' df.y = pd.Categorical(df.y)
df['y'] = df.y.cat.codes
df.info()

輸出:

RangeIndex: 41188 entries, 0 to 41187 Data columns (total 6 columns): # Column Non-Null Count Dtype  —— ————– —– 0 y 41188 non-null int8 1 duration 41188 non-null int64 2 campaign 41188 non-null int64 3 pdays 41188 non-null int64 4 previous 41188 non-null int64 5 euribor3m 41188 non-null float64 dtypes: float64(1), int64(4), int8(1) memory usage: 1.6 MB 
df.head() y duration campaign pdays previous euribor3m 0 261 1 999 0 4.857 0 149 1 999 0 4.857 0 226 1 999 0 4.857 0 151 1 999 0 4.857 0 307 1 999 0 4.857 
df.describe() y duration campaign pdays previous euribor3m count 41188.000000 41188.000000 41188.000000 41188.000000 41188.000000 41188.000000 mean 0.112654 258.285010 2.567593 962.475454 0.172963 3.621291 std 0.316173 259.279249 2.770014 186.910907 0.494901 1.734447 min 0.000000 0.000000 1.000000 0.000000 0.000000 0.634000 25% 0.000000 102.000000 1.000000 999.000000 0.000000 1.344000 50% 0.000000 180.000000 2.000000 999.000000 0.000000 4.857000 75% 0.000000 319.000000 3.000000 999.000000 0.000000 4.961000 max 1.000000 4918.000000 56.000000 999.000000 7.000000 5.045000 

模型構建以提取商業價值

邏輯回歸

Step1:定義自變量和目標變量

y = df.y X = df.drop('y', axis = 1)

Step2:將數據集拆分為訓練集和測試集,其中測試大小為整個數據集的 20%

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 2021) 

Step3:建立邏輯回歸模型

from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression # Logistic regression model clf_glm = LogisticRegression(multi_class = 'multinomial', solver = 'newton-cg').fit(X_train, y_train)

prob_glm = clf_glm.predict_proba(X_test)

max_prob_glm = round(pd.DataFrame(np.amax(prob_glm, axis=1), columns = ['prob_glm']),2)

至此,我們已經建立了模型,并在測試數據上對其進行了評分(預測),這為我們提供了每個觀察結果的預測概率。

生成十分位數

簡單地說,十分位數把數據進行分箱。所以,我們將所有預測的概率分成十組,并對它們進行排名,這意味著最高的預測概率將在十分之一,最低的設置將在十分之一。我們將使用pandas的 cut() 函數拆分數據。

下面的代碼行創建一個名為Decile_rank_glm的新列, 它保存每個預測記錄的排名。

max_prob_glm['Decile_rank_glm'] = pd.cut(max_prob_glm['prob_glm'], 10, labels = np.arange(10,0, -1))
prob_glm Decile_rank_glm 0 0.99 1 1 0.59 9 2 0.96 1 3 0.83 4 4 0.85 4 ... ... ... 8233 0.98 1 8234 0.98 1 8235 0.99 1 8236 0.99 1 8237 0.93 2 

注: 0.99 的概率為 1,0.93 為 2,0.85 為 4,0.59 為 9。我們將在后面的部分中看到此結果的可視化。

模型評估以提取商業價值

我們構建的任何模型都必須與基線模型進行比較,以評估模型的性能。讓我們在下面進一步探討這一點。

  • 隨機模型:基線模型將是一個隨機模型,這意味著它與拋硬幣一樣好,這意味著有 50% 的概率客戶的電話是正確的或者客戶購買我們的產品。我們的邏輯回歸模型的性能顯然應該比這更好。
  • 向導模型:這是另一個極端模型,它的預測是完美的,這意味著它幾乎以 100% 的準確度進行預測。此模型不應用于生產或任何業務決策,因為很可能會過度擬合。
  • 邏輯回歸:我們的模型應該介于這兩個極端模型之間,這使我們有足夠的信心做出業務決策。

我們將在累積增益圖中可視化上述模型。展現邏輯回歸的性能。

kds.metrics.plot_cumulative_gain(y_test.to_numpy(), prob_glm[:,1])
如何評估<a href='/map/jiqixuexi/' style='color:#000;font-size:inherit;'>機器學習</a>模型的商業價值

累積增益圖 | 商業價值機器學習模型

到目前為止看起來不錯,圖在預期線上,邏輯回歸模型介于我們討論的兩個極端模型之間。

累積增益圖的見解:

  • 如果我們只能選擇前 20%(十分位數 1 和十分位數 2),那么我們就可以覆蓋**近 80%**的目標類別。
  • 由于這是一個累積圖,我們看到**曲線在十分位數 5 之后變平,**這意味著十分位數 6 到 10 要么有最少的記錄,要么沒有。
  • 向導模型在十分位數 2 的位置達到了100% 標記——我們已經知道這是一個理想模型,僅供參考。如果我們的模型開始接近或者類似于這兩個極端模型中的任何一個,那么需要檢查我們的模型。

到目前為止,我們已經討論了模型、十分位數及其性能比較。讓我們在十分位數級別上進一步探討這一點,以更清楚地了解發生了什么以及我們如何更好地解釋這個過程。我們將在視覺效果的幫助下進行分析,這使它變得更加容易。kds 包有一個非常好的功能,可以在一行代碼中生成所有指標報告。

kds.metrics.report(y_test, prob_glm[:,1])
如何評估<a href='/map/jiqixuexi/' style='color:#000;font-size:inherit;'>機器學習</a>模型的商業價值

metrics report | Business value ML model

讓我們了解這些情節中的每一個。需要注意的是,所有圖的 x 軸都是十分位數。

  1. 提升圖(Lift Plot):這個圖向我們展示了邏輯回歸模型與隨機模型相比到底有多好。例如:十分位數 2 給了我們幾乎 4 倍的提升,這意味著我們可以比隨機模型方法做得好 4 倍。當我們進入更高的十分位數時,升力下降并最終滿足隨機模型線,這是因為所有更高的概率分數值都在我們已經在累積增益圖中看到的最高十分位數(1 到 3)中。因此,底部十分位數的概率較低且幾乎與隨機模型相同。
  2. 十分位數提升圖(Decile-wise Lift Plot):該圖向我們展示了每個十分位數中目標類觀察的百分比,我們觀察到十分位數 1 具有最大值,隨著x軸數值的延伸,十分位數百分比下降,在某個點之后它甚至低于隨機模型線。這是因為隨機模型具有隨機設置的均勻分布的觀測值,而我們的模型在較高的十分位數中預測的觀測值較少。
  3. 累積增益圖(Cumulative Gain Plot):在以前的部分中討論過這個問題,還研究了對圖的解釋。
  4. KS 統計圖(KS Statistic Plot):KS 圖評估不同的分布,即事件和非事件,KS 值是分布之間差異最大的點。簡而言之,它有助于我們理解 ML 模型區分兩個事件的能力。KS 分數大于 40,如果它恰好在前 3 個十分位數中,那么它被認為是好的。在我們的例子中,我們從圖中得到了 68.932 和十分位數 3 的分數。

讓我們用隨機森林再構建一個模型,看看結果如何。

clf_rf = RandomForestClassifier().fit(X_train, y_train)
prob_rf = clf_rf.predict_proba(X_test)
max_prob_rf = pd.DataFrame(np.amax(prob_rf, axis=1), columns = ['prob_rf'])
max_prob_rf['Decile_rank_rf'] = pd.cut(max_prob_rf['prob_rf'], 10, labels = np.arange(10,0, -1))
kds.metrics.plot_cumulative_gain(y_test.to_numpy(), prob_rf[:,1])
kds.metrics.report(y_test, prob_rf[:,1])
如何評估<a href='/map/jiqixuexi/' style='color:#000;font-size:inherit;'>機器學習</a>模型的商業價值

img

觀察:

  • 隨機森林模型略好于邏輯回歸模型。
  • 十分位數 2 的提升略高,KS 統計數據為 72.18,而logistic統計數據為 68.93

業務場景

建議控制:在某些情況下,客戶有業務需求,即應始終生成最少 X 條建議。在這種情況下,我們可以通過考慮前 3 個十分位數而不是 2 個十分位數來獲得更大的建議,并且還可以對其他記錄進行精細控制。

衡量市場反應:推薦后分析和市場反應很容易衡量。例如,從前一點,我們可以單獨跟蹤來自十分位數 3 的所有額外推薦的表現。來自十分位數 3 的額外推送是否產生了任何影響(正面或負面)?

優化營銷支出:通過關注前 20-30% 的人群,企業可以節省時間、資源和金錢。以避免這些時間、資源和金錢會花費在無響應者或定位錯誤客戶上。

結語

技術有其一席之地,企業也有發言權。歸根結底,這一切都與技術帶來的商業價值有關。當這些收益用商業術語來解釋時,它總是會更有效。它不僅有助于從業務中獲得信心,而且還開辟了新的探索機會。

請注意,我們構建了兩個分類模型,但沒有研究我們通常為此類模型所做的 ROC 曲線、混淆矩陣、精度、召回率和其他標準指標。強烈建議跟蹤和測量這些指標以評估模型的性能,然后遵循此文中的十分位數方法。根據目標受眾和目標,使用最適合目標的方法。

數據分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數據分析師資訊
更多

OK
客服在線
立即咨詢
日韩人妻系列无码专区视频,先锋高清无码,无码免费视欧非,国精产品一区一区三区无码
客服在線
立即咨詢