在過(guò)去多年里機(jī)器學(xué)習(xí)(ML)走過(guò)了很長(zhǎng)的路。它從純學(xué)術(shù)領(lǐng)域的一個(gè)實(shí)驗(yàn)性研究課題,發(fā)展成為真實(shí)世界里的問(wèn)題的一個(gè)自動(dòng)化解決方案,從而在很多行業(yè)里被廣泛應(yīng)用。但是很多時(shí)候,這些算法還是被看成是“煉金術(shù)”,因?yàn)閷?duì)于這些模型的內(nèi)部運(yùn)作機(jī)制的理解還很欠缺(可以查看Ali Rahimi在2017年NIPS上的論文)。通常為了能確定算法進(jìn)行的預(yù)測(cè)決定是可靠的,需要能驗(yàn)證這些機(jī)器學(xué)習(xí)系統(tǒng)的推理過(guò)程。研究人員和從業(yè)人員正在糾結(jié)于預(yù)測(cè)模型可能帶來(lái)的人類(lèi)無(wú)法預(yù)期的結(jié)果的倫理道德問(wèn)題,例如那些用來(lái)評(píng)估是否能獲得住房貸款的算法,或是無(wú)人駕駛汽車(chē)的算法(可以查看Kate Crawford在2017年NIPS會(huì)議上的論文《The Trouble with Bias》)。數(shù)據(jù)科學(xué)家Cathy O’Neil最近寫(xiě)了一整本書(shū),其中充滿了可解釋性差的例子作為警告,希望引起那些對(duì)不恰當(dāng)模型可能會(huì)帶來(lái)的潛在的社會(huì)沖突的重視。這些模型的例子有在刑事判決中模型的偏見(jiàn)或在構(gòu)建財(cái)務(wù)模型時(shí)使用帶有人為偏見(jiàn)的虛擬特征。

圖1 傳統(tǒng)的解釋預(yù)測(cè)模型的方法還不夠好。圖片由Pramit Choudhary提供
平衡模型的可解釋性和模型的性能需要進(jìn)行一定的取舍。從業(yè)人員通常會(huì)用線性模型而不是更復(fù)雜的模型,通過(guò)降低性能來(lái)提升可解釋性。這在不少對(duì)于錯(cuò)誤的預(yù)測(cè)代價(jià)沒(méi)那么高的業(yè)務(wù)場(chǎng)景里可能沒(méi)什么。但是,在某些場(chǎng)景里(比如信用得分或司法系統(tǒng)里)模型必須既很準(zhǔn)確還可理解。事實(shí)上,能解釋預(yù)測(cè)模型的公平性和透明性的能力已經(jīng)在法律規(guī)范上被強(qiáng)制了。
在我作為首席數(shù)據(jù)科學(xué)家的DataScience.com,我們有著強(qiáng)烈的意愿去賦能從業(yè)人員使用模型來(lái)確保安全、無(wú)歧視和透明。我們看到了大家(對(duì)模型)可解釋性的需求,并在最近開(kāi)源了一個(gè)Python框架,叫Skater。把它作為給數(shù)據(jù)科學(xué)領(lǐng)域的研究人員和從業(yè)人員賦能模型可解釋性的第一步。
模型的評(píng)估是一個(gè)復(fù)雜的問(wèn)題,因此我會(huì)分兩篇來(lái)討論它。在第一篇里,我會(huì)從把模型可解釋性作為一個(gè)理論概念來(lái)深入探討,并對(duì)Skater做了一個(gè)高層的概述。在第二篇里,我會(huì)給出一個(gè)關(guān)于Skater目前支持的模型的更詳細(xì)的解釋?zhuān)约癝kater的發(fā)展路線圖。
什么是模型可解釋性?
模型可解釋性這個(gè)概念在機(jī)器學(xué)習(xí)領(lǐng)域還是一個(gè)很新的概念,非常主觀,而且不少時(shí)候也是有爭(zhēng)議的(可以看這里Yann LeCun針對(duì)Ali Rahimi的觀點(diǎn)的回應(yīng))。模型可解釋性是指能解釋和驗(yàn)證預(yù)測(cè)性模型所做出的決策的能力,從而保證算法的決策過(guò)程是公平、負(fù)責(zé)任和透明的。Adrian Weller的《Challenges of Transparency》一文里有對(duì)于機(jī)器學(xué)習(xí)里的透明性的定義更詳細(xì)的解釋。更正式的說(shuō)法是,模型可解釋性可以被定義為能更好地理解機(jī)器學(xué)習(xí)的響應(yīng)函數(shù)如何解釋自變量(輸入)和因變量(目標(biāo))之間的關(guān)系的能力(最好是以人類(lèi)可理解的方式)。
理想情況下,你應(yīng)該能查看模型,從而理解算法決策了什么?為什么?以及如何做出的決策。
- 模型能提供什么信息來(lái)避免預(yù)測(cè)錯(cuò)誤?你應(yīng)該能查看并理解隱性變量間的關(guān)系,從而能及時(shí)評(píng)估和理解什么特征是預(yù)測(cè)的主要因素。這將能確保模型的公平性。
- 為什么模型用特定的方式運(yùn)作?你應(yīng)該能夠識(shí)別和驗(yàn)證產(chǎn)生模型輸出的相關(guān)變量。這樣做能讓你信任預(yù)測(cè)系統(tǒng)的可靠性,即便是在無(wú)法預(yù)見(jiàn)的場(chǎng)景里。這種分析能確保模型的可靠性和安全性。
- 我們?nèi)绾文苄湃文P妥龀龅念A(yù)測(cè)?你應(yīng)該能向利益相關(guān)方和同行證明,給出任意輸入的數(shù)據(jù),模型都能按預(yù)期的方式運(yùn)作。這就能保證模型的透明性。
現(xiàn)有能獲取模型可解釋性的技術(shù)
模型可解釋性是指能對(duì)數(shù)學(xué)模型有更好的理解,大部分情況下是通過(guò)更好地理解對(duì)模型做出主要貢獻(xiàn)的特征來(lái)獲得的。這種形式的解釋是有可能通過(guò)使用流行的數(shù)據(jù)探索和可視化方法(例如,層次化聚類(lèi)和維度降低技術(shù))來(lái)獲得。而更進(jìn)一步的模型評(píng)估和驗(yàn)證則可以使用模型比較算法,利用分類(lèi)和回歸模型特定的指標(biāo)進(jìn)行。這些指標(biāo)包括AUC-ROC(ROC曲線下面積)和MAE(平均絕對(duì)誤差)。下面讓我們快速查看幾種技術(shù)。
探索性數(shù)據(jù)分析和可視化
探索性數(shù)據(jù)分析能對(duì)數(shù)據(jù)產(chǎn)生更好的理解,相應(yīng)地也能為構(gòu)建更好的預(yù)測(cè)性模型提供專(zhuān)業(yè)意見(jiàn)。在模型構(gòu)建的過(guò)程中,獲得模型可解釋性可能意味著探索數(shù)據(jù)集,從而能可視化和理解“有意義的”數(shù)據(jù)內(nèi)部結(jié)構(gòu),并以人能理解的方式提取出信號(hào)強(qiáng)度高的特征。這對(duì)于無(wú)監(jiān)督學(xué)習(xí)問(wèn)題可能更有益處。下面讓我們看看幾個(gè)常用的可以用于模型可解釋性的數(shù)據(jù)探索技術(shù)。
- 聚類(lèi):層次化聚類(lèi)
- 降維技術(shù):主成分分析(見(jiàn)圖2)
- 變分自編碼(VAE):使用變分自編碼技術(shù)的一種自動(dòng)生成型方法
- 流形學(xué)習(xí)(Manifold Learning):t-分布鄰域嵌入算法(t-SNE,見(jiàn)圖3)
在本文里,我們會(huì)關(guān)注監(jiān)督學(xué)習(xí)問(wèn)題相關(guān)的模型解釋。

圖2 使用TensorFlow和PCA對(duì)高維MNIST數(shù)據(jù)進(jìn)行3D可視化的解釋?zhuān)瑥亩鴺?gòu)建領(lǐng)域知識(shí)。圖片由Pramit Choudhary和Datascience.com團(tuán)隊(duì)友情提供

圖3 使用sklearn里的t-SNE功能可視化MNIST數(shù)據(jù)。圖片由Pramit Choudhary和Datascience.com團(tuán)隊(duì)友情提供
B.模型的比較和性能評(píng)估
除了數(shù)據(jù)探索技術(shù),一個(gè)極度簡(jiǎn)單的模型可解釋性的形式可能是使用模型評(píng)估技術(shù)。分析師和數(shù)據(jù)科學(xué)家可以使用模型比較和評(píng)估方法來(lái)評(píng)估模型的準(zhǔn)確度。例如,使用分類(lèi)和回歸的交叉驗(yàn)證方法和評(píng)估指標(biāo),你可以測(cè)量一個(gè)預(yù)測(cè)模型的性能。你可以優(yōu)化模型的超參數(shù)來(lái)平衡偏差和方差(看這篇《Understanding the Bias-Variance Tradeoff》)。
- 分類(lèi):例如F1-得分,AUC-ROC,brier分?jǐn)?shù)等。圖3顯示了AUC-ROC是如何在一個(gè)多分類(lèi)的問(wèn)題里幫助測(cè)量模型對(duì)于流行的鳶尾花數(shù)據(jù)集的表現(xiàn)。ROC的AUC是一個(gè)廣為流行的指標(biāo),它能幫助平衡真正率和假正率。它對(duì)處理類(lèi)別不平衡問(wèn)題也很魯棒。如圖3所示,ROC AUC(類(lèi)別2)值為86%說(shuō)明訓(xùn)練的分類(lèi)器給予一個(gè)正樣本(屬于類(lèi)別2)比負(fù)樣本(不屬于類(lèi)別2)可能性要高的概率是86%。這種聚合后的表現(xiàn)指標(biāo)可能對(duì)仔細(xì)說(shuō)明一個(gè)模型的整體表現(xiàn)更有幫助。然而,它還是無(wú)法在出現(xiàn)誤分類(lèi)錯(cuò)誤時(shí)給出更詳細(xì)的信息。例如,為什么一個(gè)本屬于類(lèi)別0的樣本被分配到類(lèi)別2,而一個(gè)屬于類(lèi)別2的樣本被劃分到類(lèi)別1?要記住的是,每一個(gè)誤分類(lèi)的例子可能都有著不一樣的潛在的業(yè)務(wù)影響。
- 回歸:例如,r-平方分?jǐn)?shù)(決定系數(shù)),均方誤差等。

圖4 通過(guò)ROC曲線下面積來(lái)測(cè)量模型在鳶尾花數(shù)據(jù)集(用sklearn處理一個(gè)多分類(lèi)問(wèn)題)的表現(xiàn)。圖片由Pramit Choudhary和Datascience.com團(tuán)隊(duì)友情提供
為什么想要更好的模型可解釋性?
如果這個(gè)預(yù)測(cè)模型的目標(biāo)函數(shù)(即損失函數(shù)試圖去優(yōu)化的)與業(yè)務(wù)指標(biāo)(和你現(xiàn)實(shí)世界目標(biāo)緊密關(guān)聯(lián)的)相一致,而且用于訓(xùn)練的數(shù)據(jù)集是比較穩(wěn)定的,上述的數(shù)據(jù)探索方法和使用評(píng)估技術(shù)計(jì)算的評(píng)估分?jǐn)?shù)可能對(duì)于評(píng)測(cè)模型在一個(gè)樣本數(shù)據(jù)集上的整體表現(xiàn)是足夠的。然而,在現(xiàn)實(shí)世界的場(chǎng)景里這種情況是非常少見(jiàn)的,因此使用分?jǐn)?shù)估計(jì)來(lái)獲得模型的表現(xiàn)是不夠的。例如,網(wǎng)絡(luò)安全領(lǐng)域的一個(gè)入侵檢測(cè)系統(tǒng)(IDS)容易發(fā)生規(guī)避攻擊,攻擊者可能會(huì)使用對(duì)抗性輸入來(lái)?yè)魯“踩到y(tǒng)。注:對(duì)抗性輸入是一種攻擊者有意地欺騙機(jī)器學(xué)習(xí)算法來(lái)讓它們做出錯(cuò)誤的預(yù)測(cè)的例子。在這個(gè)場(chǎng)景里,模型的目標(biāo)函數(shù)就不是真實(shí)世界目標(biāo)的一個(gè)好的表示。這就可能需要一個(gè)更好的模型解釋來(lái)發(fā)現(xiàn)算法里的盲點(diǎn),以便通過(guò)混合訓(xùn)練數(shù)據(jù)來(lái)規(guī)避對(duì)抗攻擊,從而構(gòu)建一個(gè)安全和保險(xiǎn)的模型。想了解更多,可以看看Moosavi-Dezfooli等2016的論文《DeepFool》以及Goodfellow等2015年的論文《Explaining and harnessing adversarial examples》。
另外,模型在一個(gè)靜態(tài)數(shù)據(jù)集(不考慮新數(shù)據(jù)帶來(lái)的變化)上訓(xùn)練的表現(xiàn)會(huì)隨著時(shí)間逐漸平穩(wěn)下來(lái)。例如,在模型被部署應(yīng)用后或者新的信息被加入訓(xùn)練數(shù)據(jù)后,現(xiàn)有的特征空間可能會(huì)發(fā)生改變,帶來(lái)新的未知的關(guān)聯(lián),同時(shí)也意味著簡(jiǎn)單地再次對(duì)模型進(jìn)行訓(xùn)練對(duì)于提高模型預(yù)測(cè)能力是不夠的。更好的可解釋性就很有必要,從而能有效地調(diào)整模型來(lái)理解算法的行為,或是依據(jù)數(shù)據(jù)里的新關(guān)聯(lián)和交互而調(diào)整算法。
還可能有另外一種場(chǎng)景,其中模型的預(yù)測(cè)是對(duì)的,也是按照期望的方式進(jìn)行的預(yù)測(cè)。但是由于數(shù)據(jù)的偏差性,它在道義上無(wú)法證明其在社會(huì)場(chǎng)景的決策是正確的。例如,僅僅因?yàn)槲蚁矚g黑澤明并不意味著我想看《3 Ninjas》。此時(shí),可能需要對(duì)算法的內(nèi)部工作機(jī)制進(jìn)行更嚴(yán)格和透明的審查,才能構(gòu)建更有效的模型。
即使有人不同意上述所有作為激勵(lì)提升可解釋性的原因,傳統(tǒng)的模型評(píng)估形式也需要一個(gè)關(guān)于統(tǒng)計(jì)檢驗(yàn)的算法或?qū)傩缘暮侠淼睦碚摾斫?。非?zhuān)家可能很難掌握有關(guān)算法的這些詳細(xì)信息,這通常會(huì)導(dǎo)致數(shù)據(jù)驅(qū)動(dòng)的計(jì)劃失敗。對(duì)于模型決策策略的人類(lèi)可以理解的解釋?zhuān)℉II,Human Interpretable Interpretation)可以作為在同行(分析師、管理人員、數(shù)據(jù)科學(xué)家和數(shù)據(jù)工程師)之間共享的富有洞察力的信息。
使用基于輸入和輸出這種形式的解釋可能有助于促進(jìn)更好的溝通和協(xié)作,使企業(yè)能夠做出更自信的決策(例如,金融機(jī)構(gòu)的風(fēng)險(xiǎn)評(píng)估/審計(jì)的分析)。重申一下,我們將模型可解釋性定義為能解釋一個(gè)預(yù)測(cè)模型的公平性(無(wú)偏差/無(wú)歧視)、可靠性(可靠的結(jié)果)和透明性(能夠查看和驗(yàn)證預(yù)測(cè)的結(jié)果),而且目前這里的模型是針對(duì)于監(jiān)督學(xué)習(xí)的問(wèn)題。
性能和可解釋性的平衡
在模型的性能和算法可解釋性之間可能存在基本的權(quán)衡。機(jī)器學(xué)習(xí)從業(yè)人員經(jīng)常傾向于更容易解釋的模型——簡(jiǎn)單的線性模型、邏輯概率回歸或決策樹(shù)等,因?yàn)檫@些模型更容易被驗(yàn)證和解釋。如果人們能理解模型內(nèi)在工作機(jī)制或模型的決策策略,他們就能信任它。但是,當(dāng)試圖去把這些預(yù)測(cè)模型部署到真實(shí)世界來(lái)解決問(wèn)題時(shí),它們要處理高維異類(lèi)的復(fù)雜數(shù)據(jù)集,實(shí)現(xiàn)自動(dòng)化的信用卡申請(qǐng)、欺詐檢測(cè)或預(yù)測(cè)一個(gè)客戶的生命周期價(jià)值,這時(shí)可解釋的模型的表現(xiàn)通常會(huì)不好。當(dāng)從業(yè)人員試圖去用更復(fù)雜的算法來(lái)改進(jìn)模型的表現(xiàn)(例如準(zhǔn)確度)時(shí),他們又要努力去權(quán)衡模型的性能和可解釋性。

圖5 模型的性能和可解釋性的對(duì)立。圖片由Pramit Choudhary和Datascience.com團(tuán)隊(duì)友情提供
讓我們用一個(gè)例子再看看平衡性能和可解釋性的問(wèn)題。如圖5所示,假定要構(gòu)建一個(gè)模型,針對(duì)一群用戶來(lái)預(yù)測(cè)是否要批準(zhǔn)貸款。類(lèi)似于使用對(duì)數(shù)損失函數(shù)或最小二乘函數(shù)的邏輯概率回歸這樣的線性模型更容易被解釋?zhuān)驗(yàn)檩斎胱兞亢湍P偷妮敵龅穆?lián)系可以使用模型的系數(shù)權(quán)重在幅度和方向上被量化。如果決策邊界是單調(diào)增加或減少的,這種思路就可以正常工作。但是,實(shí)際數(shù)據(jù)很少會(huì)出現(xiàn)這種情況。因此,在模型的性能和可解釋性之間取得平衡就存在窘境。
為了能獲得自變量和模型的響應(yīng)函數(shù)之間的非單調(diào)的關(guān)系,通常就不得不使用更復(fù)雜的模型:集成模型、帶有大量決策樹(shù)的隨機(jī)森林或是帶有多層隱藏層的神經(jīng)網(wǎng)絡(luò)。而且伴隨著文本數(shù)據(jù)(參見(jiàn)《Explaining Predictions of Non-Linear Classifiers in NLP?using?layer-wise relevance propagation (LRP)》)、計(jì)算機(jī)視覺(jué)(Ning等在NIPS 2017的論文《Relating Input Concepts to Convolutional Neural Network Decisions》)和基于語(yǔ)音等需要人類(lèi)解釋的模型的引入,問(wèn)題的復(fù)雜度進(jìn)一步增加。例如,理解與語(yǔ)言相關(guān)的模型依然是一個(gè)難題,因?yàn)轭?lèi)似的詞語(yǔ)所帶來(lái)的模糊性和不確定性。引入可解釋性來(lái)理解語(yǔ)言模型中的這種模糊性對(duì)于構(gòu)建業(yè)務(wù)場(chǎng)景特定的規(guī)則來(lái)理解、驗(yàn)證和改進(jìn)模型的決策是非常有用。
Skater簡(jiǎn)介
在Datascience.com,我們自己也在多個(gè)分析場(chǎng)景和項(xiàng)目里經(jīng)歷過(guò)可解釋性的挑戰(zhàn),深刻理解對(duì)于更好的模型可解釋性的需求。這里的模型可解釋性更多的是指關(guān)于輸入變量和模型輸出的人類(lèi)可解釋的解釋?zhuān)℉II),這個(gè)解釋要對(duì)非專(zhuān)家都容易理解。我特別記得一個(gè)項(xiàng)目。當(dāng)時(shí)我們要構(gòu)建一個(gè)機(jī)器學(xué)習(xí)的模型來(lái)總結(jié)消費(fèi)者的評(píng)價(jià)。我們希望獲取消費(fèi)者的情感(正面還是負(fù)面的),以及每個(gè)情感的具體原因。由于時(shí)間比較緊,我們認(rèn)為使用一個(gè)開(kāi)箱即用的情感分析模型可能是有價(jià)值的。我們看了很多市面上的選擇,但是因?yàn)樾湃蔚膯?wèn)題沒(méi)法決定要用哪個(gè)。我們覺(jué)得需要有更好的方法來(lái)解釋、證明和驗(yàn)證這些模型。
在搜索過(guò)程中,我們沒(méi)法找到一個(gè)成熟的開(kāi)源庫(kù)能一致地帶來(lái)全局(對(duì)于一個(gè)全部的數(shù)據(jù)集)和局部(對(duì)于單個(gè)預(yù)測(cè))的解釋。因此我們從零開(kāi)始開(kāi)發(fā)了一個(gè)庫(kù),叫Skater(見(jiàn)圖6)。
Skater是一個(gè)Python的庫(kù)。專(zhuān)門(mén)被設(shè)計(jì)用來(lái)解密任何預(yù)測(cè)模型的內(nèi)部工作機(jī)制。而且它是編程語(yǔ)言和框架無(wú)關(guān)的。目前,它提供算法來(lái)實(shí)現(xiàn)監(jiān)督學(xué)習(xí)問(wèn)題的可解釋性。

圖6 總結(jié)全局和局部解釋。圖片由Pramit Choudhary和Datascience.com團(tuán)隊(duì)友情提供
目前支持的算法解釋性在本質(zhì)上是后驗(yàn)的?;谧宰兞浚ㄝ斎耄┖鸵蜃兞浚繕?biāo)),Skater通過(guò)提供后驗(yàn)的機(jī)制來(lái)評(píng)估和證明預(yù)測(cè)模型的內(nèi)在工作機(jī)制,因此它不支持構(gòu)建可解釋的模型(例如,規(guī)則集成、Friedman的論文和貝葉斯規(guī)則等)。
這一方法可以幫助我們依據(jù)分析業(yè)務(wù)場(chǎng)景來(lái)對(duì)機(jī)器學(xué)習(xí)模型產(chǎn)生可解釋性,因?yàn)楹篁?yàn)動(dòng)作可能是很昂貴的,而且全面的可解釋性也不是所有時(shí)候都需要的。Skater庫(kù)結(jié)合了面向?qū)ο蠛秃瘮?shù)式編程的范式,這對(duì)于提供可擴(kuò)展性和高并發(fā)是必要的,同時(shí)還考慮到了代碼的簡(jiǎn)潔性。這種可以解釋的系統(tǒng)的一個(gè)總體的概覽如圖7所示。

圖7 使用Skater構(gòu)建的一個(gè)可解釋的機(jī)器學(xué)習(xí)系統(tǒng)。它能讓人來(lái)優(yōu)化常見(jiàn)的錯(cuò)誤,從而帶來(lái)更好和更有信心的預(yù)測(cè)。圖片由Pramit Choudhary和Datascience.com團(tuán)隊(duì)友情提供
使用Skater實(shí)現(xiàn)模型可解釋性
注:下面內(nèi)嵌的樣例代碼的完整版在圖名附帶的超鏈接里。
使用Skater,我們可以:
- 對(duì)一個(gè)模型在完整數(shù)據(jù)集或單個(gè)樣例所做預(yù)測(cè)的行為進(jìn)行評(píng)估:通過(guò)利用和改進(jìn)現(xiàn)有技術(shù)的組合,Skate可以獲得全局以及局部的模型可解釋性。對(duì)于全局性的解釋?zhuān)琒kater目前使用模型無(wú)關(guān)的變量重要性方式以及部分依賴?yán)L圖來(lái)判斷一個(gè)模型的偏差,并理解模型的一般行為。為了驗(yàn)證模型對(duì)于單個(gè)預(yù)測(cè)的判定策略,這個(gè)庫(kù)使用了一個(gè)全新的技術(shù),叫局部可理解的與模型無(wú)關(guān)的解釋?zhuān)?a >LIME)。這個(gè)技術(shù)使用了一個(gè)局部代理模型來(lái)評(píng)估性能(這里可以找到關(guān)于LIME的更多信息)。其他的一些算法也在開(kāi)發(fā)中。
from skater.core.explanations import Interpretation
from skater.model import InMemoryModel
…
eclf = VotingClassifier(estimators=[(‘lr’, clf1), (‘rf’, clf2), (‘gnb’, clf3)], voting=’soft’)
…
models = {‘lr’:clf1,
?? ‘rf’:clf2,
?? ? ‘gnb’:clf3,
?? ? ‘ensemble’:eclf}
interpreter = Interpretation(X_test, feature_names=data.feature_names)
Global interpretation with model agnostic feature importance
for model_key in models:
? ? pyint_model = InMemoryModel(models[model_key].predict_proba, examples=X_test)
? ? ax = ax_dict[model_key]
? ? interpreter.feature_importance.plot_feature_importance(pyint_model,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ascending=False, ax=ax)
? ? ax.set_title(model_key)

圖8 使用Skater對(duì)不同類(lèi)型的監(jiān)督學(xué)習(xí)預(yù)測(cè)模型進(jìn)行模型比較。這里,模型無(wú)關(guān)的特征重要性被用來(lái)比較有著差不多F1值的模型??梢钥闯霾煌?lèi)型的模型基于它們對(duì)預(yù)測(cè)器的假設(shè)、因變量和相關(guān)性的理解,對(duì)特征產(chǎn)生的排序是不同的。這種形式的比較讓機(jī)器學(xué)習(xí)領(lǐng)域的專(zhuān)家和非專(zhuān)家都能一致地評(píng)估所選擇的特征的相關(guān)性。圖片由Pramit Choudhary和Datascience.com團(tuán)隊(duì)友情提供
- 發(fā)現(xiàn)隱性變量間的關(guān)系,并構(gòu)建領(lǐng)域知識(shí):從業(yè)人員可以使用Skater來(lái)發(fā)現(xiàn)隱性特征間的關(guān)系。例如,發(fā)現(xiàn)一個(gè)信用風(fēng)險(xiǎn)模型是如何使用銀行客戶的信用歷史、支票賬戶狀態(tài)以及現(xiàn)有的信用額度來(lái)批準(zhǔn)或拒絕信用卡的申請(qǐng),然后再把這些信息用于未來(lái)的分析。
# Global Interpretation with model agnostic partial dependence plot
def understanding_interaction():
? ? pyint_model = InMemoryModel(eclf.predict_proba, examples=X_test,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? target_names=data.target_names)
? ? # [‘worst area’, ‘mean perimeter’] –> list(feature_selection.value)
? ? interpreter.partial_dependence.plot_partial_dependence(list(feature_selection.value),
?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Pyint_model, grid_resolution=grid_resolution.value,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? with_variance=True)
? ? # Lets understand interaction using 2-way interaction using the same covariates
? ? # feature_selection.value –> (‘worst area’, ‘mean perimeter’)
? ? axes_list =
?? ? ? ? ? interpreter.partial_dependence.plot_partial_dependence([feature_selection.value],
?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Pyint_model, grid_resolution=grid_resolution.value,
?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? with_variance=True)

圖9 在一個(gè)乳腺癌數(shù)據(jù)集上運(yùn)用單向和雙向交互來(lái)發(fā)現(xiàn)隱性特征間的關(guān)系。圖片由Pramit Choudhary和Datascience.com團(tuán)隊(duì)友情提供
# Model agnostic local interpretation using LIME
from skater.core.local_interpretation.lime.lime_tabular import LimeTabularExplainer
…
exp = LimeTabularExplainer(X_train,
?? ? ? ? ? ? ? ? ? ? ? ? ? feature_names=data.feature_names,
?? ? ? ? ? ? ? ? ? ? ? ? ? discretize_continuous=False,
?? ? ? ? ? ? ? ? ? ? ? ? ? class_names=[‘p(No Cancer)’, ‘p(Cancer)’])
exp.explain_instance(X_train[52], models[‘ensemble’].predict_proba).show_in_notebook()

圖10 通過(guò)LIME的線性代理模型來(lái)理解單個(gè)預(yù)測(cè)的特征相關(guān)性。圖片由Pramit Choudhary和Datascience.com團(tuán)隊(duì)友情提供
- 在部署模型到生產(chǎn)環(huán)境后測(cè)量一個(gè)模型的性能是如何變化:無(wú)論訓(xùn)練測(cè)試還是已經(jīng)部署到生產(chǎn)系統(tǒng)的模型,Skater都能帶來(lái)一致的解釋預(yù)測(cè)模型的能力。這就給了從業(yè)人員測(cè)量不同模型版本間特征關(guān)系是如何改變的機(jī)會(huì)(見(jiàn)圖11)。當(dāng)使用直接從機(jī)器學(xué)習(xí)市場(chǎng)(例如,algorithmia)里購(gòu)買(mǎi)的開(kāi)箱即用的模型時(shí),這種形式的解釋對(duì)于建立信心也是有用處的。例如,圖12和13里是使用Skater對(duì)作用于IMDB的《紙牌屋》的評(píng)價(jià)數(shù)據(jù)的來(lái)自indico.io和algorithmia的開(kāi)箱即用的情感分析模型進(jìn)行比較和評(píng)估。兩個(gè)模型都預(yù)測(cè)了一個(gè)正面的情感(1是正面,0是負(fù)面)。然而,indico.io的模型使用了一些本應(yīng)該被忽略的停止詞,例如”is”、 “that”和”of”。因此,盡管indico.io的模型相比來(lái)自algorithmia的模型返回了更高概率的正面情感,我們還是應(yīng)該選擇使用后者。

圖11 強(qiáng)調(diào)了無(wú)論訓(xùn)練測(cè)試階段(模型沒(méi)有被應(yīng)用)和部署之后(已經(jīng)被應(yīng)用)的模型的解釋是很有必要的。對(duì)特征的更好的解釋可能帶來(lái)更好的特征工程和特征選擇。圖片由Pramit Choudhary和Datascience.com團(tuán)隊(duì)友情提供
# Using Skater to verify third-party ML marketplace models
from skater.model import DeployedModel
from skater.core.local_interpretation.lime.lime_text import LimeTextExplainer
…
#an example document
test_documents = [“Today its extremely cold, but I like it”]
#the API address
algorithmia_uri = “https://api.algorithmia.com/v1/algo/nlp/SentimentAnalysis/1.0.3”
…
dep_model = DeployedModel(algorithmia_uri,
? ? ? ? ? ? ? ? ? ? ? ? ? algorithmia_input_formatter,
? ? ? ? ? ? ? ? ? ? ? ? ? algorithmia_output_formatter,
? ? ? ? ? ? ? ? ? ? ? ? ? request_kwargs=kwargs)
…
l = LimeTextExplainer()
print(“Explain the prediction, for the document:\n”)
print(test_documents[0])
l.explain_instance(test_documents[0]
?? ? ? ? ? ? ? ? ? , dep_model
?? ? ? ? ? ? ? ? ? , num_samples=500).show_in_notebook()

圖12 對(duì)開(kāi)箱即用的模型(預(yù)訓(xùn)練部署的模型,來(lái)自indico.io)應(yīng)用可解釋性。圖片由Pramit Choudhary和Datascience.com團(tuán)隊(duì)友情提供

圖13對(duì)開(kāi)箱即用的模型(預(yù)訓(xùn)練部署的模型,來(lái)自algorithmia)應(yīng)用可解釋性。圖片由Pramit Choudhary和Datascience.com團(tuán)隊(duì)友情提供
結(jié)論
在當(dāng)今的預(yù)測(cè)性模型生態(tài)系統(tǒng)里,能解讀和驗(yàn)證算法決策策略從而能提供透明性的方法將會(huì)扮演一個(gè)重要的角色。能夠獲得對(duì)模型可解讀的解釋可能會(huì)帶來(lái)對(duì)于更多復(fù)雜算法的使用,特別是在那些對(duì)法規(guī)有要求的行業(yè)里。隨著Skater的初步發(fā)布,我們正在向著在機(jī)器學(xué)習(xí)領(lǐng)域面向?qū)<液头菍?zhuān)家來(lái)提供預(yù)測(cè)模型的決策策略的公正性、可靠性和透明性的方向跨出了一步。如果你想了解更多的現(xiàn)實(shí)世界里運(yùn)用Skater的模型可解釋性能力的案例,可以看一看這本書(shū)《Practical Machine Learning with Python》。
在本系列的第二篇里,我們將會(huì)進(jìn)一步的探索理解Skater目前支持的模型,以及Skater未來(lái)的發(fā)展路線。

圖14 Skater的綜述。圖片由Pramit Choudhary和Datascience.com團(tuán)隊(duì)友情提供
想了解更多信息,請(qǐng)查看這些資源和工具、案例以及gitter頻道。
致謝
我要非常感謝Aaron Kramer、Brittany Swanson、Colin Schmidt、Dave Goodsmith、Dipanjan Sarkar、Jean-René Gauthie、Paco Nathan、Ruslana Dalinina以及匿名審稿人在本文完成過(guò)程中的幫助。
參考資料和進(jìn)一步的閱讀內(nèi)容:
- Zachary C. Lipton的 2016年論文《The Mythos of Model Interpretability》
- Marco Tulio Ribeiro、Sameer Singh和Carlos Guestrin的2016年論文《?Nothing Else Matters: Model-Agnostic Explanations By Identifying Prediction Invariance》
- Finale Doshi-Velez和Been Kim的 2017年論文《Towards A Rigorous Science of Interpretable Machine Learning》
- 歐盟議會(huì)和理事會(huì)2016年制定的《General data protection regulation》
- 解釋機(jī)器學(xué)習(xí)的一些想法
- 解釋和解讀深度神經(jīng)網(wǎng)絡(luò)
- John P. Cunningham等2016年論文《?Linear Dimensionality Reduction》
- Saleema Amershi 等2015年論文《?Model Tracker》
- Perter Norvig對(duì)于可解釋的AI的一些思考
- Kate Crawford等2014年的報(bào)告《?Toward a Framework to Redress Predictive Privacy Harms》
- A. Weller在ICML 2017會(huì)議上的論文《Challenges for Transparency》
- 針對(duì)偏差來(lái)檢查算法
- 《There is a blind spot in AI research》?,Kate Crawford和Ryan Calo的文章
- PCA
- 如何有效地使用t-SNE
- Sebastian Raschka的2016年論文《Model Evaluation and Selection》
Pramit Choudhary
Pramit Choudhary是位于加利福尼亞州洛杉磯的DataScience.com的首席數(shù)據(jù)科學(xué)家。他的研究重點(diǎn)是優(yōu)化和應(yīng)用機(jī)器學(xué)習(xí)和貝葉斯設(shè)計(jì)策略以解決現(xiàn)實(shí)問(wèn)題的有效方法。在DataScience.com,他正在領(lǐng)導(dǎo)各種方案,以找出方法來(lái)降低構(gòu)建有效模型的混亂、評(píng)估模型以及縮小原型與生產(chǎn)中部署模型之間差距。加入DataScience.com前,他曾在初創(chuàng)公司和大企業(yè)工作,參與使用預(yù)測(cè)分析解決問(wèn)題,從而提高石油和天然氣行業(yè)、社交媒體分析、推薦引擎、匹配和欺詐檢測(cè)等行業(yè)的生產(chǎn)力??偟膩?lái)說(shuō),他是一個(gè)渴望解決具有挑戰(zhàn)性問(wèn)題的人。

