基于业务解释的特征重要性计算
總第220篇/張俊紅
如果有學過或者用過一些算法的同學,應該對特征重要性這個概念并不陌生。算法一般都是用來做預測的,而預測也不是憑空發生的,是基于一些已有的變量(x)進行預測的,那在眾多的x中每個x對最終的預測貢獻的信息具體是多少呢?比如要預測明天是否會下雨,第一個x是明天的空氣濕度,第二個x是明天天晴或天陰,第三個x是明天的溫度,第四個x是明天是星期幾,在預測明天是否會下雨這件事上這四個不同的x對預測的影響肯定是不一樣的,我們把這個影響大小稱為特征重要性。
那特征重要性和基于業務解釋的特征重要性有什么區別呢?是經常聽到很多做數據分析的人說學算法是為了更好的做數據分析,為了更好的推進業務。為了推進業務就需要你的結果是可解釋的,你不能拿著一個黑盒模型告訴業務說,模型結果是明天會下雨,至于為什么,不知道。這肯定是不可以的,所以我們需要對我們的結果進行解釋。
關于特征重要性,不同模型的計算方法略有不同,但是一個總體大原則就是誰對模型預測結果準確度貢獻越大,誰的重要性就高。很多模型都會自帶feature_importance屬性,可以得出每個特征的重要性得分。
特征重要性得分讓我們知道了不同特征之間的重要性情況,除此之外,我們還想知道在其他特征不變的情況,某一個特征內部重要性分布是什么樣的。這個也是有現成方法,叫做部分依賴圖,英文全稱是Partial Dependence Plots,簡稱PDP。
圖片來源于sklearn官網上圖中第一行三張圖分別表示收入中位數、平均入住率、房屋年齡對房價中位數的影響程度,可以看到有線性正向,反比例負向,基本無關三種趨勢。右下角的圖表反映了兩個特征之間的相互作用。
講完了特征重要和特征內部各取值對預測影響關系以外,我們再來介紹我們今天的主角——Shapley value值。
Shapley value翻譯過來表示夏普利值,是用來說明自己的收入和付出是等效的,是一種分配方式。有一個經典的財產分配的例子:
假定現在有100萬財產,這100萬需要分配給ABC三個人。該怎么分配呢?可以平均分配,也可以按照每個人的權力大小進行分配,已知A擁有50%的票力,b擁有40%的票力,c擁有10%的票力。前面這兩種方法雖然可以對財產進行分配,但是針對某個人分到的財產不是最多的。所以通過投票來決定如何分配,規則規定,當超過50%的票認可了某種方案時,才能獲得整個財產,否則三人將一無所獲。
c可以提出這樣的方案,a:70%,b:0,c:30%。這個方案能被a、c接受,因為對a、c來說這是一個比按票力分配有明顯改進的方案,盡管b被排除出去,但是a、c的票力構成大多數(60%)。
在這樣的情況下,b會向a提出這樣一個方案,a:80%,b20%,c:0。此時a和b所得均比剛才c提出的方案要好,但c成了一無所有,但a、b票力綜合構成多數(90%)……這樣的過程可以一直進行下去。
最終的分配結果會是怎樣的呢?夏普里提出了一種計算權利的度量。他給出了一個衡量博弈方先驗實力的方法,根據他的理論求的的聯盟者的先驗實力被稱之為夏普里值。
夏普里值是這樣的一個值:在各種可能的聯盟次序下,參與者對聯盟的邊際貢獻之和除以各種可能的聯盟組合。
關于夏普利值更多的內容可以查閱:
https://wiki.mbalib.com/wiki/%E5%A4%8F%E6%99%AE%E5%88%A9%E5%80%BC
以上是關于Shapley value比較學術方面的介紹,那如果應用到模型中被用來說明特征重要性時應該如何計算呢?
針對每一個特征(x),計算該特征下面每一個樣本取值對預測結果的影響程度,然后對所有樣本的影響程度求均值,就是這個特征的對預測結果的整體影響程度。
如下圖所示,隨著RM的增加,RM的SHAP Value值也是增加的:
下圖是把模型中用到的所有特征的重要性全部繪制出來了,每一行代表一個特征,顏色代表特征的取值大小,顏色越紅說明這個特征的值越大,橫軸代表
特征取值對預測結果重要性的影響:
下圖是把每個特征內每個樣本對預測結果的影響程度取均值,得到每個特征的重要性:
關于SHAP Value的計算在Python中有現成的庫可以使用,github鏈接如下:
https://github.com/slundberg/shap
以上就是關于基于業務解釋的特征重要性計算方法。
總結
以上是生活随笔為你收集整理的基于业务解释的特征重要性计算的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 抖音牵狗情侣头像制作方法是什么 抖音牵狗
- 下一篇: 试着想点不一样的