1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        2W字干貨,機(jī)器學(xué)習(xí)模型可解釋性!

        共 26457字,需瀏覽 53分鐘

         ·

        2024-05-31 09:02


        轉(zhuǎn)自:pythonic生物人

        導(dǎo)讀:模型可解釋性方面的研究,在近兩年的科研會(huì)議上成為關(guān)注熱點(diǎn),因?yàn)榇蠹也粌H僅滿足于模型的效果,更對(duì)模型效果的原因產(chǎn)生更多的思考,這樣的思考有助于模型和特征的優(yōu)化,更能夠幫助更好的理解模型本身和提升模型服務(wù)質(zhì)量。本文對(duì)機(jī)器學(xué)習(xí)模型可解釋性相關(guān)資料匯總 survey。

        ——綜述——

        機(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)槿绱?,它無(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)該包括模型理解和模型解釋,下面是幾個(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)確性、保真性、可用性、可靠性,魯棒性、通用性等。

        人性化解釋?zhuā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)目很少成功?,F(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è)最重要的方面解釋如下:

        是什么驅(qū)動(dòng)了模型的預(yù)測(cè)?我們應(yīng)該能夠查詢我們的模型并找出潛在的特征交互,以了解哪些特征在模型的決策策略中可能是重要的。這確保了模型的公平性。
        為什么模型會(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)在還是事后??jī)?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ù)撊蚝偷胤降慕忉尅?/span>

        可解釋性的范圍

        如何定義可解釋性的范圍和界限?一些有用的方面可以是模型的透明度,公平性和責(zé)任性。全局和局部模型解釋是定義模型解釋范圍的明確方法。

        全局可解釋?zhuān)?/strong>就是試圖理解 "模型如何進(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í)。

        局部解釋?zhuān)?/strong>試圖理解 "為什么模型為單個(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)確的解釋而不是全局解釋。局部可解釋模型 - 不可知解釋 ( LIME ) 框架是一種很好的方法,可用于模型不可知的局部解釋。我們可以結(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í)的人群中。

        ——方法——

        模型效果評(píng)估指標(biāo)圖

        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è)蘇格蘭人所處位置的天氣??赡芴K格蘭人通常而言要比英格蘭人幸福。所以我們其實(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ù)生成可縮放圖的建議。

        https://www.sas.com/content/dam/SAS/support/en/sas-global-forum-proceedings/2018/1950-2018.pdf

        LIME

        局部可解釋不可知模型 ( LIME ) 是一種算法,它提供了一種新穎的技術(shù),以可解釋和可信任的方式解釋任何預(yù)測(cè)模型的結(jié)果。它的工作原理是圍繞想要解釋的預(yù)測(cè)在本地訓(xùn)練可解釋的模型。這個(gè)工作發(fā)表于2016年 KDD 的論文。工具學(xué)習(xí)地址。

        http://sameersingh.org/files/papers/lime-kdd16.pdf

        https://lime-ml.readthedocs.io/en/latest/lime.html

        流程:

        訓(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 值 ( 單個(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, link="logit")

        特征解釋

        解釋 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)?/span>

        martial_status2 這個(gè)特征最重要,且值越大,收入會(huì)相對(duì)更高,到達(dá)一定峰值,會(huì)明顯下降。

        年齡也是影響結(jié)果的重要特征,年齡小收入普遍低,但年齡到達(dá)一定程度,并不會(huì)增加收入,存在年齡小,收入高的人群。

        收入水平和 capital_gain 大致呈正相關(guān)。

        shap.summary_plot(shap_values[1],X_test, plot_type="bar")

        上圖是特征重要性圖譜,由上向下重要性依次減弱。

        shap_values = explainer.shap_values(df)
        shap.dependence_plot('age', shap_values[1], df, interaction_index="capital_gain")

        圖形解釋?zhuān)?/span>

        ① 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),用于解釋自己的深度模型。

        ——參考文獻(xiàn)——

        1. Interpretable Machine Learning
        https://christophm.github.io/interpretable-ml-book/pdp.html
        2. Partial dependence ——集成樹(shù)的可解析性
        https://zhuanlan.zhihu.com/p/40356430
        3. Machine Learning for Insights Challenge
        https://zhuanlan.zhihu.com/p/45898896
        4. https://yyqing.me/post/2018/2018-09-25-kaggle-model-insights
        5. http://rstudio-pubs-static.s3.amazonaws.com/283647_c3ab1ccee95a403ebe3d276599a85ab8.html
        6. 《通向人類(lèi)可理解、可解釋的人工智能》
        7. https://github.com/lopusz/awesome-interpretable-machine-learning
        8. https://github.com/jphall663/awesome-machine-learning-interpretability
        9. https://github.com/Henrilin28/awesome-Interpretable-ML
        10. http://xiangruix.com/2018/07/31/lime/
        11. https://www.jianshu.com/p/b52efa66154e
        12. https://zhuanlan.zhihu.com/p/32891505
        13. https://suensummit.github.io/intro-lime/#1
        14. https://www.oreilly.com/learning/introduction-to-local-interpretable-model-agnostic-explanations-lime
        15. https://github.com/slundberg/shap
        16. http://km.oa.com/group/22630/articles/show/380452?kmref=search&from_page=1&no=1

        推薦閱讀  點(diǎn)擊標(biāo)題可跳轉(zhuǎn)


              


        推薦小碼哥新書(shū)!

        小碼哥新手《Python + Excel/Word/PPT一本通》正式上市了!書(shū)中詳細(xì)介紹了零基礎(chǔ)用Python實(shí)現(xiàn)辦公自動(dòng)化的各方面知識(shí),提高職場(chǎng)辦公效率,附贈(zèng)PPT/源代碼/重點(diǎn)教學(xué)視頻講解和作者VIP一對(duì)一指導(dǎo)。


        內(nèi)容介紹《Python + Excel/Word/PPT 一本通》內(nèi)容介紹



        掃碼購(gòu)買(mǎi)



        ▼點(diǎn)擊閱讀原文,了解本書(shū)詳情

        瀏覽 46
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

          <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            伦理片免费网站 | 亲女稚嫩h乱亲女 | 伊人在线久久 | 匈牙利xxxx性hd极品 | 蜜芽成人在线视频 | 亚欧精品久久久久久久久久久 | 可以直接看的AV网站 | 国产不卡在线视频 | 美女航空毛片在线播放免费 | 日韩毛片在线看 |