99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁(yè)精彩閱讀如何評(píng)估機(jī)器學(xué)習(xí)模型的商業(yè)價(jià)值
如何評(píng)估機(jī)器學(xué)習(xí)模型的商業(yè)價(jià)值
2021-09-22
收藏
如何評(píng)估<a href='/map/jiqixuexi/' style='color:#000;font-size:inherit;'>機(jī)器學(xué)習(xí)</a>模型的商業(yè)價(jià)值

作者:amitvkulkarni

CDA數(shù)據(jù)分析師編譯

概述

對(duì)于任何評(píng)估來(lái)說(shuō),最難的是保持簡(jiǎn)單易操作,在數(shù)據(jù)科學(xué)中也是如此。在任何數(shù)據(jù)科學(xué)項(xiàng)目中,細(xì)化數(shù)據(jù)、微調(diào)模型、部署它們的迭代過(guò)程都是一個(gè)持續(xù)的過(guò)程。隨著工具、算法的進(jìn)步,以及隨著 MLOps 的出現(xiàn),事情變得容易了很多,而且未來(lái)也會(huì)繼續(xù)發(fā)展——技術(shù)會(huì)優(yōu)化自己。

業(yè)務(wù)方面呢?說(shuō)服客戶相信使用先進(jìn)工具和技術(shù)構(gòu)建的復(fù)雜模型的預(yù)測(cè)能力有多容易?客戶是否愿意為項(xiàng)目提供資金并信任我們模型的建議?好吧,不妨試著解釋模型的 ROC 曲線,試著用特異性和敏感性指標(biāo)來(lái)說(shuō)服客戶——你會(huì)看到的只是眼球在滾動(dòng)。

但是,如果我們能夠在沒(méi)有復(fù)雜指標(biāo)和技術(shù)術(shù)語(yǔ)的情況下回答業(yè)務(wù)問(wèn)題呢?那么,我們就可能有機(jī)會(huì)從業(yè)務(wù)部門那里獲得支持。在本文中,我們將看到一個(gè)用例,在該用例中,我們?nèi)詫?gòu)建我們的模型,但以不同的方式對(duì)其進(jìn)行解釋——業(yè)務(wù)方式。

使用 ML 模型提取商業(yè)價(jià)值的方法

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

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

  1. 數(shù)據(jù)探索
  2. 數(shù)據(jù)處理
  3. 建立模型
  4. 生成十分位數(shù)和報(bào)告
  5. 模型對(duì)比
  6. 業(yè)務(wù)場(chǎng)景
  7. 結(jié)論

入門

我們將使用來(lái)自 UCI 機(jī)器學(xué)習(xí)存儲(chǔ)庫(kù)的公開(kāi)可用的銀行數(shù)據(jù) 集, zip 文件中有四個(gè)數(shù)據(jù)集,但我們感興趣的是*bank-additional-full.csv。*所有的屬性信息都可以在上面的 URL 中找到。數(shù)據(jù)來(lái)自直接營(yíng)銷電話聯(lián)系客戶,以評(píng)估客戶是否有興趣訂閱銀行定期存款。如果訂閱,則為 Yes,否則為 No。本文討論的是如何評(píng)估 ML 模型的商業(yè)價(jià)值。

數(shù)據(jù)加載和處理:

讓我們加載數(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=';')

我們可以進(jìn)行完整的EDA/特征工程/選擇重要變量然后構(gòu)建模型,但為了簡(jiǎn)單起見(jiàn),我們將選擇很少的變量進(jìn)行模型構(gòu)建。

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

此外,還需要更進(jìn)一步地探索數(shù)據(jù),將目標(biāo)變量轉(zhuǎn)換為分類變量并對(duì)其進(jì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è)價(jià)值

邏輯回歸

Step1:定義自變量和目標(biāo)變量

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

Step2:將數(shù)據(jù)集拆分為訓(xùn)練集和測(cè)試集,其中測(cè)試大小為整個(gè)數(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)建立了模型,并在測(cè)試數(shù)據(jù)上對(duì)其進(jìn)行了評(píng)分(預(yù)測(cè)),這為我們提供了每個(gè)觀察結(jié)果的預(yù)測(cè)概率。

生成十分位數(shù)

簡(jiǎn)單地說(shuō),十分位數(shù)把數(shù)據(jù)進(jìn)行分箱。所以,我們將所有預(yù)測(cè)的概率分成十組,并對(duì)它們進(jìn)行排名,這意味著最高的預(yù)測(cè)概率將在十分之一,最低的設(shè)置將在十分之一。我們將使用pandas的 cut() 函數(shù)拆分?jǐn)?shù)據(jù)。

下面的代碼行創(chuàng)建一個(gè)名為Decile_rank_glm的新列, 它保存每個(gè)預(yù)測(cè)記錄的排名。

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é)果的可視化。

模型評(píng)估以提取商業(yè)價(jià)值

我們構(gòu)建的任何模型都必須與基線模型進(jìn)行比較,以評(píng)估模型的性能。讓我們?cè)谙旅孢M(jìn)一步探討這一點(diǎn)。

  • 隨機(jī)模型:基線模型將是一個(gè)隨機(jī)模型,這意味著它與拋硬幣一樣好,這意味著有 50% 的概率客戶的電話是正確的或者客戶購(gòu)買我們的產(chǎn)品。我們的邏輯回歸模型的性能顯然應(yīng)該比這更好。
  • 向?qū)P?/span>:這是另一個(gè)極端模型,它的預(yù)測(cè)是完美的,這意味著它幾乎以 100% 的準(zhǔn)確度進(jìn)行預(yù)測(cè)。此模型不應(yīng)用于生產(chǎn)或任何業(yè)務(wù)決策,因?yàn)楹芸赡軙?huì)過(guò)度擬合。
  • 邏輯回歸:我們的模型應(yīng)該介于這兩個(gè)極端模型之間,這使我們有足夠的信心做出業(yè)務(wù)決策。

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

kds.metrics.plot_cumulative_gain(y_test.to_numpy(), prob_glm[:,1])
如何評(píng)估<a href='/map/jiqixuexi/' style='color:#000;font-size:inherit;'>機(jī)器學(xué)習(xí)</a>模型的商業(yè)價(jià)值

累積增益圖 | 商業(yè)價(jià)值機(jī)器學(xué)習(xí)模型

到目前為止看起來(lái)不錯(cuò),圖在預(yù)期線上,邏輯回歸模型介于我們討論的兩個(gè)極端模型之間。

累積增益圖的見(jiàn)解:

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

到目前為止,我們已經(jīng)討論了模型、十分位數(shù)及其性能比較。讓我們?cè)谑治粩?shù)級(jí)別上進(jìn)一步探討這一點(diǎn),以更清楚地了解發(fā)生了什么以及我們?nèi)绾胃玫亟忉屵@個(gè)過(guò)程。我們將在視覺(jué)效果的幫助下進(jìn)行分析,這使它變得更加容易。kds 包有一個(gè)非常好的功能,可以在一行代碼中生成所有指標(biāo)報(bào)告。

kds.metrics.report(y_test, prob_glm[:,1])
如何評(píng)估<a href='/map/jiqixuexi/' style='color:#000;font-size:inherit;'>機(jī)器學(xué)習(xí)</a>模型的商業(yè)價(jià)值

metrics report | Business value ML model

讓我們了解這些情節(jié)中的每一個(gè)。需要注意的是,所有圖的 x 軸都是十分位數(shù)。

  1. 提升圖(Lift Plot):這個(gè)圖向我們展示了邏輯回歸模型與隨機(jī)模型相比到底有多好。例如:十分位數(shù) 2 給了我們幾乎 4 倍的提升,這意味著我們可以比隨機(jī)模型方法做得好 4 倍。當(dāng)我們進(jìn)入更高的十分位數(shù)時(shí),升力下降并最終滿足隨機(jī)模型線,這是因?yàn)樗懈叩母怕史謹(jǐn)?shù)值都在我們已經(jīng)在累積增益圖中看到的最高十分位數(shù)(1 到 3)中。因此,底部十分位數(shù)的概率較低且?guī)缀跖c隨機(jī)模型相同。
  2. 十分位數(shù)提升圖(Decile-wise Lift Plot):該圖向我們展示了每個(gè)十分位數(shù)中目標(biāo)類觀察的百分比,我們觀察到十分位數(shù) 1 具有最大值,隨著x軸數(shù)值的延伸,十分位數(shù)百分比下降,在某個(gè)點(diǎn)之后它甚至低于隨機(jī)模型線。這是因?yàn)殡S機(jī)模型具有隨機(jī)設(shè)置的均勻分布的觀測(cè)值,而我們的模型在較高的十分位數(shù)中預(yù)測(cè)的觀測(cè)值較少。
  3. 累積增益圖(Cumulative Gain Plot):在以前的部分中討論過(guò)這個(gè)問(wèn)題,還研究了對(duì)圖的解釋。
  4. KS 統(tǒng)計(jì)圖(KS Statistic Plot):KS 圖評(píng)估不同的分布,即事件和非事件,KS 值是分布之間差異最大的點(diǎn)。簡(jiǎn)而言之,它有助于我們理解 ML 模型區(qū)分兩個(gè)事件的能力。KS 分?jǐn)?shù)大于 40,如果它恰好在前 3 個(gè)十分位數(shù)中,那么它被認(rèn)為是好的。在我們的例子中,我們從圖中得到了 68.932 和十分位數(shù) 3 的分?jǐn)?shù)。

讓我們用隨機(jī)森林再構(gòu)建一個(gè)模型,看看結(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])
如何評(píng)估<a href='/map/jiqixuexi/' style='color:#000;font-size:inherit;'>機(jī)器學(xué)習(xí)</a>模型的商業(yè)價(jià)值

img

觀察:

  • 隨機(jī)森林模型略好于邏輯回歸模型。
  • 十分位數(shù) 2 的提升略高,KS 統(tǒng)計(jì)數(shù)據(jù)為 72.18,而logistic統(tǒng)計(jì)數(shù)據(jù)為 68.93

業(yè)務(wù)場(chǎng)景

建議控制:在某些情況下,客戶有業(yè)務(wù)需求,即應(yīng)始終生成最少 X 條建議。在這種情況下,我們可以通過(guò)考慮前 3 個(gè)十分位數(shù)而不是 2 個(gè)十分位數(shù)來(lái)獲得更大的建議,并且還可以對(duì)其他記錄進(jìn)行精細(xì)控制。

衡量市場(chǎng)反應(yīng):推薦后分析和市場(chǎng)反應(yīng)很容易衡量。例如,從前一點(diǎn),我們可以單獨(dú)跟蹤來(lái)自十分位數(shù) 3 的所有額外推薦的表現(xiàn)。來(lái)自十分位數(shù) 3 的額外推送是否產(chǎn)生了任何影響(正面或負(fù)面)?

優(yōu)化營(yíng)銷支出:通過(guò)關(guān)注前 20-30% 的人群,企業(yè)可以節(jié)省時(shí)間、資源和金錢。以避免這些時(shí)間、資源和金錢會(huì)花費(fèi)在無(wú)響應(yīng)者或定位錯(cuò)誤客戶上。

結(jié)語(yǔ)

技術(shù)有其一席之地,企業(yè)也有發(fā)言權(quán)。歸根結(jié)底,這一切都與技術(shù)帶來(lái)的商業(yè)價(jià)值有關(guān)。當(dāng)這些收益用商業(yè)術(shù)語(yǔ)來(lái)解釋時(shí),它總是會(huì)更有效。它不僅有助于從業(yè)務(wù)中獲得信心,而且還開(kāi)辟了新的探索機(jī)會(huì)。

請(qǐng)注意,我們構(gòu)建了兩個(gè)分類模型,但沒(méi)有研究我們通常為此類模型所做的 ROC 曲線、混淆矩陣、精度、召回率和其他標(biāo)準(zhǔn)指標(biāo)。強(qiáng)烈建議跟蹤和測(cè)量這些指標(biāo)以評(píng)估模型的性能,然后遵循此文中的十分位數(shù)方法。根據(jù)目標(biāo)受眾和目標(biāo),使用最適合目標(biāo)的方法。

數(shù)據(jù)分析咨詢請(qǐng)掃描二維碼

若不方便掃碼,搜微信號(hào):CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個(gè)參數(shù)驗(yàn)證碼對(duì)象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個(gè)配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺(tái)檢測(cè)極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時(shí)表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說(shuō)明請(qǐng)參見(jiàn):http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計(jì)時(shí)完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請(qǐng)輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請(qǐng)輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }