越來越多的資料愛好者把注意力放在了資料競賽上,像kaggle資料競賽。這類資料競賽中,有時會遇到data leakage。而大部分人對data leakage的概念理解都是錯誤的。這次,我們來梳理一下data leakage,希望能讓大家對資料中的因果關係更加重視。
--陳曉理
資料科學競賽中有時會出現這樣的奇特景觀:某只隊伍,靠著對極個別feature的充分利用,立即將對手超越,成功霸佔冠軍位置,而且與第二名的差距遠超第二名與第十名的差距
。然而,這些feature卻不是在因果關係上順利解釋**值的『因』,反而是**值的『果』
。
1. data leakage定義
存在和利用這種倒『因』為『果』的feature的現象,叫資料競賽中的
data leakage
。
這裡的data leakage 跟其他場合說的
資料安全資料洩漏完全不一樣。從字面上理解,我們說的data leakage不是資料洩漏,
而是因果關係的紕漏,是由於資料準備過程中出現的失誤,使模型沿著有紕漏的,甚至是
顛倒的因果關係
進行**,但得到極好的**結果。
2. data leakage案例
data leakage 在資料科學競賽中時常發生。
informs 2010 data mining challenge (**患者是否有肺炎),kaggle裡面的the ijcnn 2011 social network challenge (**人們在社交網路中的關係型別),已經男性前列腺癌資料中,都存在不同程度的data leakage。
案例1
在男性前列腺癌資料中,有個feature叫prossug,代表著這個患者是否接受過前列腺的手術,這個feature很難說是病人患前列腺癌的『
原因』(患心臟病的原因是接受過心臟手術?),而更像是乙個
標記,
當然與病人是否患有前列腺癌極度相關。依靠著這樣的feature訓練出來的模型,肯定能夠得到很好的**結果,但對實際了解男性前列腺癌的成因,沒有一點幫助。
data leakage不僅在競賽中會發生,在實際工作中也會出現。
案例2
chris老師就舉過乙個非常經典的例子。在處理電信使用者流失的時候,用原有的資料集輕輕鬆鬆就可以把auc達到0.99以上。這讓人非常警惕。於是chris老師仔細檢視了一下模型和資料,原來資料中有乙個權重極高的feature是「3個月內的繳費紀錄」。很多流失使用者的賬戶內,這個feature的值是0。再進一步,他跟會計核實了一下,在會計記賬中,這個feature 代表的是使用者已經流失後的三個月的繳費紀錄,那肯定就是0了。
這是典型的因果關係顛倒。
3. data leakage的原因
以此我們可以看出,data leakage 基本都是在準備資料的時候,或者資料取樣的時候出了問題,誤將與結果直接相關的feature納入了資料集。這樣的紕漏,比較難以發現。
這真是讓人歡喜讓人憂。
競賽選手們肯定希望自己能夠找到data leakage, 這樣排名就可以大幅度提公升。但對於競賽主辦方,或者實際工作中的資料科學家,則要千方百計識別data leakage,要不然比賽會被引入歧途,還會影響日常工作質量。
4. 必須重視因果性
我們再把討論往前推一步:大資料,
是要相關性,還是因果性?
《大資料時代》是本大毒草 —— professor m from computer science in university of michigan
資料應用學院專門組織過討論,集中批判一本暢銷書《大資料時代》。這本書的主要觀點就是,在大資料時代,要放寬對因果性的要求,充分利用相關性去挖掘資料的價值。
我們上面的案例分析再一次證明,這樣的觀點是危險的。
而且,在資料科學家的skillset中,為什麼除了計算機技能
,統計分析
外,還要加乙個「
行業知識
」?這其實是要求資料科學家能夠利用行業知識來判斷
資料模型中的因果關係是否有價值
,還是落腳到因果關係上。
再論C 中的const和引用
今天給大家分享一下這段時間學習c 的總結學習 c 裡面的const關鍵字和引用。一 const關鍵字的總結 1 const什麼時候為唯讀變數,什麼時候又是常量呢?1 const常量的判別規則 2 const引用的型別與初始化變數的型別 版本一 include int main 輸出結果 root t...
資料科學中的開源軟體工具
本文在creative commons許可證下發布。寫此系列文的目的是 資料領域全棧的解決方案,借助於開源軟體來擺脫傳統廠商的綁架,而放眼國內的討論也不是非常多,人云亦云的比較多。資料科學,data scientist 自2008年dj patial和 jeff hammerbacher把他們在li...
python用於資料科學中的實用函式(一)
1.datapanda pandas.read csv path,sep engine python datasets datapanda.values 返回資料型別為二維陣列 datas pandas.dataframe datasets datas.to csv csvpath,mode a h...