程式設計師的 8 點技術早餐
編輯|小智
寫在前面
有資料後就是用統計和機器學習的方法去解決問題得出問題的最優解,這步我們叫 inference,不同於學術研究,在實際應用中我們會將多個模型進行組合使用取長補短從而得到更好的效果,稍後我會結合例項說明,
在有了 inference 結果之後,實際應用中不能只給乙個**結果,而是要結合資料對模型的**結果進行更深入的分析和解釋也就是 interpretation,這也是最近兩年在深度學習之後比較熱門的方向,因為深度學習雖然在整體的資料結果上取得了很不錯的效果,但偶爾會在個別樣本上給出令人難以理解的結果,有沒有什麼方法對深度學習這樣的複雜模型進行解釋,我將在後面介紹一種對黑盒模型進行解釋的方法。
整合 integration
上面的方法編碼後,每個使用者特徵的維度是很高的,這意味著實際使用中需要足夠多的訓練樣本否則就容易過擬合,但實際使用中用來訓練的使用者集大多數時候是非常有限的,要讓演算法支援較低的樣本輸入,必須要對初步編碼後的使用者特徵向量做降維,現在有基於深度學習的 auto-encoder 的方法,在實際使用中我們發現它的效果比傳統的 pca 好很多,降維的另乙個好處是對傳統的標籤進行了壓縮和隱藏,壓縮完成的向量不影響使用者相似度的計算,但維度上比原始的向量小了很多,每一維的數值並沒有實際的物理含義從而保護了使用者隱私,便於在公司內進行共享使用。
推斷 inference
在機器學習中常用的模型整合方法有 ensemble 和 jointtrain,lookalike 中比較通用的方法是左圖這種先用 gbdt 學習特徵再傳給 lr,fm 或 dnn 的方法,之後 google 用了這種對 lr 和 dnn 進行聯合訓練的 wide&deep 模型。如果人工特徵設計得好是可以結合兩者優點取得非常好的效果的。我們系統實際使用的是右圖這種 ensemble 的方法,因為 gbdt 是一種基於 boosting 的學習框架,那麼理論上它可以 boost 任何模型,當然包括 dnn,這樣就可以將這兩種模型的優點結合起來了,他的訓練方法是先訓乙個 dnn,這裡不需要用太多的層數相當於用粗的筆刷去完成大致的輪廓,然後用 gbdt 進行 boosting,這相當於用更細的筆刷去刻畫細節。
這張圖是流失**和流失分析的流程圖,我們使用剛流失的使用者在當前的使用者上面做 lookalike 就可以得到正在流失或即將流失的使用者,在流失**之後的流失分析是很必要的。因為流失有很多種情況,不同情況採取的策略是不同的。那麼怎麼做這個流失分析呢?這就是我們下面要討論的問題。
解釋 interpretation
那麼有沒有一種方法可以同時得到比較高的精確度和可解釋性呢?這其實是個魚和熊掌的問題,因為模型的能力越強就越複雜越不容易解釋,右上這個圖說明了這種情況,橫軸是模型的精確度,縱軸是模型的可解釋性,可以看到可解釋性很好的線性模型和決策樹模型精度並不高,精確度很高的神經網路和深度學習解釋性最差。
但是這樣就有另外乙個問題,要在這個樣本區域性進行擬合必須在這個樣本周圍有足夠多的訓練樣本,lime 的做法是對樣本的某些特徵進行一些擾動產生一些新的樣本,再用之前的高精度模型對這些樣本進行**。這樣就產生了很多由高精度模型標註的樣本,而且我們可以計算出每個生成樣本和我們要解釋的樣本之間的距離,這時就可以用可解釋的線性模型比如 lasso 對這個樣本的區域性進行擬合和解釋了。
調查 investigation
之所以叫 abtest 是因為在實驗時會將實驗的使用者分流成不使用策略的 control 和使用策略的 treatment 兩組使用者進行對比觀察,這裡有很多技術細節比如在多個實驗並行進行時的正交分層模型,對 control 和 treatment 的同質校驗,結果的顯著性分析等,有很多**討論這些問題。我這裡重點和大家一起交流一下在社交網路中的一些問題和改進方法。
寫在最後
作者介紹
今日薦文
人工智慧機器學習
機器學習是從資料中自動分析獲得規律 模型 並利用規律對未知資料進行 資料處理 首先將所有資料放在一起,然後將其順序打亂。由於順序不是判斷酒水的依據,我們並不期望順序影響到模型學習到的內容。換言之,我們判斷一種酒是紅的還是啤的,並不需要知道前一種或是接下來有什麼酒出現。這時,可以著手繪出視覺化的資料分...
人工智慧 人工智慧與人類智慧型的關係
1.基本概念界定 1.1人工智慧 人工智慧是在20世紀中期以後產生的學科,人工智慧就是用機器模擬人類的智慧型活動,從而用機器代替人類行使某些方面的職能。人工智慧是通過探索人的感覺和思維的規律來模擬人的智慧型活動,電子計算機是人工智慧的媒介和基礎。阿倫 圖靈說 如果一台計算機能騙過人,使人相信它是人而...
深度學習與人工智慧革命 part III
本篇是系列部落格的第 三部分,如果沒有看過 前面兩部分內容的讀者建議閱讀一下。在第i部分內容中,主要是講解人工智慧的歷史以及它現在高速發展的原因 在第ii部分內容中,將討論一下人工智慧 機器學習和深度學習之間的區別 在今天的第iii部分內容中,將深入研究深度學習以及在為新專案選擇資料庫時需要評估的關...