執行個體詳解機器學習如何解決問題 轉

來源:互聯網
上載者:User

標籤:

原文:http://tech.meituan.com/mt-mlinaction-how-to-ml.html

前言

隨著大資料時代的到來,機器學習成為解決問題的一種重要且關鍵的工具。不管是工業界還是學術界,機器學習都是一個炙手可熱的方向,但是學術界和工業界對機器學習的研究各有側重,學術界側重於對機器學習理論的研究,工業界側重於如何用機器學習來解決實際問題。我們結合美團在機器學習上的實踐,進行一個實戰(InAction)系列的介紹(帶“機器學習InAction系列”標籤的文章),介紹機器學習在解決工業界問題的實戰中所需的基本技術、經驗和技巧。本文主要結合實際問題,概要地介紹機器學習解決實際問題的整個流程,包括對問題建模、準備訓練資料、抽取特徵、訓練模型和最佳化模型等關鍵環節;另外幾篇則會對這些關鍵環節進行更深入地介紹。

下文分為1)機器學習的概述,2)對問題建模,3)準備訓練資料,4)抽取特徵,5)訓練模型,6)最佳化模型,7)總結 共7個章節進行介紹。

機器學習的概述:什麼是機器學習?

隨著機器學習在實際工業領域中不斷獲得應用,這個詞已經被賦予了各種不同含義。在本文中的“機器學習”含義與wikipedia上的解釋比較契合,如下:
Machine learning is a scientific discipline that deals with the construction and study of algorithms that can learn from data.

機器學習可以分為無監督學習(unsupervised learning)和有監督學習(supervised learning),在工業界中,有監督學習是更常見和更有價值的方式,下文中主要以這種方式展開介紹。如中所示,有監督的機器學習在解決實際問題時,有兩個流程,一個是離線訓練流程(藍色箭頭),包含資料篩選和清洗、特徵抽取、模型訓練和最佳化模型等環節;另一個流程則是應用流程(綠色箭頭),對需要預估的資料,抽取特徵,應用離線訓練得到的模型進行預估,獲得預估值作用在實際產品中。在這兩個流程中,離線訓練是最有技術挑戰的工作(線上預估流程很多工作可以複用離線訓練流程的工作),所以下文主要介紹離線訓練流程。

什麼是模型(model)?

模型,是機器學習中的一個重要概念,簡單的講,指特徵空間到輸出空間的映射;一般由模型的假設函數和參數w組成(下面公式就是Logistic Regression模型的一種表達,在訓練模型的章節做稍詳細的解釋);一個模型的假設空間(hypothesis space),指給定模型所有可能w對應的輸出空間組成的集合。工業界常用的模型有Logistic Regression(簡稱LR)、Gradient Boosting Decision Tree(簡稱GBDT)、Support Vector Machine(簡稱SVM)、Deep Neural Network(簡稱DNN)等。

模型訓練就是基於訓練資料,獲得一組參數w,使得特定目標最優,即獲得了特徵空間到輸出空間的最優映射,具體怎麼實現,見訓練模型章節。

為什麼要用機器學習解決問題?
  • 目前處於大資料時代,到處都有成T成P的資料,簡單規則處理難以發揮這些資料的價值;
  • 廉價的高效能運算,使得基於大規模資料的學習時間和代價降低;
  • 廉價的大規模儲存,使得能夠更快地和代價更小地處理大規模資料;
  • 存在大量高價值的問題,使得花大量精力用機器學習解決問題後,能獲得豐厚收益。
機器學習應該用於解決什麼問題?
  • 目標問題需要價值巨大,因為機器學習解決問題有一定的代價;
  • 目標問題有大量資料可用,有大量資料才能使機器學習比較好地解決問題(相對於簡單規則或人工);
  • 目標問題由多種因素(特徵)決定,機器學習解決問題的優勢才能體現(相對於簡單規則或人工);
  • 目標問題需要持續最佳化,因為機器學習可以基於資料自我學習和迭代,持續地發揮價值。
對問題建模

本文以DEAL(團購單)交易額預估問題為例(就是預估一個給定DEAL一段時間內賣了多少錢),介紹使用機器學習如何解決問題。首先需要:

  • 收集問題的資料,理解問題,成為這個問題的專家;
  • 拆解問題,簡化問題,將問題轉化機器可預估的問題。

深入理解和分析DEAL交易額後,可以將它分解為如的幾個問題:

單個模型?多個模型?如何來選擇?

按照進行拆解後,預估DEAL交易額就有2種可能模式,一種是直接預估交易額;另一種是預估各子問題,如建立一個使用者數模型和建立一個訪購率模型(訪問這個DEAL的使用者會購買的單子數),再基於這些子問題的預估值計算交易額。

  • 不同方式有不同優缺點,具體如下:
模式 缺點 優點
單模型 1. 預估難度大
2. 風險比較高
1. 理論上可以獲得最優預估(實際上很難)
2. 一次解決問題
多模型 1. 可能產生積累誤差
2. 訓練和應用成本高
1. 單個子模型更容易實現比較准地預估
2. 可以調整子模型的融合方式,以達到最佳效果
  • 選擇哪種模式?
    1)問題可預估的難度,難度大,則考慮用多模型;
    2)問題本身的重要性,問題很重要,則考慮用多模型;
    3)多個模型的關係是否明確,關係明確,則可以用多模型。

  • 如果採用多模型,如何融合?
    可以根據問題的特點和要求進行線性融合,或進行複雜的融合。以本文問題為例,至少可以有如下兩種:

模型選擇

對於DEAL交易額這個問題,我們認為直接預估難度很大,希望拆成子問題進行預估,即多模型模式。那樣就需要建立使用者數模型和訪購率模型,因為機器學習解決問題的方式類似,下文只以訪購率模型為例。要解決訪購率問題,首先要選擇模型,我們有如下的一些考慮:

  • 主要考慮
    1)選擇與營運目標一致的模型;
    2)選擇與訓練資料和特徵相符的模型。

    訓練資料少,High Level特徵多,則使用“複雜”的非線性模型(流行的GBDT、Random Forest等);訓練資料很大量,Low Level特徵多,則使用“簡單”的線性模型(流行的LR、Linear-SVM等)。
  • 補充考慮
    1)當前模型是否被工業界廣泛使用;
    2)當前模型是否有比較成熟的開源工具包(公司內或公司外);
    3)當前工具包能夠的處理資料量能否滿足要求;
    4)自己對當前模型理論是否瞭解,是否之前用過該模型解決問題。

為實際問題選擇模型,需要轉化問題的營運目標為模型評價目標,轉化模型評價目標為模型最佳化目標;根據業務的不同目標,選擇合適的模型,具體關係如下:

通常來講,預估真實數值(迴歸)、大小順序(排序)、目標所在的正確區間(分類)的難度從大到小,根據應用所需,儘可能選擇難度小的目標進行。對於訪購率預估的應用目標來說,我們至少需要知道大小順序或真實數值,所以我們可以選擇Area Under Curve(AUC)或Mean Absolute Error(MAE)作為評定目標,以Maximum likelihood為模型損失函數(即最佳化目標)。綜上所述,我們選擇spark版本 GBDT或LR,主要基於如下考慮:
1)可以解決排序或迴歸問題;
2)我們自己實現了演算法,經常使用,效果很好;
3)支援海量資料;
4)工業界廣泛使用。

準備訓練資料

深入理解問題,針對問題選擇了相應的模型後,接下來則需要準備資料;資料是機器學習解決問題的根本,資料選擇不對,則問題不可能被解決,所以準備訓練資料需要格外的小心和注意:

注意點:
  • 待解決問題的資料本身的分布盡量一致;
  • 訓練集/測試集分布與線上預測環境的資料分布儘可能一致,這裡的分布是指(x,y)的分布,不僅僅是y的分布;
  • y資料噪音儘可能小,盡量剔除y有噪音的資料;
  • 非必要不做採樣,採樣常常可能使實際資料分布發生變化,但是如果資料太大無法訓練或者正負比例嚴重失調(如超過100:1),則需要採樣解決。
常見問題及解決辦法
  • 待解決問題的資料分布不一致:
    1)訪購率問題中DEAL資料可能差異很大,如美食DEAL和酒店DEAL的影響因素或表現很不一致,需要做特別處理;要麼對資料提前歸一化,要麼將分布不一致因素作為特徵,要麼對各類別DEAL單獨訓練模型。
  • 資料分布變化了:
    1)用半年前的資料訓練模型,用來預測當前資料,因為資料分布隨著時間可能變化了,效果可能很差。盡量用近期的資料訓練,來預測當前資料,曆史的資料可以做降權用到模型,或做transfer learning。
  • y資料有噪音:
    1)在建立CTR模型時,將使用者沒有看到的Item作為負例,這些Item是因為使用者沒有看到才沒有被點擊,不一定是使用者不喜歡而沒有被點擊,所以這些Item是有噪音的。可以採用一些簡單規則,剔除這些噪音負例,如採用skip-above思想,即使用者點過的Item之上,沒有點過的Item作為負例(假設使用者是從上往下瀏覽Item)。
  • 採樣方法有偏,沒有覆蓋整個集合:
    1)訪購率問題中,如果只取只有一個門店的DEAL進行預估,則對於多門店的DEAL無法很好預估。應該保證一個門店的和多個門店的DEAL資料都有;
    2)無客觀資料的二分類問題,用規則來獲得正/負例,規則對正/負例的覆蓋不全面。應該隨機抽樣資料,進行人工標註,以確保抽樣資料和實際資料分布一致。
訪購率問題的訓練資料
  • 收集N個月的DEAL資料(x)及相應訪購率(y);
  • 收集最近N個月,剔除節假日等非常規時間 (保持分布一致);
  • 只收集線上時間長度>T 且 訪問使用者數 > U的DEAL (減少y的噪音);
  • 考慮DEAL銷量生命週期 (保持分布一致);
  • 考慮不同城市、不同商圈、不同品類的差別 (保持分布一致)。
抽取特徵

完成資料篩選和清洗後,就需要對資料幫浦特徵,就是完成輸入空間到特徵空間的轉換(見)。針對線性模型或非線性模型需要進行不同特徵抽取,線性模型需要更多特徵抽取工作和技巧,而非線性模型對特徵抽取要求相對較低。

通常,特徵可以分為High Level與Low Level,High Level指含義比較泛的特徵,Low Level指含義比較特定的特徵,舉例來說:

    DEAL A1屬於POIA,人均50以下,訪購率高;    DEAL A2屬於POIA,人均50以上,訪購率高;    DEAL B1屬於POIB,人均50以下,訪購率高;    DEAL B2屬於POIB,人均50以上,訪購率底;

基於上面的資料,可以抽到兩種特徵,POI(門店)或人均消費;POI特徵則是Low Level特徵,人均消費則是High Level特徵;假設模型通過學習,獲得如下預估:

如果DEALx 屬於POIA(Low Level feature),訪購率高;如果DEALx 人均50以下(High Level feature),訪購率高。

所以,總體上,Low Level 比較有針對性,單個特徵覆蓋面小(含有這個特徵的資料不多),特徵數量(維度)很大。High Level比較泛化,單個特徵覆蓋面大(含有這個特徵的資料很多),特徵數量(維度)不大。長尾樣本的預測值主要受High Level特徵影響。高頻樣本的預測值主要受Low Level特徵影響。

對於訪購率問題,有大量的High Level或Low Level的特徵,其中一些展示在:

  • 非線性模型的特徵
    1)可以主要使用High Level特徵,因為計算複雜度大,所以特徵維度不宜太高;
    2)通過High Level非線性映射可以比較好地擬合目標。

  • 線性模型的特徵
    1)特徵體系要儘可能全面,High Level和Low Level都要有;
    2)可以將High Level轉換Low Level,以提升模型的擬合能力。

特徵歸一化

特徵抽取後,如果不同特徵的取值範圍相差很大,最好對特徵進行歸一化,以取得更好的效果,常見的歸一化方式如下:

  • Rescaling:
    歸一化到[0,1] 或 [-1,1],用類似方式:
  • Standardization:
    設為x分布的均值,為x分布的標準差;

  • Scaling to unit length:
    歸一化到單位長度向量

特徵選取

特徵抽取和歸一化之後,如果發現特徵太多,導致模型無法訓練,或很容易導致模型過擬合,則需要對特徵進行選擇,挑選有價值的特徵。

  • Filter:
    假設特徵子集對模型預估的影響互相獨立,選擇一個特徵子集,分析該子集和資料Label的關係,如果存在某種正相關,則認為該特徵子集有效。衡量特徵子集和資料Label關係的演算法有很多,如Chi-square,Information Gain。

  • Wrapper:
    選擇一個特徵子集加入原有特徵集合,用模型進行訓練,比較子集加入前後的效果,如果效果變好,則認為該特徵子集有效,否則認為無效。

  • Embedded:
    將特徵選取和模型訓練結合起來,如在損失函數中加入L1 Norm ,L2 Norm。

訓練模型

完成特徵抽取和處理後,就可以開始模型訓練了,下文以簡單且常用的Logistic Regression模型(下稱LR模型)為例,進行簡單介紹。
設有m個(x,y)訓練資料,其中x為特徵向量,y為label,;w為模型中參數向量,即模型訓練中需要學習的對象。
所謂訓練模型,就是選定假說函數和損失函數,基於已有訓練資料(x,y),不斷調整w,使得損失函數最優,相應的w就是最終學習結果,也就得到相應的模型。

模型函數
1)假說函數,即假設x和y存在一種函數關係:

2)損失函數,基於上述假設函數,構建模型損失函數(最佳化目標),在LR中通常以(x,y)的最大似然估計為目標:

最佳化演算法
  • 梯度下降(Gradient Descent)
    即w沿著損失函數的負梯度方向進行調整,見,的梯度即一階導數(見下式),梯度下降有多種類型,如隨機梯度下降或批量梯度下降。

    隨機梯度下降(Stochastic Gradient Descent),每一步隨機播放一個樣本,計算相應的梯度,並完成w的更新,如下式,

    批量梯度下降(Batch Gradient Descent),每一步都計算訓練資料中的所有樣本對應的梯度,w沿著這個梯度方向迭代,即

  • 牛頓法(Newton’s Method)
    牛頓法的基本思想是在極小點附近通過對目標函數做二階Taylor展開,進而找到L(w)的極小點的估計值。形象地講,在wk處做切線,該切線與L(w)=0的交點即為下一個迭代點wk+1(如下)。w的更新公式如下,其中目標函數的二階偏導數,即為大名鼎鼎的Hessian矩陣。

    擬牛頓法(Quasi-Newton Methods):計算目標函數的二階偏導數,難度較大,更為複雜的是目標函數的Hessian矩陣無法保持正定;不用二階偏導數而構造出可以近似Hessian矩陣的逆的正定對稱陣,從而在"擬牛頓"的條件下最佳化目標函數。
    BFGS: 使用BFGS公式對H(w)進行近似,記憶體中需要放H(w),記憶體需要O(m2)層級;
    L-BFGS:儲存有限次數(如k次)的更新矩陣,用這些更新矩陣產生新的H(w),記憶體降至O(m)層級;
    OWLQN: 如果在目標函數中引入L1正則化,需要引入虛梯度來解決目標函數不可導問題,OWLQN就是用來解決這個問題。
  • Coordinate Descent
    對於w,每次迭代,固定其他維度不變,只對其一個維度進行搜尋,確定最優下降方向(如下),公式表達如下:

最佳化模型

經過上文提到的資料篩選和清洗、特徵設計和選擇、模型訓練,就得到了一個模型,但是如果發現效果不好?怎麼辦?
【首先】
反思目標是否可預估,資料和特徵是否存在bug。
【然後】
分析一下模型是Overfitting還是Underfitting,從資料、特徵和模型等環節做針對性最佳化。

Underfitting & Overfitting

所謂Underfitting,即模型沒有學到資料內在關係,如左一所示,產生分類面不能很好的區分X和O兩類資料;產生的深層原因,就是模型假設空間太小或者模型假設空間偏離。
所謂Overfitting,即模型過渡擬合了訓練資料的內在關係,如右一所示,產生分類面過好地區分X和O兩類資料,而真實分類面可能並不是這樣,以至於在非訓練資料上表現不好;產生的深層原因,是巨大的模型假設空間與稀疏的資料之間的矛盾。

在實戰中,可以基於模型在訓練集和測試集上的表現來確定當前模型到底是Underfitting還是Overfitting,判斷方式如下表:

訓練集表現 測試集表現 問題
< 期望目標值 < 期望目標值 Underfitting
> 期望目標值 接近或略遜於訓練集 合適
> 期望目標值 遠差於訓練集 Overfitting
怎麼解決Underfitting和Overfitting問題?
問題 資料 特徵 模型
Underfitting 清洗資料 1. 增加特徵
2. 刪除噪音特徵
1. 調低正則項的懲罰參數
2. 換更“複雜”的模型(如把線性模型換為非線性模型)
3. 多個模型級聯或組合
Overfitting 增加資料 1. 進行特徵選取
2. 降維(如對特徵進行聚類、主題模型進行處理等)
1. 提高正則項的懲罰參數
2. 減少訓練迭代次數
3. 換更“簡單”的模型(如把非線性模型換為線性模型)
總結

綜上所述,機器學習解決問題涉及到問題建模、準備訓練資料、抽取特徵、訓練模型和最佳化模型等關鍵環節,有如下要點:

    1. 理解業務,分解營運目標,規劃模型可預估的路線圖。
    2. 資料:
      y資料儘可能真實客觀;
      訓練集/測試集分布與線上應用環境的資料分布儘可能一致。
    3. 特徵:
      利用Domain Knowledge進行特徵抽取和選擇;
      針對不同類型的模型設計不同的特徵。
    4. 模型:
      針對不同營運目標、不同資料和特徵,選擇不同的模型;
      如果模型不符合預期,一定檢查一下資料、特徵、模型等處理環節是否有bug;
      考慮模型Underfitting和Qverfitting,針對性地最佳化。

執行個體詳解機器學習如何解決問題 轉

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.