想要成為一名優(yōu)秀的數(shù)據(jù)科學家,必須要掌握一些重要的概念。如果你不清楚這些概念,那么你將只是一個會運算模型的普通技術(shù)數(shù)據(jù)科學家,可以輕易被自動機器學習技術(shù)(AutoML)取代。一個優(yōu)秀的數(shù)據(jù)科學家無疑在項目中是有價值的,即使項目本身不要求最先進的研究。 數(shù)據(jù)泄漏 根據(jù)Kaggle的定義,數(shù)據(jù)泄漏就是在訓練數(shù)據(jù)中意外創(chuàng)建的額外信息,可以讓模型做出一些極好的預測。簡單來說,就是任何可以使模型在研究中表現(xiàn)得比在生產(chǎn)中更好的信息。 有一百萬種不同類型的數(shù)據(jù)泄漏,有時是模型中的缺陷導致的(如將標簽作為特征輸入),有時是創(chuàng)建數(shù)據(jù)集時出現(xiàn)的錯誤導致的(如創(chuàng)建一個包含未來信息的特征),有時則是由業(yè)務邏輯中的缺陷導致(如使用的特征無法用于生產(chǎn))。 數(shù)據(jù)泄漏最危險的一點是你很難發(fā)現(xiàn)它。有時候,測試集準確度有90%,而生產(chǎn)準確度只有60%,這時候你才能發(fā)現(xiàn)數(shù)據(jù)泄露。 選擇性偏差 選擇性偏差是指在選擇個人、群體或數(shù)據(jù)進行分析時,由于樣本選擇的非隨機性而導致的偏差。例如,你要通過問卷來構(gòu)建訓練數(shù)據(jù)集,然后把問卷發(fā)布在Facebook頁面上,那么填這份問卷的人可能與你年齡相仿,和你在同一個國家,甚至同一城市,社會經(jīng)濟屬性也與你相同。如果你只用在Facebook上得到的這些數(shù)據(jù)建立模型,當模型投入生產(chǎn)時,它需要面向更廣泛的人群,這時適用于你朋友的模型就不一定適用于所有人了。 有時選擇性偏差比數(shù)據(jù)泄漏更難處理,因為如果你能監(jiān)控所有人群的標簽,你就會把這些標簽用于訓練數(shù)據(jù)。選擇性偏差也更難修正,你可以根據(jù)整體人群重新調(diào)整訓練集的權(quán)重,或者刪除一些讓訓練數(shù)據(jù)集與整體不同的特征,但是你無法評估這些方法是否有效。 生產(chǎn)反饋回路 許多機器學習應用程序的生產(chǎn)流程是這樣的:機器學習模型對用戶行為進行預測,系統(tǒng)根據(jù)模型預測采取行動,用戶對系統(tǒng)作出回應,模型再根據(jù)用戶行為進行再訓練。 在這種反饋回路中,模型對其未來訓練集的影響可能會導致一些偏差。例如,在推薦引擎中,我們根據(jù)用戶點擊項目次數(shù)對項目進行排序,但是如果先把一個項目列為第一,那么它的點擊概率就會比排名第十的項目要高。這樣即使有一些項目對用戶來說更好,我們的模型也永遠分析不出來。 我們通常用數(shù)據(jù)探索來解決這個問題。雖然模型上某項目的點擊概率分數(shù)很低,但仍將該項目排在前列,或者根據(jù)之前的項目排列順序,重新調(diào)節(jié)模型的標簽。如果用戶在第二頁點擊了一個項目,則表明它比點擊率第一的項目的指示性更強。 另一個例子是預測客戶是否會還貸。我們不知道如果通過了本要拒絕的貸款申請會怎么樣,這樣,我們就在模型的下一個訓練數(shù)據(jù)集中制造了偏差。 特殊交叉驗證技術(shù) 有時候僅使用隨機交叉驗證是不夠的,因為生產(chǎn)數(shù)據(jù)會和研究數(shù)據(jù)有出入,因此我們需要使用特殊的交叉驗證方法。例如在時間序列數(shù)據(jù)集中,由于自然或特殊情況,數(shù)據(jù)分布往往會發(fā)生變化。如果我們使用隨機交叉驗證,訓練數(shù)據(jù)和測試數(shù)據(jù)分布會是一致的,我們無法知道模型是否可以成功應對這種數(shù)據(jù)分布變化。 因此,在時間序列中,我們需要使用滑動窗口交叉驗證,而不是隨機驗證。另一種特殊情況是當你有分組數(shù)據(jù)時,例如在醫(yī)學臨床試驗中,你有很多同一個病人在臨床試驗中的樣本數(shù)據(jù)。為了確保模型同樣適用于新的數(shù)據(jù)組,我們需要使用組交叉驗證,即每個折疊包含幾個組的所有樣本數(shù)據(jù),在測試時,將其應用于新的組進行測試。 選擇“正確”的評價指標 這雖有點老生常談了,但現(xiàn)實中有時候還是很難做到。模型評估方式應與用例的業(yè)務需求高度相關(guān)。比如說我為一家廣告科技公司做的一個項目,我們要做一個競標人,讓其決定要在廣告曝光方面花多少錢。我們做法是建立一個可以預測廣告曝光前后公司可以賺多少錢的模型,然后根據(jù)預測決定競標價。 在這個模型中,均方誤差(MSE)不是一個好的評估指標,雖然它可能是應用最廣泛的回歸模型度量標準。均方誤差會給大的異常值賦予更大的權(quán)重。在這個模型中,當公司以很高的價格出售廣告曝光時,大多數(shù)重大錯誤表現(xiàn)異常。用均方誤差幾乎無法預測異常情況,所以即使出現(xiàn)異常,其他人也還是很可能會給出與其他曝光大致相同的價。如果我們的預測值較低,有時候異常情況可以不計。但是,如果我們出價太高,就會損失很多錢。 另一個例子是排序模型。雖然準確度和均方誤差顯然不適用于業(yè)務用例,但不同的排序度量標準適用不同的用例。如過你只向用戶顯示了最好的K項目,那么評估標準應是重覽K項目。如果你向用戶展示了一系列的排列項目,以及項目降級的概率,那么歸一化折損累積增益(NDCG)是一個非常好的衡量標準。 從簡單的模型開始 使用新的深度學習的CNN(卷積神經(jīng)網(wǎng)絡),RNN(循環(huán)神經(jīng)網(wǎng)絡),Gans(生成對抗網(wǎng)絡)的剩余變壓器 Attention,還有一些Buzzwords的網(wǎng)絡區(qū)塊鏈層(Cyber Blockchain)是很酷,非???,但這不是一個開始項目的好方式。 從只有幾個特征的簡單模型開始會更有利。這在調(diào)試模型,查找缺陷或數(shù)據(jù)泄漏時更簡單。你可以更好地理解模型的預測,知道怎樣使它表現(xiàn)得更好,以及研究什么更有前景??床坏綌?shù)據(jù)的信號,你可以很快地轉(zhuǎn)到下一個項目,不用花費很多時間。 簡單模型最大的益處可能是,有時候簡單的模型正好可以滿足你的業(yè)務需求,可以省去你做大量研究的功夫,節(jié)省做GPU(圖形處理器)的時間。 不要用epsilon模型 在Kaggle的模型競賽中,獲獎模型通常集30多種模型于一身,有數(shù)百個特征,他們往往只比一個好模型或者綜合兩三個簡單模型的集合模型要高那么0.01分。這些獲獎的復雜模型被稱為epsilon模型,因為它們只讓模型性能好了一點點,但卻大大增加了生產(chǎn)系統(tǒng)的復雜性。每個模型甚至每個特性都可能有潛在的缺陷,在訓練和推理上,復雜模型要求更多的處理時間,還要求更大的內(nèi)存。在權(quán)衡由模型復雜性和性能而導致的成本時,除了模型的準確性與收益高度相關(guān)的特殊情況外,應該選用更簡單的模型。 監(jiān)控生產(chǎn)中的模型 大多數(shù)實際應用程序的數(shù)據(jù)分布會隨著業(yè)務決策、用戶行為的變化以及模型引起的變化等而改變。這意味著模型的性能可能會隨著時間的推移而下降。 為了阻止這一現(xiàn)象的發(fā)生,我們需要對模型的性能進行監(jiān)控,對模型進行重新訓練,在性能急劇下降的時候甚至要再回到研究階段。但很多時候我們沒有新的標簽(例如用機械土耳其人(Mechanical Turk)標記訓練集),或者很長時間以后才發(fā)現(xiàn)標簽(例如預測一家企業(yè)是否會歸還其5年貸款),在這種情況下,我們應該監(jiān)控訓練數(shù)據(jù)集和生產(chǎn)數(shù)據(jù)之間的數(shù)據(jù)變化,甚至要監(jiān)控模型預測概率分布的變化。 編譯組:呂淋、胡婷 相關(guān)鏈接: https:///top-examples-of-why-data-science-is-not-just-fit-predict-ce7a13ef7663 |
|