天天看點

漫畫趣解大資料算法模組化:買瓜

大資料開發如何轉型算法?

算法模組化主要做什麼?調參為什麼玄學?

如何通俗了解算法模組化過程。。

夕陽下的村東頭,有一人來買瓜。

1 引子(買瓜)

忙碌的一天剛剛結束,村裡的小張就匆匆的騎上車,準備買個西瓜解暑。

漫畫趣解大資料算法模組化:買瓜

天氣可真熱,等會一定要挑個​

​又甜​

​、​

​又熟​

​的大西瓜。

心裡嘀咕着,小張慢慢的來到了村東頭水果攤前(這裡的瓜最好)。

漫畫趣解大資料算法模組化:買瓜

老闆,你這西瓜保熟嗎?給我挑個甜的、熟點的。

放心好了,看看這​

​瓜紋​

​和​

​瓜蒂​

​,而且我都是​

​自家種​

​的,肯定保熟。

漫畫趣解大資料算法模組化:買瓜

小張心裡直打鼓: 瓜蒂​

​蜷曲​

​、瓜紋​

​青綠​

​,看起來貌似是好瓜。但是之前按這标準買的瓜,吃起來并不甜。

回想起父輩的挑瓜經驗:敲聲​

​濁響​

​的才是好瓜。于是就再敲了敲幾個大瓜,嗯,​

​聲音​

​倒是沒錯。

漫畫趣解大資料算法模組化:買瓜

保險起見,還是貨比三家靠譜。小張走向其他​

​店鋪​

​,又挑了不同​

​種類​

​和​

​大小​

​的西瓜,并試吃了一些。

漫畫趣解大資料算法模組化:買瓜

經過了幾分鐘斟酌,在衆老闆的欣慰目光中,小張終于選好了一個皮​

​薄​

​、顔色​

​青綠​

​、根蒂​

​卷​

​、敲擊會發出​

​濁響​

​的大瓜。

現場切開嘗了下,味道很甜。

漫畫趣解大資料算法模組化:買瓜

開心的小張付完錢,嘴裡哼着小調,騎行而去。。

2 算法模組化到底在幹什麼

小張最後買到了好瓜,好奇的我們先來圍觀一下他的買瓜過程 :

  • 自己想買個又甜又熟的大西瓜
  • 篩選西瓜的

    顔色

    瓜蒂

    聲音

    種類

    大小

  • 根據總結的

    選瓜方法

    在不同的

    瓜攤

    中挑選試吃
  • 綜合對比,選出了

    最好的

    一個瓜,實作了西瓜自由
大白話概括買瓜流程

先确定一個​

​預期目标​

​(買到好瓜)和選瓜​

​環境​

​(村東頭);其次總結選瓜​

​方法​

​(父輩經驗)和選瓜​

​特征​

​(顔色、瓜蒂等);最後根據這套​

​方法論​

​ + ​

​實戰​

​,貨比三家,對比得到了最好的​

​預期結果​

​(一個好瓜)。

漫畫趣解大資料算法模組化:買瓜

故事中的小張憑借多年挑瓜​

​經驗​

​,總結好瓜的​

​特征​

​: ​

​皮薄​

​、​

​青綠瓜紋​

​、​

​曲根蒂​

​和​

​濁響聲​

​。根據這些特征,現場進行​

​望聞問切​

​,多次實驗,選出​

​最好​

​的瓜。

現在換個角度,假設有台機器可以幫我們這些事情。

我們給機器輸入一些西瓜的資料:包括各種西瓜的​

​大小​

​、​

​種類​

​、​

​顔色​

​、​

​瓜蒂​

​和​

​敲擊聲​

​等資訊,再提供一些計算好瓜的​

​算法公式​

​,希望機器能夠穩定、準确的幫我們篩選出好瓜和壞瓜。

漫畫趣解大資料算法模組化:買瓜

通俗了解,這就是大資料算法模組化所做的工作。

大資料算法模組化核心思想

在了解業務背景、資料含義的基礎上确定​

​預期目标​

​;資料​

​預處理​

​後,選擇合适的​

​算法​

​和​

​資料特征​

​并建構​

​模型​

​,訓練最好的模型幫助我們最大化逼近(​

​預測​

​)預期目标。

漫畫趣解大資料算法模組化:買瓜

3 大白話講解算法模組化流程

前文介紹了算法模組化幫我們解決了什麼問題?接下來瞅瞅如何進行算法模組化。

我會詳細介紹算法模組化的具體流程,并借助于​

​買西瓜​

​的例子說明。

為避免内容枯燥,後面畫了大量示意圖,友善了解

先來看看整體的算法模組化流程:

漫畫趣解大資料算法模組化:買瓜

1)流程說明

整體大緻可分為​

​業務/資料了解​

​、​

​預處理​

​、​

​特征工程​

​、​

​模型訓練​

​、​

​模型評估​

​和​

​預測​

​幾個步驟。

  • 首先要了解

    資料

    業務目标

    ,即明确目标和測試的資料。比如說我想挑一個好西瓜,你總不能去個早餐店拿兩個包子回來吧?
  • 其次是資料預處理工作。一般讀取的資料是存在一些空值、異常值等其他

    非友好

    的特性,需要做些特殊處理。
  • 在預處理基礎上,進一步擷取為模型所用的資料(

    特征

    ),被稱作

    特征工程

    。在買瓜過程,小張就很老道的看瓜紋、瓜蒂、聽敲擊聲,這些就是好瓜的特征。
  • 特征工程完成後,可以選擇合适算法進行

    模型訓練

    。此時通常将資料集分成

    測試集

    驗證集

    ,以此檢驗模型效果,即區分好瓜的正确程度。
  • 經過幾輪模型訓練和特征工程(過程可疊代、可雙向),擷取效果最好的模型,在真實資料集進行

    預測

    (切瓜)。

2)資料、業務了解

常有的一個誤區:

即無需事先确定目标和資料,總以為能夠找到一個完美的算法,能夠幫我們自動擷取資料規律。

但是算法并不是萬能的,需要與之适配的資料和使用場景。再好的劍也需要有溫養的環境和一副好劍鞘。

漫畫趣解大資料算法模組化:買瓜

3)資料預處理

算法模組化中的資料來源為資料同僚開發的名額。比如使用者産品推薦,就需要加工一些使用者行為名額。

當然這些加工後的資料不能直接給模型使用,需要進行處理。

  • 飽和度(空值填充、異常值過濾)
  • 無量綱化:将資料轉換為同等規格。比如特征的少量數值過大,可以統一縮放到[0,1]範圍,降低樣本計算影響程度)
  • 定量資料轉換:比如西瓜的敲擊聲(清脆、濁響)轉換為數字形式(00、01),進行啞編碼(定量編碼的一種)。
  • 定性資料轉換: 比如根據西瓜的重量是否大于5斤,将西瓜的重量分為[0,1]兩類,便于數學計算。
漫畫趣解大資料算法模組化:買瓜

4)特征工程

特征工程的主要目的是選擇具有價值的資料資訊,幫助模型快速和準确訓練和預測。

好的資料和特征可以決定訓練模型的​

​上限​

​。

舉個例子:選西瓜過程中,經驗豐富的小明對比不同種類西瓜的​

​紋路​

​、​

​瓜蒂​

​、​

​敲擊聲​

​、​

​尺寸​

​和​

​種類​

​等特征,快速挑選出想要的好瓜。

假如小明是個新手,那麼可能隻會根據瓜的​

​大小​

​、​

​顔色​

​來區分,認為大而綠的就是好瓜,當然結果可能相差十萬八千裡。

特征工程的主要工作内容主要如下:

  • 基于樣本特性篩選特征: 使用資料

    統計學

    知識,比如計算特征的

    方差

    相關系數

    分箱/WOE

    IV值

    資訊熵

    等,篩選出結果比較好的特征。
  • 基于模型篩選特征: 将部分特征放入到模型中訓練,篩選效果好的特征,适用于特征資料量比較大的場景,比較精确。
  • 特征衍生:需要引入一些衍生特征(組合舊特征、開發新特征),提高特征的豐富性
漫畫趣解大資料算法模組化:買瓜

5)模型訓練

在完成特征工程的基礎上,需要選擇适配的機器學習算法,構模組化型。

這裡建議可再次計算部分特征的IV值、資訊熵等,確定特征完整性。

常見的機器學習算法:

  • 監督學習:包含分類和回歸兩大類。常見的算法有LR、樹算法、神經網絡和GBRT等,其中

    LR邏輯回歸

    樹算法

    常用于解決風控場景
  • 非監督學習:聚類算法、PCA算法和關聯規則等算法。其中

    Kmeans算法

    被廣泛運用于資料挖掘分類場景,

    關聯規則

    則應用于推薦中。
漫畫趣解大資料算法模組化:買瓜

選擇好算法和特征,開始訓練模型。訓練時間會很長且過程可逆,可适時調整特征和算法疊代。

6)模型評估

模型需要在訓練集和驗證集上進行訓練,如何判斷模型訓練效果呢?

一般需要從兩方面去考慮,即模型準确性和穩定性。

  • 準确性評估

    模型能否正确預測結果。比如判斷一顆表皮青綠、瓜蒂蜷曲、敲擊濁響的瓜有多大機率是好瓜。

常用方法:混淆矩陣、KS曲線、ROC曲線等
漫畫趣解大資料算法模組化:買瓜
  • 穩定性評估

    即模型的穩定性,防止随着時間推移,應用模型的樣本特征可能會發生變化,影響模型的預測結果。常通過計算特征的PSI值(變化程度),調整模型。

常用方法:PSI計算
  • 小于10%,則無需更新模型;10%-20%, 需檢查變化原因,加強監控頻率;大于20%,則模型需要疊代。

7)預測

将模型帶入到真實預測集中,預測結果。

序号 顔色 瓜蒂 敲擊聲 好瓜
1 青綠 蜷縮 濁響 0.958
2 烏黑 蜷縮 濁響 0.943
3 青綠 硬挺 清脆 0.412
4 烏黑 稍蜷 沉悶 0.533

4 算法模組化如何學習

上面簡單介紹了下大資料算法模組化的基本流程。

​由于篇幅問題,不詳細之處,可添加我的wx交流。

其實在實際工作中,我們可能大半時間都集中在​

​特征處理​

​和​

​模型訓練​

​,當然還有玄學的​

​調參​

​。

一個模型運作的好壞,可能會和多種因素有關。需要在掌握底層原理和技術手段的基礎上,根據自己的經驗去慢慢調試。

而至于如何去學習入門算法模組化,這裡也提供個人學習方法和路線(僅供參考)。

漫畫趣解大資料算法模組化:買瓜
  • 資料知識:統計學、線性代數和離散數學
  • 算法知識:機器學習、深度學習算法、某領域場景算法
  • Python基礎知識:可以對照菜鳥教程學習
  • Python資料分析:Pandas、Numpy、Matploblib
  • 架構學習:jupyter、sklearn、tensorflow、pytorch
  • 算法模組化實戰:系統項目實戰、領域延深
  • 其他:Spark、Hive等大資料技術

5 一些誤區和建議

1)做算法模組化是不是隻會算法就好了?

并不能這麼說,正如文中所說​

​特征​

​和​

​資料​

​是決定模型的上限。特征處理也要很精通,特别是python和pandas等技術

2)特征工程和資料預處理的關系?

其實這兩者都可以歸為​

​特征處理​

​,也即特征工程包含預處理,都是進行資料處理和特征篩選,隻不過有的技術體系将其單獨劃分。

3)模型的準确度不好,如何調參?

我的建議是先去看你的資料,觀察特征的​

​飽和度​

​、​

​IV值​

​、​

​PSI值​

​等,一般不好的特征很大程度影響模型好壞。随後再去調整模型的​

​超參數​

​,隻有你的特征比較好,調整超參才能發揮更好的效果。

4)沒基礎怎麼學習算法模組化

建議可以按照我上面推薦的學習路線去看,其實算法模組化對于沒有基礎的朋友來說是有蠻高門檻的,推薦一定要把算法理論和數學理論學紮實點,不要深究,了解并會使用即可。

5)那麼多程式設計架構怎麼選?學習哪個好

架構隻是一個工具,友善編碼和調試;重要的是把基礎知識學好,任意選擇一個即可,推薦pytorch。

6)一點點建議

6 寫在最後

繼續閱讀