
作者:amitvkulkarni
CDA數(shù)據(jù)分析師編譯
對于任何評估來說,最難的是保持簡單易操作,在數(shù)據(jù)科學(xué)中也是如此。在任何數(shù)據(jù)科學(xué)項目中,細化數(shù)據(jù)、微調(diào)模型、部署它們的迭代過程都是一個持續(xù)的過程。隨著工具、算法的進步,以及隨著 MLOps 的出現(xiàn),事情變得容易了很多,而且未來也會繼續(xù)發(fā)展——技術(shù)會優(yōu)化自己。
業(yè)務(wù)方面呢?說服客戶相信使用先進工具和技術(shù)構(gòu)建的復(fù)雜模型的預(yù)測能力有多容易?客戶是否愿意為項目提供資金并信任我們模型的建議?好吧,不妨試著解釋模型的 ROC 曲線,試著用特異性和敏感性指標(biāo)來說服客戶——你會看到的只是眼球在滾動。
但是,如果我們能夠在沒有復(fù)雜指標(biāo)和技術(shù)術(shù)語的情況下回答業(yè)務(wù)問題呢?那么,我們就可能有機會從業(yè)務(wù)部門那里獲得支持。在本文中,我們將看到一個用例,在該用例中,我們?nèi)詫?gòu)建我們的模型,但以不同的方式對其進行解釋——業(yè)務(wù)方式。
使用 ML 模型提取商業(yè)價值的方法
在這篇博客中,我們將探索十分位數(shù)的使用,了解各種評估圖,如累積增益圖和提升圖等,以評估 ML 模型的商業(yè)價值。該方法將幫助我們解釋 ML 模型的預(yù)測能力,并使解釋模型結(jié)果變得很簡單。這些圖表和指標(biāo)將使企業(yè)能夠更有信心地做出明智的決策。
我們將在本文中探索以下主題。
我們將使用來自 UCI 機器學(xué)習(xí)存儲庫的公開可用的銀行數(shù)據(jù) 集, zip 文件中有四個數(shù)據(jù)集,但我們感興趣的是*bank-additional-full.csv。*所有的屬性信息都可以在上面的 URL 中找到。數(shù)據(jù)來自直接營銷電話聯(lián)系客戶,以評估客戶是否有興趣訂閱銀行定期存款。如果訂閱,則為 Yes,否則為 No。本文討論的是如何評估 ML 模型的商業(yè)價值。
讓我們加載數(shù)據(jù)并查看一下以便更好的理解數(shù)據(jù)。
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/特征工程/選擇重要變量然后構(gòu)建模型,但為了簡單起見,我們將選擇很少的變量進行模型構(gòu)建。
df= df[['y', 'duration', 'campaign', 'pdays', 'previous', 'euribor3m']]
此外,還需要更進一步地探索數(shù)據(jù),將目標(biāo)變量轉(zhuǎn)換為分類變量并對其進行編碼。
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
模型構(gòu)建以提取商業(yè)價值
Step1:定義自變量和目標(biāo)變量
y = df.y X = df.drop('y', axis = 1)
Step2:將數(shù)據(jù)集拆分為訓(xùn)練集和測試集,其中測試大小為整個數(shù)據(jù)集的 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)
至此,我們已經(jīng)建立了模型,并在測試數(shù)據(jù)上對其進行了評分(預(yù)測),這為我們提供了每個觀察結(jié)果的預(yù)測概率。
生成十分位數(shù)
簡單地說,十分位數(shù)把數(shù)據(jù)進行分箱。所以,我們將所有預(yù)測的概率分成十組,并對它們進行排名,這意味著最高的預(yù)測概率將在十分之一,最低的設(shè)置將在十分之一。我們將使用pandas的 cut() 函數(shù)拆分數(shù)據(jù)。
下面的代碼行創(chuàng)建一個名為Decile_rank_glm的新列, 它保存每個預(yù)測記錄的排名。
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。我們將在后面的部分中看到此結(jié)果的可視化。
模型評估以提取商業(yè)價值
我們構(gòu)建的任何模型都必須與基線模型進行比較,以評估模型的性能。讓我們在下面進一步探討這一點。
我們將在累積增益圖中可視化上述模型。展現(xiàn)邏輯回歸的性能。
kds.metrics.plot_cumulative_gain(y_test.to_numpy(), prob_glm[:,1])
累積增益圖 | 商業(yè)價值機器學(xué)習(xí)模型
到目前為止看起來不錯,圖在預(yù)期線上,邏輯回歸模型介于我們討論的兩個極端模型之間。
累積增益圖的見解:
到目前為止,我們已經(jīng)討論了模型、十分位數(shù)及其性能比較。讓我們在十分位數(shù)級別上進一步探討這一點,以更清楚地了解發(fā)生了什么以及我們?nèi)绾胃玫亟忉屵@個過程。我們將在視覺效果的幫助下進行分析,這使它變得更加容易。kds 包有一個非常好的功能,可以在一行代碼中生成所有指標(biāo)報告。
kds.metrics.report(y_test, prob_glm[:,1])
metrics report | Business value ML model
讓我們了解這些情節(jié)中的每一個。需要注意的是,所有圖的 x 軸都是十分位數(shù)。
讓我們用隨機森林再構(gòu)建一個模型,看看結(jié)果如何。
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])
img
觀察:
業(yè)務(wù)場景
建議控制:在某些情況下,客戶有業(yè)務(wù)需求,即應(yīng)始終生成最少 X 條建議。在這種情況下,我們可以通過考慮前 3 個十分位數(shù)而不是 2 個十分位數(shù)來獲得更大的建議,并且還可以對其他記錄進行精細控制。
衡量市場反應(yīng):推薦后分析和市場反應(yīng)很容易衡量。例如,從前一點,我們可以單獨跟蹤來自十分位數(shù) 3 的所有額外推薦的表現(xiàn)。來自十分位數(shù) 3 的額外推送是否產(chǎn)生了任何影響(正面或負面)?
優(yōu)化營銷支出:通過關(guān)注前 20-30% 的人群,企業(yè)可以節(jié)省時間、資源和金錢。以避免這些時間、資源和金錢會花費在無響應(yīng)者或定位錯誤客戶上。
結(jié)語
技術(shù)有其一席之地,企業(yè)也有發(fā)言權(quán)。歸根結(jié)底,這一切都與技術(shù)帶來的商業(yè)價值有關(guān)。當(dāng)這些收益用商業(yè)術(shù)語來解釋時,它總是會更有效。它不僅有助于從業(yè)務(wù)中獲得信心,而且還開辟了新的探索機會。
請注意,我們構(gòu)建了兩個分類模型,但沒有研究我們通常為此類模型所做的 ROC 曲線、混淆矩陣、精度、召回率和其他標(biāo)準指標(biāo)。強烈建議跟蹤和測量這些指標(biāo)以評估模型的性能,然后遵循此文中的十分位數(shù)方法。根據(jù)目標(biāo)受眾和目標(biāo),使用最適合目標(biāo)的方法。
數(shù)據(jù)分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
LSTM 模型輸入長度選擇技巧:提升序列建模效能的關(guān)鍵? 在循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)家族中,長短期記憶網(wǎng)絡(luò)(LSTM)憑借其解決長序列 ...
2025-07-11CDA 數(shù)據(jù)分析師報考條件詳解與準備指南? ? 在數(shù)據(jù)驅(qū)動決策的時代浪潮下,CDA 數(shù)據(jù)分析師認證愈發(fā)受到矚目,成為眾多有志投身數(shù) ...
2025-07-11數(shù)據(jù)透視表中兩列相乘合計的實用指南? 在數(shù)據(jù)分析的日常工作中,數(shù)據(jù)透視表憑借其強大的數(shù)據(jù)匯總和分析功能,成為了 Excel 用戶 ...
2025-07-11尊敬的考生: 您好! 我們誠摯通知您,CDA Level I和 Level II考試大綱將于 2025年7月25日 實施重大更新。 此次更新旨在確保認 ...
2025-07-10BI 大數(shù)據(jù)分析師:連接數(shù)據(jù)與業(yè)務(wù)的價值轉(zhuǎn)化者? ? 在大數(shù)據(jù)與商業(yè)智能(Business Intelligence,簡稱 BI)深度融合的時代,BI ...
2025-07-10SQL 在預(yù)測分析中的應(yīng)用:從數(shù)據(jù)查詢到趨勢預(yù)判? ? 在數(shù)據(jù)驅(qū)動決策的時代,預(yù)測分析作為挖掘數(shù)據(jù)潛在價值的核心手段,正被廣泛 ...
2025-07-10數(shù)據(jù)查詢結(jié)束后:分析師的收尾工作與價值深化? ? 在數(shù)據(jù)分析的全流程中,“query end”(查詢結(jié)束)并非工作的終點,而是將數(shù) ...
2025-07-10CDA 數(shù)據(jù)分析師考試:從報考到取證的全攻略? 在數(shù)字經(jīng)濟蓬勃發(fā)展的今天,數(shù)據(jù)分析師已成為各行業(yè)爭搶的核心人才,而 CDA(Certi ...
2025-07-09【CDA干貨】單樣本趨勢性檢驗:捕捉數(shù)據(jù)背后的時間軌跡? 在數(shù)據(jù)分析的版圖中,單樣本趨勢性檢驗如同一位耐心的偵探,專注于從單 ...
2025-07-09year_month數(shù)據(jù)類型:時間維度的精準切片? ? 在數(shù)據(jù)的世界里,時間是最不可或缺的維度之一,而year_month數(shù)據(jù)類型就像一把精準 ...
2025-07-09CDA 備考干貨:Python 在數(shù)據(jù)分析中的核心應(yīng)用與實戰(zhàn)技巧? ? 在 CDA 數(shù)據(jù)分析師認證考試中,Python 作為數(shù)據(jù)處理與分析的核心 ...
2025-07-08SPSS 中的 Mann-Kendall 檢驗:數(shù)據(jù)趨勢與突變分析的有力工具? ? ? 在數(shù)據(jù)分析的廣袤領(lǐng)域中,準確捕捉數(shù)據(jù)的趨勢變化以及識別 ...
2025-07-08備戰(zhàn) CDA 數(shù)據(jù)分析師考試:需要多久?如何規(guī)劃? CDA(Certified Data Analyst)數(shù)據(jù)分析師認證作為國內(nèi)權(quán)威的數(shù)據(jù)分析能力認證 ...
2025-07-08LSTM 輸出不確定的成因、影響與應(yīng)對策略? 長短期記憶網(wǎng)絡(luò)(LSTM)作為循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)的一種變體,憑借獨特的門控機制,在 ...
2025-07-07統(tǒng)計學(xué)方法在市場調(diào)研數(shù)據(jù)中的深度應(yīng)用? 市場調(diào)研是企業(yè)洞察市場動態(tài)、了解消費者需求的重要途徑,而統(tǒng)計學(xué)方法則是市場調(diào)研數(shù) ...
2025-07-07CDA數(shù)據(jù)分析師證書考試全攻略? 在數(shù)字化浪潮席卷全球的當(dāng)下,數(shù)據(jù)已成為企業(yè)決策、行業(yè)發(fā)展的核心驅(qū)動力,數(shù)據(jù)分析師也因此成為 ...
2025-07-07剖析 CDA 數(shù)據(jù)分析師考試題型:解鎖高效備考與答題策略? CDA(Certified Data Analyst)數(shù)據(jù)分析師考試作為衡量數(shù)據(jù)專業(yè)能力的 ...
2025-07-04SQL Server 字符串截取轉(zhuǎn)日期:解鎖數(shù)據(jù)處理的關(guān)鍵技能? 在數(shù)據(jù)處理與分析工作中,數(shù)據(jù)格式的規(guī)范性是保證后續(xù)分析準確性的基礎(chǔ) ...
2025-07-04CDA 數(shù)據(jù)分析師視角:從數(shù)據(jù)迷霧中探尋商業(yè)真相? 在數(shù)字化浪潮席卷全球的今天,數(shù)據(jù)已成為企業(yè)決策的核心驅(qū)動力,CDA(Certifie ...
2025-07-04CDA 數(shù)據(jù)分析師:開啟數(shù)據(jù)職業(yè)發(fā)展新征程? ? 在數(shù)據(jù)成為核心生產(chǎn)要素的今天,數(shù)據(jù)分析師的職業(yè)價值愈發(fā)凸顯。CDA(Certified D ...
2025-07-03