模型可解釋性方面的研究,在近兩年的科研會(huì)議上成為關(guān)注熱點(diǎn),因?yàn)榇蠹也粌H僅滿足于模型的效果,更對(duì)模型效果的原因產(chǎn)生更多的思考,這樣的思考有助于模型和特征的優(yōu)化,更能夠幫助更好的理解模型本身和提升模型服務(wù)質(zhì)量。本文對(duì)機(jī)器學(xué)習(xí)模型可解釋性相關(guān)資料匯總survey。
來(lái)源:騰訊技術(shù)工程微信號(hào)
綜述
機(jī)器學(xué)習(xí)業(yè)務(wù)應(yīng)用以輸出決策判斷為目標(biāo)。可解釋性是指人類(lèi)能夠理解決策原因的程度。機(jī)器學(xué)習(xí)模型的可解釋性越高,人們就越容易理解為什么做出某些決定或預(yù)測(cè)。模型可解釋性指對(duì)模型內(nèi)部機(jī)制的理解以及對(duì)模型結(jié)果的理解。其重要性體現(xiàn)在:建模階段,輔助開(kāi)發(fā)人員理解模型,進(jìn)行模型的對(duì)比選擇,必要時(shí)優(yōu)化調(diào)整模型;在投入運(yùn)行階段,向業(yè)務(wù)方解釋模型的內(nèi)部機(jī)制,對(duì)模型結(jié)果進(jìn)行解釋。比如基金推薦模型,需要解釋?zhuān)簽楹螢檫@個(gè)用戶推薦某支基金。
機(jī)器學(xué)習(xí)流程步驟:收集數(shù)據(jù)、清洗數(shù)據(jù)、訓(xùn)練模型、基于驗(yàn)證或測(cè)試錯(cuò)誤或其他評(píng)價(jià)指標(biāo)選擇最好的模型。第一步,選擇比較小的錯(cuò)誤率和比較高的準(zhǔn)確率的高精度的模型。第二步,面臨準(zhǔn)確率和模型復(fù)雜度之間的權(quán)衡,但一個(gè)模型越復(fù)雜就越難以解釋。一個(gè)簡(jiǎn)單的線性回歸非常好解釋?zhuān)驗(yàn)樗豢紤]了自變量與因變量之間的線性相關(guān)關(guān)系,但是也正因?yàn)槿绱耍鼰o(wú)法處理更復(fù)雜的關(guān)系,模型在測(cè)試集上的預(yù)測(cè)精度也更有可能比較低。而深度神經(jīng)網(wǎng)絡(luò)處于另一個(gè)極端,因?yàn)樗鼈兡軌蛟诙鄠€(gè)層次進(jìn)行抽象推斷,所以他們可以處理因變量與自變量之間非常復(fù)雜的關(guān)系,并且達(dá)到非常高的精度。但是這種復(fù)雜性也使模型成為黑箱,我們無(wú)法獲知所有產(chǎn)生模型預(yù)測(cè)結(jié)果的這些特征之間的關(guān)系,所以我們只能用準(zhǔn)確率、錯(cuò)誤率這樣的評(píng)價(jià)標(biāo)準(zhǔn)來(lái)代替,來(lái)評(píng)估模型的可信性。
事實(shí)上,每個(gè)分類(lèi)問(wèn)題的機(jī)器學(xué)習(xí)流程中都應(yīng)該包括模型理解和模型解釋?zhuān)旅媸菐讉€(gè)原因:
- 模型改進(jìn):理解指標(biāo)特征、分類(lèi)、預(yù)測(cè),進(jìn)而理解為什么一個(gè)機(jī)器學(xué)習(xí)模型會(huì)做出這樣的決定、什么特征在決定中起最重要作用,能讓我們判斷模型是否符合常理。一個(gè)深度的神經(jīng)網(wǎng)絡(luò)來(lái)學(xué)習(xí)區(qū)分狼和哈士奇的圖像。模型使用大量圖像訓(xùn)練,并使用另外的一些圖像進(jìn)行測(cè)試。90%的圖像被準(zhǔn)確預(yù)測(cè),這值得我們高興。但是在沒(méi)有計(jì)算解釋函數(shù)(explainer function)時(shí),我們不知道該模型主要基于背景:狼圖像通常有一個(gè)下雪的背景,而哈士奇的圖像很少有。所以我們不知不覺(jué)地做了一個(gè)雪地探測(cè)器,如果只看準(zhǔn)確率這樣的指標(biāo),我們就不會(huì)看到這一點(diǎn)。知道了模型是如何使用特征進(jìn)行預(yù)測(cè)的,我們就能直覺(jué)地判斷我們的模型是否抓住了有意義的特征,模型是或否能泛化到其他樣本的預(yù)測(cè)上。
- 模型可信性與透明度:理解機(jī)器學(xué)習(xí)模型在提高模型可信度和提供審視預(yù)測(cè)結(jié)果透明度上是非常必要的,讓黑箱模型來(lái)決定人們的生活是不現(xiàn)實(shí)的,比如貸款和監(jiān)獄刑法。另一個(gè)對(duì)機(jī)器學(xué)習(xí)結(jié)果可信度提出質(zhì)疑的領(lǐng)域是藥品,模型結(jié)果會(huì)直接決定病人的生與死。機(jī)器學(xué)習(xí)模型在區(qū)分惡性腫瘤和不同類(lèi)型的良性腫瘤方面是非常準(zhǔn)確的,但是我們依然需要專(zhuān)家對(duì)診斷結(jié)果進(jìn)行解釋?zhuān)忉尀槭裁匆粋€(gè)機(jī)器學(xué)習(xí)模型將某個(gè)患者的腫瘤歸類(lèi)為良性或惡性將大大幫助醫(yī)生信任和使用機(jī)器學(xué)習(xí)模型來(lái)支持他們工作。長(zhǎng)久來(lái)看,更好地理解機(jī)器學(xué)習(xí)模型可以節(jié)省大量時(shí)間、防止收入損失。如果一個(gè)模型沒(méi)有做出合理的決定,在應(yīng)用這個(gè)模型并造成不良影響之前,我們就可以發(fā)現(xiàn)這一點(diǎn)。
- 識(shí)別和防止偏差:方差和偏差是機(jī)器學(xué)習(xí)中廣泛討論的話題。有偏差的模型經(jīng)常由有偏見(jiàn)的事實(shí)導(dǎo)致,如果數(shù)據(jù)包含微妙的偏差,模型就會(huì)學(xué)習(xí)下來(lái)并認(rèn)為擬合很好。一個(gè)有名的例子是,用機(jī)器學(xué)習(xí)模型來(lái)為囚犯建議定罪量刑,這顯然反映了司法體系在種族不平等上的內(nèi)在偏差。其他例子比如用于招聘的機(jī)器學(xué)習(xí)模型,揭示了在特定職位上的性別偏差,比如男性軟件工程師和女性護(hù)士。機(jī)器學(xué)習(xí)模型在我們生活的各個(gè)層面上都是強(qiáng)有力的工具,而且它也會(huì)變得越來(lái)越流行。所以作為數(shù)據(jù)科學(xué)家和決策制定者來(lái)說(shuō),理解我們訓(xùn)練和發(fā)布的模型如何做出決策,讓我們可以事先預(yù)防偏差的增大以及消除他們,是我們的責(zé)任。
可解釋性特質(zhì):
- 重要性:了解“為什么”可以幫助更深入地了解問(wèn)題,數(shù)據(jù)以及模型可能失敗的原因。
- 分類(lèi):建模前數(shù)據(jù)的可解釋性、建模階段模型可解釋性、運(yùn)行階段結(jié)果可解釋性。
- 范圍:全局解釋性、局部解釋性、模型透明度、模型公平性、模型可靠性。
- 評(píng)估:內(nèi)在還是事后?模型特定或模型不可知?本地還是全局?
- 特性:準(zhǔn)確性、保真性、可用性、可靠性,魯棒性、通用性等。
- 人性化解釋:人類(lèi)能夠理解決策原因的程度,人們可以持續(xù)預(yù)測(cè)模型結(jié)果的程度標(biāo)示。
動(dòng)機(jī)
在工業(yè)界中,數(shù)據(jù)科學(xué)或機(jī)器學(xué)習(xí)的主要焦點(diǎn)是更偏“應(yīng)用”的解決復(fù)雜的現(xiàn)實(shí)世界至關(guān)重要的問(wèn)題,而不是理論上有效地應(yīng)用這些模型于正確的數(shù)據(jù)。機(jī)器學(xué)習(xí)模型本身由算法組成,該算法試圖從數(shù)據(jù)中學(xué)習(xí)潛在模式和關(guān)系,而無(wú)需硬編碼固定規(guī)則。因此,解釋模型如何對(duì)業(yè)務(wù)起作用總是會(huì)帶來(lái)一系列挑戰(zhàn)。有一些領(lǐng)域的行業(yè),特別是在保險(xiǎn)或銀行等金融領(lǐng)域,數(shù)據(jù)科學(xué)家通常最終不得不使用更傳統(tǒng)的機(jī)器學(xué)習(xí)模型(線性或基于樹(shù)的)。原因是模型可解釋性對(duì)于企業(yè)解釋模型所采取的每個(gè)決策非常重要。
殘酷的現(xiàn)實(shí)是,如果沒(méi)有對(duì)機(jī)器學(xué)習(xí)模型或數(shù)據(jù)科學(xué)pipeline如何運(yùn)作的合理理解,現(xiàn)實(shí)中的項(xiàng)目很少成功。現(xiàn)實(shí)中的數(shù)據(jù)科學(xué)項(xiàng)目,通常會(huì)有業(yè)務(wù)和技術(shù)兩方面。數(shù)據(jù)科學(xué)家通常致力于構(gòu)建模型并為業(yè)務(wù)提供解決方案。但是,企業(yè)可能不知道模型如何工作的復(fù)雜細(xì)節(jié)。
數(shù)據(jù)科學(xué)從業(yè)者將知道存在典型的模型可解釋性與模型性能權(quán)衡。這里需要記住的一點(diǎn)是,模型性能不是運(yùn)行時(shí)或執(zhí)行性能,而是模型在決策中的準(zhǔn)確程度。有幾種模型,包括簡(jiǎn)單的線性模型甚至是基于樹(shù)的模型,它們可以很容易地解釋模型為獲得特定的洞察力或預(yù)測(cè)而做出的決策,但是你可能需要犧牲模型性能,因?yàn)樗鼈兛偸遣荒墚a(chǎn)生最好的結(jié)果是由于高偏差(線性模型)或高方差的固有問(wèn)題,導(dǎo)致過(guò)度擬合(完全成長(zhǎng)的樹(shù)模型)。更復(fù)雜的模型,如集合模型和最近的深度學(xué)習(xí)模型系列通常會(huì)產(chǎn)生更好的性能,但被認(rèn)為是黑盒模型,因?yàn)楹茈y解釋模型如何真正做出決定。
理解模型可解釋性
模型解釋作為一個(gè)概念仍然主要是理論和主觀的。任何機(jī)器學(xué)習(xí)模型的核心都有一個(gè)響應(yīng)函數(shù),它試圖映射和解釋獨(dú)立(輸入)自變量和(目標(biāo)或響應(yīng))因變量之間的關(guān)系和模式。當(dāng)模型預(yù)測(cè)或?qū)ふ乙?jiàn)解時(shí),需要做出某些決定和選擇。模型解釋試圖理解和解釋響應(yīng)函數(shù)所做出的這些決定,即what,why以及how。模型解釋的關(guān)鍵是透明度,質(zhì)疑能力以及人類(lèi)理解模型決策的難易程度。模型解釋的三個(gè)最重要的方面解釋如下。
1.是什么驅(qū)動(dòng)了模型的預(yù)測(cè)? 我們應(yīng)該能夠查詢我們的模型并找出潛在的特征交互,以了解哪些特征在模型的決策策略中可能是重要的。這確保了模型的公平性。
2.為什么模型會(huì)做出某個(gè)決定? 我們還應(yīng)該能夠驗(yàn)證并證明為什么某些關(guān)鍵特征在預(yù)測(cè)期間驅(qū)動(dòng)模型所做出的某些決策時(shí)負(fù)有責(zé)任。這確保了模型的可靠性。
- 我們?nèi)绾涡湃文P皖A(yù)測(cè)? 我們應(yīng)該能夠評(píng)估和驗(yàn)證任何數(shù)據(jù)點(diǎn)以及模型如何對(duì)其進(jìn)行決策。對(duì)于模型按預(yù)期工作的關(guān)鍵利益相關(guān)者而言,這應(yīng)該是可證明且易于理解的。這確保了模型的透明度。
在比較模型時(shí),除了模型性能之外,如果模型的決策比其他模型的決策更容易理解,那么模型被認(rèn)為比其他模型具有更好的可解釋性。
可解釋性的重要性
在解決機(jī)器學(xué)習(xí)問(wèn)題時(shí),數(shù)據(jù)科學(xué)家往往傾向于關(guān)注模型性能指標(biāo),如準(zhǔn)確性,精確度和召回等等(毫無(wú)疑問(wèn),這很重要!)。這在大多數(shù)圍繞數(shù)據(jù)科學(xué)和機(jī)器學(xué)習(xí)的在線競(jìng)賽中也很普遍。但是,指標(biāo)只能說(shuō)明模型預(yù)測(cè)決策的部分故事。隨著時(shí)間的推移,由于環(huán)境中的各種因素導(dǎo)致的模型概念漂移,性能可能會(huì)發(fā)生變化。因此,了解推動(dòng)模型采取某些決策的因素至關(guān)重要。
如果一個(gè)模型工作得很好,為什么還要深入挖掘呢?在解決現(xiàn)實(shí)世界中的數(shù)據(jù)科學(xué)問(wèn)題時(shí),為了讓企業(yè)信任您的模型預(yù)測(cè)和決策,他們會(huì)不斷提出“我為什么要相信您的模型?”這一問(wèn)題,這一點(diǎn)非常有意義。如果一個(gè)人患有癌癥或糖尿病,一個(gè)人可能對(duì)社會(huì)構(gòu)成風(fēng)險(xiǎn),或者即使客戶會(huì)流失,您是否會(huì)對(duì)預(yù)測(cè)和做出決策(如果有的話)感到滿意?也許不是,如果我們能夠更多地了解模型的決策過(guò)程(原因和方式),我們可能會(huì)更喜歡它。這使我們更加透明地了解模型為何做出某些決策,在某些情況下可能出現(xiàn)的問(wèn)題,并且隨著時(shí)間的推移它有助于我們?cè)谶@些機(jī)器學(xué)習(xí)模型上建立一定程度的信任。
- 了解預(yù)測(cè)背后的原因在評(píng)估信任方面非常重要,如果計(jì)劃基于預(yù)測(cè)采取行動(dòng),或者選擇是否部署新模型,那么這是至關(guān)重要的。
- 無(wú)論人類(lèi)是直接使用機(jī)器學(xué)習(xí)分類(lèi)器作為工具,還是在其他產(chǎn)品中部署模型,仍然存在一個(gè)至關(guān)重要的問(wèn)題:如果用戶不信任模型或預(yù)測(cè),他們就不會(huì)使用它。
這是我們?cè)诒疚闹卸啻斡懻摰膬?nèi)容,也是決定數(shù)據(jù)科學(xué)項(xiàng)目在行業(yè)中取得成功的關(guān)鍵區(qū)別之一。這推動(dòng)了模型解釋的必要性和重要性的緊迫性。
可解釋性的標(biāo)準(zhǔn)
有一些特定的標(biāo)準(zhǔn)可用于分類(lèi)模型解釋方法。Christoph Molnar,2018年“可解釋的機(jī)器學(xué)習(xí),制作黑箱模型可解釋指南”中提到了一個(gè)很好的指南。
- 內(nèi)在還是事后? 內(nèi)在可解釋性就是利用機(jī)器學(xué)習(xí)模型,該模型本質(zhì)上是可解釋的(如線性模型,參數(shù)模型或基于樹(shù)的模型)。事后可解釋性意味著選擇和訓(xùn)練黑匣子模型(集合方法或神經(jīng)網(wǎng)絡(luò))并在訓(xùn)練后應(yīng)用可解釋性方法(特征重要性,部分依賴(lài)性圖)。我們將更多地關(guān)注我們系列文章中的事后模型可解釋方法。
- 模型特定或模型不可知? 特定于模型的解釋工具非常特定于內(nèi)在模型解釋方法,這些方法完全依賴(lài)于每個(gè)模型的功能和特征。這可以是系數(shù),p值,與回歸模型有關(guān)的AIC分?jǐn)?shù),來(lái)自決策樹(shù)的規(guī)則等等。與模型無(wú)關(guān)的工具與事后方法更相關(guān),可用于任何機(jī)器學(xué)習(xí)模型。這些不可知方法通常通過(guò)分析(和輸入的擾動(dòng))特征輸入和輸出對(duì)來(lái)操作。根據(jù)定義,這些方法無(wú)法訪問(wèn)任何模型內(nèi)部,如權(quán)重,約束或假設(shè)。
- 本地還是全局? 這種解釋分類(lèi)討論了解釋方法是解釋單個(gè)預(yù)測(cè)還是整個(gè)模型行為?或者如果范圍介于兩者之間?我們將很快談?wù)撊蚝偷胤降慕忉尅?/li>
可解釋性的范圍
如何定義可解釋性的范圍和界限?一些有用的方面可以是模型的透明度,公平性和責(zé)任性。全局和局部模型解釋是定義模型解釋范圍的明確方法。
全局可解釋:就是試圖理解“模型如何進(jìn)行預(yù)測(cè)?”和“模型的子集如何影響模型決策?”。要立即理解和解釋整個(gè)模型,我們需要全局可解釋性。全局可解釋性是指能夠基于完整數(shù)據(jù)集上的依賴(lài)(響應(yīng))變量和獨(dú)立(預(yù)測(cè)變量)特征之間的條件交互來(lái)解釋和理解模型決策。嘗試?yán)斫馓卣鹘换ズ椭匾允冀K是理解全球解釋的一個(gè)很好的一步。當(dāng)然,在嘗試分析交互時(shí),在超過(guò)兩維或三維之后可視化特征變得非常困難。因此,經(jīng)常查看可能影響全局知識(shí)模型預(yù)測(cè)的模塊化部分和特征子集會(huì)有所幫助。全局解釋需要完整的模型結(jié)構(gòu),假設(shè)和約束知識(shí)。
局部解釋:試圖理解“為什么模型為單個(gè)實(shí)例做出具體決策?”和“為什么模型為一組實(shí)例做出具體決策?”。對(duì)于本地可解釋性,我們不關(guān)心模型的固有結(jié)構(gòu)或假設(shè),我們將其視為黑盒子。為了理解單個(gè)數(shù)據(jù)點(diǎn)的預(yù)測(cè)決策,我們專(zhuān)注于該數(shù)據(jù)點(diǎn)并查看該點(diǎn)周?chē)奶卣骺臻g中的局部子區(qū)域,并嘗試基于該局部區(qū)域理解該點(diǎn)的模型決策。本地?cái)?shù)據(jù)分布和特征空間可能表現(xiàn)完全不同,并提供更準(zhǔn)確的解釋而不是全局解釋。局部可解釋模型 - 不可知解釋?zhuān)↙IME)框架是一種很好的方法,可用于模型不可知的局部解釋。我們可以結(jié)合使用全局和局部解釋來(lái)解釋一組實(shí)例的模型決策。
模型透明度:為試圖理解“如何根據(jù)算法和特征創(chuàng)建模型?”。我們知道,通常機(jī)器學(xué)習(xí)模型都是在數(shù)據(jù)特征之上利用算法來(lái)構(gòu)建將輸入映射到潛在輸出(響應(yīng))的表示。模型的透明度可能試圖了解模型的構(gòu)建方式以及可能影響其決策的更多技術(shù)細(xì)節(jié)。這可以是神經(jīng)網(wǎng)絡(luò)的權(quán)重,CNN濾波器的權(quán)重,線性模型系數(shù),決策樹(shù)的節(jié)點(diǎn)和分裂。但是,由于業(yè)務(wù)可能不太精通這些技術(shù)細(xì)節(jié),因此嘗試使用不可知的局部和全局解釋方法來(lái)解釋模型決策有助于展示模型透明度。
可解釋性的作用
對(duì)于想要了解模型如何工作的數(shù)據(jù)科學(xué)家來(lái)說(shuō),評(píng)估模型的準(zhǔn)確性通常是不夠的。數(shù)據(jù)科學(xué)家通常想知道模型輸入變量如何工作以及模型的預(yù)測(cè)如何根據(jù)輸入變量的值而變化。
機(jī)器學(xué)習(xí)算法和模型的工程應(yīng)用中用到最多的主要是樹(shù)類(lèi)模型(lgb,xgb)和神經(jīng)網(wǎng)絡(luò)(cnn, rnn),使用者往往習(xí)慣于很少去思考其中的含義和解釋性。需要思考一個(gè)模型的哪些東西是可解釋的?
所以有幾個(gè)問(wèn)題值得討論:
- 哪些特征在模型看到是最重要的?
- 關(guān)于某一條記錄的預(yù)測(cè),每一個(gè)特征是如何影響到最終的預(yù)測(cè)結(jié)果的?
- 從大量的記錄整體來(lái)考慮,每一個(gè)特征如何影響模型的預(yù)測(cè)的?
為什么這些解釋信息是有價(jià)值的呢:
- 調(diào)試模型用
一般的真實(shí)業(yè)務(wù)場(chǎng)景會(huì)有很多不可信賴(lài)的,沒(méi)有組織好的臟數(shù)據(jù)。你在預(yù)處理數(shù)據(jù)時(shí)就有可能加進(jìn)來(lái)了潛在的錯(cuò)誤,或者不小心泄露了預(yù)測(cè)目標(biāo)的信息等,考慮各種潛在的災(zāi)難性后果,debug的思路就尤其重要了。當(dāng)你遇到了用現(xiàn)有業(yè)務(wù)知識(shí)無(wú)法解釋的數(shù)據(jù)的時(shí)候,了解模型預(yù)測(cè)的模式,可以幫助你快速定位問(wèn)題。
- 指導(dǎo)工程師做特征工程
特征工程通常是提升模型準(zhǔn)確率最有效的方法。特征工程通常涉及到到反復(fù)的操作原始數(shù)據(jù)(或者之前的簡(jiǎn)單特征),用不同的方法來(lái)得到新的特征。有時(shí)候你完成FE的過(guò)程只用到了自己的直覺(jué)。這其實(shí)還不夠,當(dāng)你有上百個(gè)原始特征的時(shí)候,或者當(dāng)你缺乏業(yè)務(wù)背景知識(shí)的時(shí)候,你將會(huì)需要更多的指導(dǎo)方向。如何創(chuàng)造出這樣優(yōu)秀的特征呢?如何找到最重要的特征的方法,并且可以發(fā)現(xiàn)兩個(gè)特別相關(guān)的特征,當(dāng)面對(duì)越來(lái)越多的特征的時(shí)候,這些方法就會(huì)很重要啦。
- 指導(dǎo)數(shù)據(jù)采集的方向
對(duì)于網(wǎng)上下載的數(shù)據(jù)集你完全控制不了。不過(guò)很多公司和機(jī)構(gòu)用數(shù)據(jù)科學(xué)來(lái)指導(dǎo)他們從更多方面收集數(shù)據(jù)。一般來(lái)說(shuō),收集新數(shù)據(jù)很可能花費(fèi)比較高或者不是很容易,所以大家很想要知道哪些數(shù)據(jù)是值得收集的。基于模型的洞察力分析可以教你很好的理解已有的特征,這將會(huì)幫助你推斷什么樣子的新特征是有用的。
- 指導(dǎo)人們做決策
一些決策是模型自動(dòng)做出來(lái)的,雖然亞馬遜不會(huì)用人工來(lái)決定展示給你網(wǎng)頁(yè)上的商品,但是很多重要的決策是由人來(lái)做出的,而對(duì)于這些決定,模型的洞察力會(huì)比模型的預(yù)測(cè)結(jié)果更有價(jià)值。
- 建立模型和人之間的信任
很多人在做重要決策的時(shí)候不會(huì)輕易的相信模型,除非他們驗(yàn)證過(guò)模型的一些基本特性,這當(dāng)然是合理的。實(shí)際上,把模型的可解釋性展示出來(lái),如果可以匹配上人們對(duì)問(wèn)題的理解,那么這將會(huì)建立起大家對(duì)模型的信任,即使是在那些沒(méi)有數(shù)據(jù)科學(xué)知識(shí)的人群中。
方法
Confusion Matrix
一個(gè)完美的分類(lèi)模型就是,如果一個(gè)客戶實(shí)際上屬于類(lèi)別 good,也預(yù)測(cè)成good,處于類(lèi)別 bad,也就預(yù)測(cè)成 bad。實(shí)際上一些是 good 的客戶,根據(jù)我們的模型,卻預(yù)測(cè)他為 bad,對(duì)一些原本是 bad 的客戶,卻預(yù)測(cè)他為 good。我們需要知道,這個(gè)模型到底預(yù)測(cè)對(duì)了多少,預(yù)測(cè)錯(cuò)了多少,混淆矩陣就把所有這些信息,都?xì)w到一個(gè)表里:
Sensitivity(覆蓋率,True Positive Rate)= 正確預(yù)測(cè)到的正例數(shù) / 實(shí)際正例總數(shù);Recall (True Positive Rate,or Sensitivity) =true positive/total actual positive=d/c+d;
PV+ (命中率,Precision, Positive Predicted Value) = 正確預(yù)測(cè)到的正例數(shù) / 預(yù)測(cè)正例總數(shù);Precision (Positive Predicted Value, PV+) =true positive/ total predicted positive=d/b+d;
Specificity (負(fù)例的覆蓋率,True Negative Rate) = 正確預(yù)測(cè)到的負(fù)例個(gè)數(shù) / 實(shí)際負(fù)例總數(shù);Specificity (True Negative Rate) =true negative/total actual negative=a/a+b;
圖中關(guān)于混淆矩陣結(jié)果理解:recall:0.54;precision:0.915;specificity:0.95;
Lift
它衡量的是,與不利用模型相比,模型的預(yù)測(cè)能力 “變好” 了多少。實(shí)質(zhì)上它強(qiáng)調(diào)的是投入與產(chǎn)出比。不利用模型,我們只能利用 “正例的比例是 c+d/a+b+c+d” 這個(gè)樣本信息來(lái)估計(jì)正例的比例(baseline model),而利用模型之后,我們不需要從整個(gè)樣本中來(lái)挑選正例,只需要從我們預(yù)測(cè)為正例的那個(gè)樣本的子集(b+d)中挑選正例,這時(shí)預(yù)測(cè)的準(zhǔn)確率為 d/b+d。
顯然,lift(提升指數(shù))越大,模型的運(yùn)行效果越好。如果這個(gè)模型的預(yù)測(cè)能力跟 baseline model 一樣,那么 d/b+d 就等于 c+d/a+b+c+d(lift 等于 1),這個(gè)模型就沒(méi)有任何 “提升” 了(套一句金融市場(chǎng)的話,它的業(yè)績(jī)沒(méi)有跑過(guò)市場(chǎng))。
ROC曲線 & PR曲線 & KS曲線
實(shí)際應(yīng)用中,通常是先基于訓(xùn)練好的分類(lèi)器得出測(cè)試樣本的預(yù)測(cè)概率,然后將該測(cè)試樣本的預(yù)測(cè)概率與給定的閾值進(jìn)行比較,若該預(yù)測(cè)概率大于給定閾值,則將該測(cè)試樣本劃分為正類(lèi),反之則將其劃分為反類(lèi)。對(duì)于不同的分類(lèi)任務(wù),該分類(lèi)閾值的取值也是不一樣的。
- ROC曲線(The Receiver Operating Characteristic Curve)給出的是不同分類(lèi)閾值情況下真正率(TPr)和假正率(FPr)的變化曲線。PR曲線(Precision-Recall Curve)給出的是不同分類(lèi)閾值情況下查準(zhǔn)率(Precision)和查全率(Recall)的變化曲線。有文獻(xiàn)指出,ROC曲線相比PR曲線有一個(gè)非常好的特性:就是當(dāng)正負(fù)樣本分布發(fā)生變化的時(shí)候,ROC曲線的形狀能夠基本保持不變,而PR曲線的形狀會(huì)發(fā)生較劇烈的變化。為了使得ROC曲線之間能更好的進(jìn)行比較,通常采用AUC,即ROC曲線下的面積來(lái)衡量一個(gè)分類(lèi)算法的性能。其中,AUC的值越大,表明分類(lèi)性能越好。
- KS(Kolmogorov-Smirnov Curve)曲線橫軸為不同的分類(lèi)閾值,縱軸為真正率(TPr)和假正率(FPr)的變化曲線。KS值=max|TPr-FPr|,等價(jià)于ΔTPr=ΔFPr,這和ROC曲線上找最優(yōu)閾值的條件一致。KS值常在征信評(píng)分模型中用于衡量區(qū)分預(yù)測(cè)正負(fù)樣本的分隔程度。一般來(lái)說(shuō),KS值越大,表明正負(fù)樣本區(qū)分的程度越好,說(shuō)明模型區(qū)分度越高。但并非所有的情況KS值都是越高越好的,尤其在征信模型中,如正負(fù)樣本完全分錯(cuò)的情況下,KS值依舊可以很高。征信模型最期望得到的信用分?jǐn)?shù)分布為正態(tài)分布,如果KS值過(guò)大,如0.9,就可以認(rèn)為正負(fù)樣本分得過(guò)開(kāi)了,不太可能是正態(tài)分布,反而比較可能是極端化的分布狀態(tài)(如U字型),這樣的分?jǐn)?shù)就很不好,基本可以認(rèn)為不可用。
Cumulative gains chart
橫坐標(biāo)表示:代表我們樣本的百分比,假設(shè)有10000個(gè)樣本,0.1代表1000個(gè),1代表10000個(gè)樣本。
縱坐標(biāo)表示:代表橫軸所代表的那么多樣本中,判斷正確的比率。
baseline表示:如果我們不用模型,那我們對(duì)每一個(gè)人的打分都是一樣的,正率在所有樣本空間都是一樣的,連接起來(lái)就成為一條直線。
曲線含義:采用模型進(jìn)行預(yù)測(cè)。y值的分子代表模型預(yù)測(cè)且預(yù)測(cè)為正例的人數(shù),分母是整個(gè)群體正例人數(shù)。
Silhouette Analysis
Silhouette指的是一種解釋和驗(yàn)證數(shù)據(jù)集群內(nèi)一致性的方法。該技術(shù)提供了每個(gè)對(duì)象分類(lèi)的簡(jiǎn)潔圖形表示。
輪廓值是對(duì)象與其自身群集(內(nèi)聚)相比與其他群集(分離)相似程度的度量。輪廓范圍從-1到+1,其中高值表示對(duì)象與其自己的簇很好地匹配并且與相鄰簇很不匹配。如果大多數(shù)對(duì)象具有高值,則群集配置是合適的。如果許多點(diǎn)具有低值或負(fù)值,則群集配置可能具有太多或太少的群集。
圖中通過(guò)Silhouette方法大致對(duì)數(shù)據(jù)集樣本分類(lèi)有了掌握,可以看到0/1類(lèi)別大致比例。
Learning Curve
概念:學(xué)習(xí)曲線就是通過(guò)畫(huà)出不同訓(xùn)練集大小時(shí)訓(xùn)練集和交叉驗(yàn)證的準(zhǔn)確率,可以看到模型在新數(shù)據(jù)上的表現(xiàn),進(jìn)而來(lái)判斷模型是否方差偏高或偏差過(guò)高,以及增大訓(xùn)練集是否可以減小過(guò)擬合。
Bias是用所有可能的訓(xùn)練數(shù)據(jù)集訓(xùn)練出的所有模型的輸出的平均值與真實(shí)模型的輸出值之間的差異。
Variance是不同的訓(xùn)練數(shù)據(jù)集訓(xùn)練出的模型輸出值之間的差異。
解讀:當(dāng)訓(xùn)練集和測(cè)試集的誤差收斂但卻很高時(shí),為高偏差。左上角的偏差很高,訓(xùn)練集和驗(yàn)證集的準(zhǔn)確率都很低,很可能是欠擬合。我們可以增加模型參數(shù),比如,構(gòu)建更多的特征,減小正則項(xiàng)。此時(shí)通過(guò)增加數(shù)據(jù)量是不起作用的。當(dāng)訓(xùn)練集和測(cè)試集的誤差之間有大的差距時(shí),為高方差。當(dāng)訓(xùn)練集的準(zhǔn)確率比其他獨(dú)立數(shù)據(jù)集上的測(cè)試結(jié)果的準(zhǔn)確率要高時(shí),一般都是過(guò)擬合。右上角方差很高,訓(xùn)練集和驗(yàn)證集的準(zhǔn)確率相差太多,應(yīng)該是過(guò)擬合。我們可以增大訓(xùn)練集,降低模型復(fù)雜度,增大正則項(xiàng),或者通過(guò)特征選擇減少特征數(shù)。理想情況是是找到偏差和方差都很小的情況,即收斂且誤差較小。
Permutation Importance
一個(gè)最基本的問(wèn)題大概會(huì)是什么特征對(duì)我模型預(yù)測(cè)的影響最大呢?這個(gè)東西就叫做“feature importance”即特征重要性。anyway,字面意思看著就很重要啦。我們有很多方法來(lái)衡量特征的重要性,這里呢,將會(huì)介紹一種方法:排列重要性。這種方法和其他方法比起來(lái),優(yōu)勢(shì)有:
- 計(jì)算速度快
- 廣泛使用和理解
- 我們希望特征重要性與屬性具有一致性
工作原理:排列重要性,一定是在model訓(xùn)練完成后,才可以計(jì)算的。簡(jiǎn)單來(lái)說(shuō),就是改變數(shù)據(jù)表格中某一列的數(shù)據(jù)的排列,保持其余特征不動(dòng),看其對(duì)預(yù)測(cè)精度的影響有多大。大概三個(gè)步驟:
- 訓(xùn)練好模型
- 拿某一個(gè)feature column, 然后隨機(jī)打亂順序。然后用模型來(lái)重新預(yù)測(cè)一遍,看看自己的metric或者loss 。function變化了多少。
- 把上一個(gè)步驟中打亂的column復(fù)原,換下一個(gè)column重復(fù)上一個(gè)步驟,直到所有column都算一遍。
代碼示例:
from xgboost import XGBClassifier
from sklearn.model_selection import train_test_split
import eli5 # python計(jì)算permutation importance工具包
from eli5.sklearn import PermutationImportance
path = './census_income_dataset.csv'
data = pd.read_csv(path)
#...省略數(shù)據(jù)預(yù)處理過(guò)程
X_train, X_test, y_train, y_test = train_test_split(df, y, test_size=0.2, random_state = 400)
# 訓(xùn)練XGBoost模型
model = xgb.XGBClassifier(
learning_rate =0.05,
n_estimators=100,
max_depth=3,
min_child_weight=1,
gamma=0.3,
subsample=0.8,
colsample_bytree=0.8,
objective= 'multi:softprob',
nthread=4,
scale_pos_weight=1,
num_class=2,
seed=27
).fit(X_train, y_train)
perm = PermutationImportance(model, random_state = 1).fit(X_test, y_test) # 實(shí)例化
eli5.show_weights(perm, feature_names = X_test.columns.tolist())
結(jié)果分析:
靠近上方的綠色特征,表示對(duì)模型預(yù)測(cè)較為重要的特征;
為了排除隨機(jī)性,每一次 shuffle 都會(huì)進(jìn)行多次,然后取結(jié)果的均值和標(biāo)準(zhǔn)差;
部分特征出現(xiàn)負(fù)值,表示其 shuffle 之后,對(duì)精度反而有所提升。這通常出現(xiàn)在特征不那么重要的時(shí)候。當(dāng)數(shù)據(jù)集較小的時(shí)候,這種情況更為常見(jiàn);
“+ - ”之后的數(shù)字衡量的是一次重新洗牌后的表現(xiàn)如何變化;
這個(gè)數(shù)據(jù)集是收入水平數(shù)據(jù)集,這個(gè)例子里,最重要的特征是“capital_gain”, 這看起來(lái)是合理的。
PDP
部分依賴(lài)圖(PDP或PD圖)顯示特征對(duì)機(jī)器學(xué)習(xí)模型的預(yù)測(cè)結(jié)果的邊際效應(yīng),可以展示一個(gè)特征是如何影響預(yù)測(cè)的。部分依賴(lài)圖可以顯示目標(biāo)與特征之間的關(guān)系是線性的,單調(diào)的還是更復(fù)雜的。例如,當(dāng)應(yīng)用于線性回歸模型時(shí),部分依賴(lài)圖總是顯示線性關(guān)系。
回歸的部分依賴(lài)函數(shù)定義為:
- xSxS是部分依賴(lài)圖要畫(huà)的特征集合
- xCxC是其他特征
通常,集合SS中有一到兩個(gè)特征,這個(gè)集合中的特征我們想知道他們對(duì)預(yù)測(cè)的影響。在集合SS和集合CC中的特征并集組成了全部特征空間x。邊際化機(jī)器學(xué)習(xí)模型輸出在集合C的特征分布上。PDP的一個(gè)假設(shè)是,C中的特征與s中的特征不相關(guān)。如果違反這個(gè)假設(shè),部分依賴(lài)圖的平均值將包括非常不可能甚至不可能的數(shù)據(jù)點(diǎn)。
邊緣化概念
邊緣化是一種通過(guò)累加一個(gè)變量的可能值以判定另一個(gè)變量的邊緣分布的方法。這聽(tīng)起來(lái)有點(diǎn)抽象,讓我們看一個(gè)例子:
假設(shè)我們想知道天氣是如何影響英國(guó)人的幸福感的,也就是P(幸福感|天氣)。假定我們具有衡量某人的幸福感所需的定義和設(shè)備,同時(shí)記錄了某個(gè)英格蘭人和某個(gè)蘇格蘭人所處位置的天氣。可能蘇格蘭人通常而言要比英格蘭人幸福。所以我們其實(shí)在衡量的是P(幸福感, 國(guó)|天氣),即,我們同時(shí)考察幸福感和國(guó)。
邊緣化告訴我們,我們可以通過(guò)累加國(guó)家的所有可能值(英國(guó)由3國(guó)組成:英格蘭、蘇格蘭、威爾士),得到想要計(jì)算的數(shù)字,即P(幸福感|天氣) = P(幸福感, 國(guó)=英格蘭|天氣) + P(幸福感, 國(guó)=蘇格蘭|天氣) + P(幸福感, 國(guó)=威爾士|天氣)。
部分函數(shù)f^xSf^xS通過(guò)計(jì)算在訓(xùn)練數(shù)據(jù)的平均值,即Monte Carlo方法:
- x(i)CxC(i)是數(shù)據(jù)集中的真實(shí)特征值,這些特征是不關(guān)注的特征。
特征重要性可以告訴你哪些特征是最重要的或者是不重要的。
partial dependence圖可以告訴你一個(gè)特征是如何影響預(yù)測(cè)的。
PDP分析步驟如下:
- 訓(xùn)練一個(gè)Xgboost模型(假設(shè)F1 … F4是我們的特征,Y是目標(biāo)變量,假設(shè)F1是最重要的特征)。
- 我們有興趣探索Y和F1的直接關(guān)系。
- 用F1(A)代替F1列,并為所有的觀察找到新的預(yù)測(cè)值。采取預(yù)測(cè)的平均值。(稱(chēng)之為基準(zhǔn)值)
- 對(duì)F1(B)… F1(E)重復(fù)步驟3,即針對(duì)特征F1的所有不同值。
- PDP的X軸具有不同的F1值,而Y軸是雖該基準(zhǔn)值F1值的平均預(yù)測(cè)而變化。
PDP特別適合用來(lái)回答類(lèi)似這樣的問(wèn)題:
- 在所有的收入水平的特征中,年齡和學(xué)歷是如何影響收入的?或者說(shuō),在不同的國(guó)家相同年齡的人群收入水平有多少相似呢?
- 預(yù)測(cè)推薦基金時(shí),投資偏好的不同會(huì)帶來(lái)多大的影響?還是有其他更重要的影響因素?
如果你對(duì)線性回歸或者邏輯回歸比較熟悉,那么partial dependence可以被類(lèi)比為這兩類(lèi)模型中的“系數(shù)”。并且partial dependence在復(fù)雜模型中的作用比在簡(jiǎn)單模型中更大,抓出更復(fù)雜的特性。
同樣還是用census_income的數(shù)據(jù)集,不同的個(gè)體在各個(gè)方面都是不一樣的。比如種族,年齡,受教育程度等等。一眼看過(guò)去,很難區(qū)分這些特征對(duì)結(jié)果的影響有多大。為了清晰的分析,我們還是先只拿出某一行數(shù)據(jù),比如說(shuō)這一行數(shù)據(jù)里,有種族White,45歲,Bachelors。我們將會(huì)用已有模型來(lái)預(yù)測(cè)結(jié)果,將這一行的某一個(gè)變量,反復(fù)的進(jìn)行修改和重新預(yù)測(cè),比如將年齡修改從45修改為60,等等。持續(xù)觀察預(yù)測(cè)結(jié)果,在不同的年齡時(shí)有什么樣的變化。
這里的例子,只用到了一行數(shù)據(jù)。特征之間的相互作用關(guān)系通過(guò)這一行來(lái)觀察可能不太妥當(dāng),那么考慮用多行數(shù)據(jù)來(lái)進(jìn)行試驗(yàn),然后根據(jù)平均值畫(huà)出圖像來(lái)。
from pdpbox import pdp
feature = 'age'
# 創(chuàng)建好畫(huà)圖所需的數(shù)據(jù)
pdp_goals = pdp.pdp_isolate(model, X_train, df.columns, feature)
# 畫(huà)出“age”這一特征的partial dependence plot
pdp.pdp_plot(pdp_goals, feature)
plt.show()
第一:y軸是預(yù)測(cè)結(jié)果的變化量。
第二:藍(lán)色陰影區(qū)域代表了置信的大小。
從這幅圖可以看出,age的增加肯定可以增加高收入概率,但是增加到一定的時(shí)候,對(duì)這個(gè)概率影響不大了。
置信區(qū)間概念
給定置信水平,根據(jù)估計(jì)值確定真實(shí)值可能出現(xiàn)的區(qū)間范圍,該區(qū)間通常以估計(jì)值為中心,該區(qū)間則為置信區(qū)間。
feature = 'education_num'
pdp_goals = pdp.pdp_isolate(model, X_train, df.columns, feature)
pdp.pdp_plot(pdp_goals, feature)
plt.show()
從這副圖可以看出,受教育程度對(duì)收入起積極作用,隨著受的教育越多,收入越高,也符合常人理解。
fig, axes, summary_df_1 = info_plots.target_plot_interact(
df=dataset, features=['age', 'education_num'], feature_names=['age', 'education_num'], target='income_level'
)
在此圖表中,氣泡大小不太重要,因?yàn)樗c觀測(cè)數(shù)量(事件發(fā)生的次數(shù))有關(guān)。最重要的見(jiàn)解來(lái)自氣泡的顏色,較暗的氣泡意味著更高的默認(rèn)概率。這是一個(gè)強(qiáng)大的工具,因?yàn)樗梢陨钊肓私馕覀冞x擇的兩個(gè)變量對(duì)因變量的影響。
features_to_plot = ['age', 'education_num']
inter1 = pdp.pdp_interact(model, df, df.columns, features_to_plot)
pdp.pdp_interact_plot(inter1, features_to_plot, plot_type='grid', x_quantile=True, ncols = 2, plot_pdp=True)
plt.show()
上圖可以看出,受教育程度和年齡對(duì)收入水平有著正相關(guān)作用,且隨著受教育程度增加,年齡從35-90,高收入的概率越來(lái)越大。
fig, axes = pdp.pdp_interact_plot(
inter1, ['age', 'education_num'], plot_type='contour', x_quantile=True, ncols=2,
plot_pdp=True
)
重要的是要記住,在該圖中,較暗的顏色并不一定意味著較高的默認(rèn)概率。在這里,我們繪制了受教育等級(jí)和年齡與收入等級(jí)概率。我們可以推斷,在這兩個(gè)自變量中,education_num起著更重要的作用,因?yàn)榈雀呔€圖主要是垂直的,遵循x軸刻度標(biāo)記(至少達(dá)到一個(gè)點(diǎn))。
ICE
部分依賴(lài)圖(PDP)和個(gè)體條件期望圖(ICE)說(shuō)明了一個(gè)或多個(gè)輸入變量與黑盒模型的預(yù)測(cè)結(jié)果之間的關(guān)系。它們都基于可視化,模型不可知的技術(shù)。ICE圖可以更深入地探索個(gè)體差異并識(shí)別模型輸入之間的子組和相互作用。
另一方面,ICE圖使得可以深入到單個(gè)觀察的水平。它們可以幫助探索個(gè)體差異,并確定模型輸入之間的子組和交互。可以將每個(gè)ICE曲線視為一種模擬,顯示如果改變特定觀察的一個(gè)特征,模型預(yù)測(cè)會(huì)發(fā)生什么。為避免可視化過(guò)載,ICE圖一次只顯示一個(gè)模型變量。
可以將每個(gè)ICE曲線視為一種模擬,顯示如果您改變特定觀察的一個(gè)特征,模型預(yù)測(cè)會(huì)發(fā)生什么。如圖9所示,通過(guò)在曲線變量的唯一值上復(fù)制個(gè)體觀察并對(duì)每個(gè)重復(fù)進(jìn)行評(píng)分,獲得一個(gè)觀察的ICE曲線。
下圖中的PD圖結(jié)果基本上是平坦的,給人的印象是X1與模型的預(yù)測(cè)之間沒(méi)有關(guān)系。
當(dāng)我們觀察ICE圖時(shí),它們呈現(xiàn)出一幅截然不同的圖:這種關(guān)系對(duì)于一次觀察非常正面,但對(duì)另一次觀察則非常負(fù)面。因此,與PD圖告訴我們的情況相反,ICE圖顯示X1實(shí)際上與目標(biāo)有關(guān);。基本上,ICE圖分離PD功能(畢竟是平均值)以揭示相互作用和個(gè)體差異。
當(dāng)對(duì)大數(shù)據(jù)集分析時(shí),則可能需要進(jìn)行一些調(diào)整。例如,可以對(duì)選定的變量進(jìn)行分箱,也可以對(duì)數(shù)據(jù)集進(jìn)行采樣或分組。這些技術(shù)可以更快地提供實(shí)際圖的合理近似值。
如果想進(jìn)一步了解PD和ICE圖,Ray Wright寫(xiě)了一篇很好的論文,展示了PD和ICE圖如何用于比較和獲得機(jī)器學(xué)習(xí)模型的洞察力,特別是所謂的“黑盒”算法,如隨機(jī)森林,神經(jīng)網(wǎng)絡(luò)和梯度增強(qiáng)。在他的論文中,他還討論了PD圖的局限性,并提供了有關(guān)如何為大數(shù)據(jù)生成可縮放圖的建議。
LIME
局部可解釋不可知模型(LIME)是一種算法,它提供了一種新穎的技術(shù),以可解釋和可信任的方式解釋任何預(yù)測(cè)模型的結(jié)果。它的工作原理是圍繞想要解釋的預(yù)測(cè)在本地訓(xùn)練可解釋的模型。這個(gè)工作發(fā)表于2016年KDD的論文。工具學(xué)習(xí)地址。
流程:
- 訓(xùn)練模型,模型(記作 ff)可以是LR、NN、Wide and deep、C4.5 Decision tree、Random forest、GBDT等任意模型。
- 訓(xùn)練結(jié)束后我們需要解析模型,先選擇一個(gè)待解析的樣本,樣本通過(guò)模型計(jì)算可以得到一個(gè)prediction(包含預(yù)測(cè)的label以及預(yù)測(cè)為1的probability),這時(shí)我們?cè)谶@個(gè)樣本的附近選擇新的樣本并用模型計(jì)算出多個(gè)prediction,這樣樣本組合新的樣本集。
- 然后使用新的可解析的特征和prediction作為label來(lái)訓(xùn)練新的簡(jiǎn)單模型(例如LR),然后使用簡(jiǎn)單模型的權(quán)重作為這些特征的重要性作為輸出。
通俗來(lái)說(shuō):
就是選擇一個(gè)樣本以及樣本附近的點(diǎn),然后訓(xùn)練一個(gè)簡(jiǎn)單模型來(lái)擬合,雖然簡(jiǎn)單模型不能在完整數(shù)據(jù)集上有效,但至少在這個(gè)點(diǎn)附近都是有效的,這個(gè)簡(jiǎn)單模型的特征是人類(lèi)可解析的,而訓(xùn)練出的權(quán)重也可以表示特征重要性。
論文中算法描述:
為了更好地理解LIME的工作原理,讓我們考慮兩種不同類(lèi)型的可解釋性:
- 全局可解釋性:全局解釋有助于我們理解由訓(xùn)練的響應(yīng)函數(shù)建模的整個(gè)條件分布,但全局解釋可以是近似的或基于平均值。
- 局部可解釋性:局部解釋促進(jìn)對(duì)單個(gè)數(shù)據(jù)點(diǎn)或分布的小范圍的理解,例如一組輸入記錄及其相應(yīng)的預(yù)測(cè)。由于小范圍的條件分布很可能是線性的,因此局部解釋可能比全局解釋更準(zhǔn)確。LIME旨在提供局部可解釋性,因此對(duì)于特定決策或結(jié)果最為準(zhǔn)確。
我們希望解釋器與模型無(wú)關(guān),并且在局部可靠。局部可靠的解釋捕獲要解釋的實(shí)例鄰域中的分類(lèi)器行為。為了學(xué)習(xí)局部解釋?zhuān)琇IME使用可解釋的模型近似分類(lèi)器圍繞特定實(shí)例的決策邊界。LIME與模型無(wú)關(guān),這意味著它將模型視為黑盒子,并且不對(duì)模型行為做出任何假設(shè)。這使得LIME適用于任何預(yù)測(cè)模型。
LIME的核心在于三個(gè)方面:
- 這里不對(duì)模型整體提供解釋?zhuān)蔷植繉?duì)每一個(gè)樣本單獨(dú)進(jìn)行解釋
- 即使機(jī)器學(xué)習(xí)模型訓(xùn)練過(guò)程會(huì)產(chǎn)生一些抽象的特征,但是解釋基于當(dāng)前輸入數(shù)據(jù)的變量特征
- 通過(guò)局部建立簡(jiǎn)單模型進(jìn)行預(yù)測(cè)來(lái)對(duì)大多數(shù)重要特征進(jìn)行解釋
LIME作用在單個(gè)樣本上。
首先,我們?nèi)〕鲆粋€(gè)樣本,并(permute)重復(fù)這個(gè)數(shù)據(jù)同時(shí)增加一些微小擾動(dòng),這樣就得到了一個(gè)新的數(shù)據(jù)集,數(shù)據(jù)集中包含相似的樣本,都基于取出來(lái)的那個(gè)樣本。對(duì)于這個(gè)新數(shù)據(jù)集中的每一個(gè)樣本,我們可以計(jì)算它跟取出的樣本之間的相似性,即在permutation中它被調(diào)整了多大,所有的統(tǒng)計(jì)距離、相似性矩陣都可以用在這里,比如用指定寬度的指數(shù)內(nèi)核將歐式距離轉(zhuǎn)化為相似度。
下一步,使用最初訓(xùn)練的復(fù)雜模型,在新數(shù)據(jù)上進(jìn)行預(yù)測(cè)。正因?yàn)樾聰?shù)據(jù)樣本間的細(xì)微差別,我們可以跟蹤那些微小擾動(dòng)對(duì)預(yù)測(cè)結(jié)果的影響。
最后,我們?cè)谛聰?shù)據(jù)上訓(xùn)練出一個(gè)簡(jiǎn)單模型(通常是線性模型),并使用最重要的特征進(jìn)行預(yù)測(cè)。最重要的特征有不同的決定方法,在指定加入模型解釋中的特征數(shù)量(通常在5到10附近)的前提下,可以
- 選擇在使用復(fù)雜模型進(jìn)行預(yù)測(cè)時(shí)回歸擬合上具有最高權(quán)重的特征
- 運(yùn)用正向選擇,選擇可以提高復(fù)雜模型的預(yù)測(cè)的回歸擬合的變量
- 在復(fù)雜的機(jī)器學(xué)習(xí)模型預(yù)測(cè)的基礎(chǔ)上,選擇正則化的收縮率最小的lasso預(yù)測(cè)擬合的特征
- 使用不多于我們已經(jīng)選擇了的特征的節(jié)點(diǎn)數(shù)量來(lái)構(gòu)建決策樹(shù)
## 創(chuàng)建LIME解釋器
explainer = lime.lime_tabular.LimeTabularExplainer(X_train ,feature_names = features_name, class_names=['0','1'], categorical_features=data_cat_features,
categorical_names=cat_columns, kernel_width=3)
predict_fn_xgb = lambda x: xgb.predict_proba(x).astype(float)
exp = explainer.explain_instance(X_test[2], predict_fn_xgb, num_features=6)
exp.show_in_notebook(show_all=False)
上圖給我們解釋了對(duì)于一個(gè)樣本的預(yù)測(cè)結(jié)果,是哪些特征決定樣本被分類(lèi)到類(lèi)別0,哪些特征決定樣本被分類(lèi)到類(lèi)別1,且具體列出樣本在這些特征的數(shù)值大小。很直觀和明確的解釋為什么模型做這個(gè)決定。
SHAP
Shaply值由美國(guó)洛杉磯加州大學(xué)教授羅伊德·夏普利(Lloyd Shapley)提出,用于解決合作博弈的貢獻(xiàn)和收益分配問(wèn)題。N人合作中,單個(gè)成員的貢獻(xiàn)不一樣,收益分配也應(yīng)該不一樣。理想的分配方式是:貢獻(xiàn)=收益;
貢獻(xiàn)和收益分配是否有可以量化的方法呢?
Shapley方法就是這樣一種方法:Shapley值:?jiǎn)蝹€(gè)成員所得與自己的貢獻(xiàn)相等。
基于Shap值的模型解釋是一種和模型無(wú)關(guān)的方法。如上圖,模型預(yù)測(cè)和Shap值解釋是兩個(gè)并行流程,Shap對(duì)模型預(yù)測(cè)的結(jié)果進(jìn)行解釋。NIPS 論文地址:A Unified Approach to Interpreting Model Predictions,也可以參考這篇博客:One Feature Attribution Method to (Supposedly) Rule Them All: Shapley Values。
原理:一個(gè)特征的shapley value是該特征在所有的特征序列中的平均邊際貢獻(xiàn)。
優(yōu)點(diǎn):
- 解決了多重共線性問(wèn)題;
- 不僅考慮單個(gè)變量的影響,而且考慮變量組的影響,變量之間可能存在協(xié)同效應(yīng);
缺點(diǎn):計(jì)算效率低。
適用范圍:
- 計(jì)算個(gè)體的特征shapley value;
- 所有個(gè)體的每個(gè)特征的shapley value的絕對(duì)值求和或求平均即為整體的特征重要性;
Shap方法的兩大特性
- 特征歸因(收益)一致性:
定義
- 模型改變(A->B),特征x的貢獻(xiàn)不遞減(增加或者保持現(xiàn)狀),則歸因(收益)也不遞減;
特點(diǎn)
- 特征作用越大(小),重要度越高(低),和模型變化無(wú)關(guān);
全局特征一致性
- mean(|Tree SHAP|): Shap值;
- Gain : 特征用于劃分時(shí)所帶來(lái)的訓(xùn)練損失減益的平均值;
- Split Count: 根據(jù)特征用于劃分的次數(shù)計(jì)算重要性;
- Permutation: 將特征的值隨機(jī)排列,用排列前后的模型誤差來(lái)計(jì)算重要性;
局部樣本(Fever=yes,cough=yes的樣本)一致性
- Saabas[5] : 樹(shù)創(chuàng)建完成后,根據(jù)樣本預(yù)測(cè)值,將父節(jié)點(diǎn)和子節(jié)點(diǎn)value的差異,作為父節(jié)點(diǎn)的特征重要性;
- Tree SHAP : 基于Shap值矩陣(樣本數(shù)*特征數(shù)),計(jì)算出Fever和Cough的重要性;
- 特征歸因(收益)可加性:
解釋性方法如果具有特征歸因可加性,特征重要性和模型預(yù)測(cè)值可以通過(guò)特征貢獻(xiàn)的線性組合來(lái)表示。簡(jiǎn)單模型最好的解釋是它本身;復(fù)雜模型,直接進(jìn)行解釋并不容易,需要通過(guò)代理模型來(lái)解釋。接下來(lái)引入代理模型(解釋模型)來(lái)描述特征歸因可加性。
樹(shù)模型Shap值的解
- N為全體特征集合,S為N的一個(gè)排列子集(順序相關(guān))
- 求和第一項(xiàng):排列數(shù)
- 求和第二項(xiàng):對(duì)于任意子集S,特征i的貢獻(xiàn)
- 特征i的shap值可以理解為i的貢獻(xiàn)歸因
詳細(xì)內(nèi)容參考論文。
用Shap值識(shí)別特征交叉
Shap方法計(jì)算兩兩特征交叉影響:
通俗理解:交叉影響=兩個(gè)人合作貢獻(xiàn)增益,減去各自單干的貢獻(xiàn);
單個(gè)特征的貢獻(xiàn)
Shap方法計(jì)算單個(gè)特征的貢獻(xiàn)(剔除交叉影響):
通俗理解:個(gè)人影響=個(gè)人合作貢獻(xiàn),減去其它N-1個(gè)人的貢獻(xiàn);下面還是以收入水平數(shù)據(jù)集進(jìn)行案例分析:
row_to_show = 5
data_for_prediction = X_test.iloc[row_to_show] # use 5 row of data here. Could use multiple rows if desired
data_for_prediction_array = data_for_prediction.values.reshape(1, -1)
# 計(jì)算model的shap值
explainer = shap.TreeExplainer(model)
# 計(jì)算樣本數(shù)據(jù)的shap值
shap_values = explainer.shap_values(data_for_prediction)
shap.initjs()
shap.force_plot(explainer.expected_value[1], shap_values[1], data_for_prediction)
圖形解釋
- Base value :模型在數(shù)據(jù)集上的輸出均值:-0.1524
- Output value:模型在單個(gè)樣本的輸出值:0.68
- 起正向作用的特征:marital_status2、occupation3
- 起負(fù)向作用的特征:capital_gain、education_num
特征解釋
- 解釋Output value(單個(gè)樣本)和Base value(全體樣本Shap平均值)的差異,以及差異是由哪些特征造成的
- 紅色是起正向作用的特征,藍(lán)色是起負(fù)向作用的特征
shap_values_b = explainer.shap_values(X_test)
shap.force_plot(explainer.expected_value[0], shap_values_b[0], X_test, lin)
特征解釋
- 解釋Output value和Base value的差異,以及差異是由哪些特征造成的
Summary Plots:
shap_values = explainer.shap_values(X_test)
shap.summary_plot(shap_values[1], X_test)
圖形解釋
- 每個(gè)點(diǎn)是一個(gè)樣本(人),圖片中包含所有樣本
- X軸:樣本按Shap值排序-
- Y軸:特征按Shap值排序
- 顏色:特征的數(shù)值越大,越紅
特征解釋?zhuān)?/h4>
-
martial_status2這個(gè)特征最重要,且值越大,收入會(huì)相對(duì)更高,到達(dá)一定峰值,會(huì)明顯下降
-
年齡也是影響結(jié)果的重要特征,年齡小收入普遍低,但年齡到達(dá)一定程度,并不會(huì)增加收入,存在年齡小,收入高的人群。
-
收入水平和capital_gain大致呈正相關(guān)。
shap.summary_plot(shap_values[1],X_test, plot_typ)
shap.summary_plot(shap_values[1],X_test, plot_typ)
上圖是特征重要性圖譜,由上向下重要性依次減弱。
shap_values = explainer.shap_values(df)
shap.dependence_plot('age', shap_values[1], df, interaction_inde)
圖形解釋:
- X軸:age
- Y軸(左):一個(gè)樣本的age對(duì)應(yīng)的Shap值
- 顏色:capital_gain越大越紅
特征解釋:
- 排除所有特征的影響,描述age和capital_gain的關(guān)系。
- 年齡大的人更趨向于有大的資本收益,小部分年輕人有大的資本收益。
RETAIN
概述
論文使用稱(chēng)為RETAIN的建模策略解決了這個(gè)限制,這是一種兩級(jí)神經(jīng)網(wǎng)絡(luò)順序數(shù)據(jù)的注意模型,提供對(duì)預(yù)測(cè)結(jié)果的詳細(xì)解釋保持與RNN相當(dāng)?shù)念A(yù)測(cè)精度。為此,RETAIN依賴(lài)于關(guān)注機(jī)制被建模以表示在遭遇期間醫(yī)生的行為。一個(gè)區(qū)別RETAIN的功能(參見(jiàn)圖1)是利用注意力生成來(lái)利用序列信息機(jī)制,同時(shí)學(xué)習(xí)可解釋的表示。并模仿醫(yī)生的行為,RETAIN以相反的時(shí)間順序檢查患者的過(guò)去訪問(wèn),從而促進(jìn)更穩(wěn)定的注意后代。因此,RETAIN會(huì)識(shí)別最有意義的訪問(wèn)次數(shù)并量化訪問(wèn)量有助于預(yù)測(cè)的功能。
模型使用兩套權(quán)重,一套是visit-level attention ,另外一套是variable-level attention。使用兩個(gè)RNN網(wǎng)絡(luò)分別產(chǎn)生。
Step1:使用線性embedding
Step2:產(chǎn)生visit-level attention。其中輸入RNN中的數(shù)據(jù)采用時(shí)間逆序輸入。對(duì)于稀疏的attention,使用Sparsemax而不是Softmax。
Step3:產(chǎn)生variable-levelattention,其中輸入RNN中的數(shù)據(jù)采用時(shí)間逆序輸入。
Step4:根據(jù)以上兩步生成的attentionweight,生成context vector。Ci表示病人第i次visit。
Step5:根據(jù)Context Vector生成預(yù)測(cè)結(jié)果。
LRP
逐層相關(guān)性傳播(LRP)是一種通過(guò)在神經(jīng)網(wǎng)絡(luò)中運(yùn)行反向傳遞來(lái)識(shí)別重要像素的方法。向后傳遞是保守的相關(guān)再分配過(guò)程,其中對(duì)較高層貢獻(xiàn)最大的神經(jīng)元從其獲得最大相關(guān)性。LRP程序如下圖所示。
該方法可以在大多數(shù)編程語(yǔ)言中容易地實(shí)現(xiàn)并且集成到現(xiàn)有的神經(jīng)網(wǎng)絡(luò)框架中。當(dāng)應(yīng)用于深度ReLU網(wǎng)絡(luò)時(shí),LRP可以被理解為預(yù)測(cè)的深度泰勒分解。
這里有如何實(shí)現(xiàn)LRP用于解釋深度模型的代碼教程,有興趣可以動(dòng)手實(shí)現(xiàn),用于解釋自己的深度模型。
更多騰訊AI相關(guān)技術(shù)干貨,請(qǐng)關(guān)注專(zhuān)欄騰訊技術(shù)工程
審核編輯 黃昊宇
-
模型
+關(guān)注
關(guān)注
1文章
3464瀏覽量
49837 -
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8481瀏覽量
133871
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
一種實(shí)時(shí)多線程VSLAM框架vS-Graphs介紹

大模型領(lǐng)域常用名詞解釋(近100個(gè))

AI大模型在汽車(chē)應(yīng)用中的推理、降本與可解釋性研究

機(jī)器學(xué)習(xí)模型市場(chǎng)前景如何
小白學(xué)解釋性AI:從機(jī)器學(xué)習(xí)到大模型

《具身智能機(jī)器人系統(tǒng)》第7-9章閱讀心得之具身智能機(jī)器人與大模型
一種基于因果路徑的層次圖卷積注意力網(wǎng)絡(luò)

評(píng)論