1. 程式人生 > >如何理解資料科學的中的資料洩露(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. 必須重視因果性

我們再把討論往前推一步:大資料,是要相關性,還是因果性?

某資料應用學院專門組織過討論,集中批判一本暢銷書《大資料時代》。這本書的主要觀點就是,在大資料時代,要放寬對因果性的要求,充分利用相關性去挖掘資料的價值。我們上面的案例分析再一次證明,這樣的觀點是危險的。

而且,在資料科學家的Skillset中,為什麼除了計算機技能統計分析外,還要加一個“行業知識”?這其實是要求資料科學家能夠利用行業知識來判斷資料模型中的因果關係是否有價值,還是落腳到因果關係上。

5、令一種直觀的理解

資料洩露就是說用了不該用的資料,比如

  1. 在訓練模型時,利用了測試集的資料、資訊
  2. 在當前使用了未來的資料
  3. 在交叉驗證進行調參時,使用了驗證集的資訊參與模型建立

具體說下第三點,比如對特徵進行標準化,正確的方法應該是在訓練集上標準化,然後應用到驗證集上,而非先標準化,再劃分驗證集。即:標準化為,(數值-均值)/標準差,這個“均值”和“標準差”應該是訓練集的“均值”和“標準差”。“數值”是測試集裡的數值。