機器學(xué)習(xí)技巧筆記

一、簡介
結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù)
  • 結(jié)構(gòu)化數(shù)據(jù)(表)
  • 半結(jié)構(gòu)化數(shù)據(jù)(文本,日志)
  • 非結(jié)構(gòu)化數(shù)據(jù)(圖像,視頻)

監(jiān)督學(xué)習(xí):
  • 參數(shù)空間
      • 決策模型
      • 概率模型
    • 或者
      • 生成模型:由數(shù)據(jù)學(xué)習(xí)聯(lián)合概率分布P(X,Y),然后求出條件概率分布P(Y|X)作為預(yù)測的模型,即生成模型:P(Y|X)= P(X,Y)/ P(X)。(樸素貝葉斯)
        • 生成模型可以還原聯(lián)合概率分布p(X,Y),并且有較快的學(xué)習(xí)收斂速度,還可以用于隱變量的學(xué)習(xí)
      • 判別模型:由數(shù)據(jù)直接學(xué)習(xí)決策函數(shù)Y=f(X)或者條件概率分布P(Y|X)作為預(yù)測的模型,即判別模型。(k近鄰、決策樹)
        • 直接面對預(yù)測,往往準(zhǔn)確率較高,直接對數(shù)據(jù)在各種程度上的抽象,所以可以簡化模型
  • 準(zhǔn)則

  • 實質(zhì)公式場景對參數(shù)的看法利用的信息最小化結(jié)構(gòu)風(fēng)險loss+正則
    決策模型

    最大似然概率積
    概率模型確定但未知只利用樣本信息最大后驗概率
    (帶正則的最大似然)貝葉斯估計
    概率模型隨機變量樣本信息
    +
    把參數(shù)作為先驗知識
    • 根據(jù)貝葉斯定理,后驗函數(shù)正比于似然函數(shù)乘以先驗概率,所以后驗概率函數(shù)一般表達(dá)如:

      ? ? ? ?

    • 貝葉斯估計中的先驗概率其實就相當(dāng)于最小化結(jié)構(gòu)風(fēng)險函數(shù)中的正則項,若先驗為拉普拉斯分布,則為L1,若先驗為高斯分布,則為L2

  • 算法
    • 最優(yōu)化方法

(二)數(shù)據(jù)

1.常見抽樣方法

(1)簡單隨機抽樣:無放回抽樣,有放回抽樣

(2)分層抽樣


2.類別樣本不平衡的解決方法(假設(shè)負(fù)樣本遠(yuǎn)遠(yuǎn)大于正樣本數(shù)量)

(1)欠采樣:對負(fù)樣本進行欠采樣;一般不單純地進行欠采樣,而是結(jié)合集成學(xué)習(xí)來進行欠采樣;將負(fù)樣本劃分為若干個集合供不同分類器使用,這樣對每個分類器來看都進行了欠采樣,但在全局來看卻不會丟失重要信息;

(2)重采樣:對正樣本進行重采樣;一般不單純地進行重采樣,而是對正樣本進行插值等來產(chǎn)生新的正樣本;

(3)閾值移動:不是簡單地將概率閾值0.5作為正負(fù)樣本的區(qū)分界限,若負(fù)樣本過多,那么正樣本的閾值將往低于0.5方向調(diào)整;


3.處理數(shù)據(jù)缺失的常用方法:

(1)用平均值、中值、分位數(shù)、眾數(shù)、隨機值等替代;

(2)通過建模,使用其他變量來預(yù)測缺失值;

(3)將變量映射到高維空間:比如性別變量有男,女以及缺失3種情況,則映射為3個變量:是否男,是否女,是否缺失;

(4)整列刪除


4.構(gòu)造線下驗證集的常用方法:

(1)hold-out-validation:將線下數(shù)據(jù)隨機劃分為一大一小兩部分,大的為訓(xùn)練集,小的為驗證集,重復(fù)若干次;(典型做法是三七分)

(2)cross-validation:將線下數(shù)據(jù)劃分為k份,每次只用k-1份來訓(xùn)練,剩下的1份作為驗證集,重復(fù)k次;(典型做法是k取10,k偏小則欠擬合,k偏大樣本增多則過擬合)

(3)bootstrapping:從原始數(shù)據(jù)集D中有放回地采樣,得到同樣大小的D1,D1作為訓(xùn)練集,D-D1作為驗證集;

PS:

1)訓(xùn)練集與驗證集的劃分要盡可能保持?jǐn)?shù)據(jù)分布的一致性,避免因數(shù)據(jù)劃分過程引入額外的偏差而對最終結(jié)果產(chǎn)生影響,例如在分類任務(wù)中至少要保持樣本的類別比例相似;如果從采樣的角度來看待數(shù)據(jù)集的劃分過程,則保留類別比例的采樣方式通常稱為“分層采樣”;

2)驗證集較小時,評估結(jié)果的方差較大,過擬合;訓(xùn)練集較小時,評估結(jié)果的偏差較大,欠擬合;

3)leave-one-out是k-fold cross-validation的特殊例子,只留一個樣本做驗證集;評估結(jié)果往往比較準(zhǔn)確,但是不適用于大樣本數(shù)據(jù);(訓(xùn)練的計算開銷太大)

4)bootstrapping可以產(chǎn)生多個不同的訓(xùn)練集,適用于ensemble learning;同時,由于重復(fù)采樣,所以會改變初始訓(xùn)練集的分布,造成樣本泄露,因此一般適用于小樣本,在數(shù)據(jù)量足夠的情況下,常采用hold-out-validation或者cross-validation;


5.常見的離線評價指標(biāo):

(1)準(zhǔn)確率(Accuracy)與平均準(zhǔn)確率(Average Per-class Accuracy)

其中平均準(zhǔn)確率是對各個類的準(zhǔn)確率取平均值

(2)混淆矩陣:對二分類結(jié)果進行詳細(xì)表述的一個矩陣

(3)ROC和PRC

怎么畫出X軸Y軸
適用于/優(yōu)點關(guān)注范圍用一個值衡量的話?缺點
ROC
通過改變0.5這個閾值使得真陽性和假陽性變化假陽性真陽性排序質(zhì)量單個集合AUC假設(shè)平衡PRCPercision/RecallPercisionRecall不平衡整體F1比較不平滑
PS,平滑表示沒有過擬合,對于ROC的變化能看出排序性能

6.常見的在線評價指標(biāo)——A/B test


7.驗證集和測試集的區(qū)別

驗證集:用于調(diào)整子模型或者其超參數(shù),做模型選擇

測試集:用來評測多個最終模型

如果采用 k-折交叉驗證等重采樣方法,尤其當(dāng)重采樣方法已經(jīng)被嵌套在模型驗證中時,「驗證數(shù)據(jù)集」和「測試數(shù)據(jù)集」的概念可能會淡化


(三)特征

1.冗余特征

(1)冗余特征指的是其所包含的信息能從其他特征中推演出來;

(2)去除冗余特征會減輕學(xué)習(xí)過程的負(fù)擔(dān),增加冗余特征會降低學(xué)習(xí)任務(wù)的難度;


2.特征選擇:從給定的特征集合中選擇出相關(guān)特征子集的過程稱作“特征選擇”;其中包括子集搜索問題與子集評價問題:

(1)子集搜索:前向搜索(逐漸往子集增加特征),后向搜索(逐漸往全集剔除特征)

(2)子集評價:信息增益,基尼指數(shù)

PS:

(1)子集搜索中的前后向搜索都是貪心策略,所以不一定是最優(yōu),這是不進行窮舉搜索所無法避免的;

(2)將特征子集搜索機制與子集評價機制相結(jié)合,可以得到特征選擇方法,例如前向搜索與信息熵結(jié)合,得到的是決策樹的特征選擇方法;


3.特征選擇常見方法:過濾式(filter),包裹式(wrapper),嵌入式(embedding)

(1)過濾式 Filter

根據(jù)CHI,PCA等降維

先做特征選擇,再訓(xùn)練學(xué)習(xí)器

優(yōu)點: 快速, 只需要基礎(chǔ)統(tǒng)計知識, 特征選擇過程與后續(xù)的學(xué)習(xí)器的訓(xùn)練沒有關(guān)系 。

缺點:特征之間的組合效應(yīng)難以挖掘。

(2)包裹式 Wrapper

根據(jù)效果好的算法的結(jié)果搜索 “量身定做”的特征子集

優(yōu)點: 直接面向算法優(yōu)化,從最終學(xué)習(xí)性能來看,包裹式比過濾式更好,不需要太多知識。

缺點: 龐大的搜索空間, 需要定義啟發(fā)式策略。

(3)嵌入式Embedded

將特征選擇與學(xué)習(xí)器訓(xùn)練融為一體使用各種的稀疏和懲罰項

優(yōu)點: 快速, 并且面向算法,兩者在同一個優(yōu)化過程中完成,即在學(xué)習(xí)器訓(xùn)練過程中自動地進行了特征選擇。

缺點: 需要調(diào)整結(jié)構(gòu)和參數(shù)配置, 而這需要深入的知識和經(jīng)驗。


(四)模型

1.模型選擇的常用方法:

(1)正則化

(2)交叉驗證

PS:當(dāng)假設(shè)空間含有不同的復(fù)雜度(例如,不同的參數(shù)個數(shù))的模型時,就要面臨模型選擇的問題;


2.過擬合與欠擬合

(1)過擬合是模型的學(xué)習(xí)能力太強,把樣本的噪聲都學(xué)習(xí)進去;

(2)欠擬合是模型的學(xué)習(xí)能力太弱,連樣本的一般特性都沒有學(xué)習(xí)進去;


3.泛化能力與泛化誤差上界

(1)泛化能力是指由該方法學(xué)習(xí)到的模型對未知數(shù)據(jù)的預(yù)測能力,是學(xué)習(xí)方法本質(zhì)上最重要的性質(zhì);

(2)泛化誤差上界:訓(xùn)練誤差越小,泛化誤差上界也越小;樣本容量越大,泛化誤差上界也越小;模型越復(fù)雜,泛化誤差上界越大;


4.正則、歸一和標(biāo)準(zhǔn)化:
  • regularize:(規(guī)范; 使有規(guī)則; 使有秩序)
  • Regularization(先驗規(guī)范化/正則化/懲罰項): 利用先驗知識,在處理過程中引入正則化因子(regulator),增加向模型收斂的哪個方面引導(dǎo)約束的作用,比如稀疏,比如防止過擬合,處理噪聲跟異常點。
  • 通過添加正則項指定一組與原不適定問題相“鄰近”的適定問題的解,去逼近原問題的解?
  • 都是通過增加模型的loss function來懲罰模型
  • 正則化其實是決策模型的概念,其對應(yīng)于概率模型中的貝葉斯估計;貝葉斯估計比起極大似然估計,多了參數(shù)的先驗知識;即假設(shè)模型參數(shù)是符合一個先驗的概率分布的
  • 通過把(權(quán)重為0的個數(shù))這樣的正則項加入,降低了權(quán)值的維度,從而提高了在一定數(shù)據(jù)樣本上的泛化能力

  • 別名意義公式對特征的效果性能作用過擬合下降的梯度假設(shè)參數(shù)服從的分布L0

    sigma(x==0)稀疏差一點



    L1lasso權(quán)重絕對值loss + |xi| 產(chǎn)生稀疏的特征求導(dǎo)較困難特征選擇防止過擬合斜率拉普拉斯L2ridge嶺權(quán)重平方和loss + sigma(xi^2)選擇更多的特征,這些特征都會接近于0最吼規(guī)則化防止過擬合二次
    高斯
  • 這張圖里,方框是一種約束,使得模型的參數(shù)在方框里面,一圈一圈是逐漸逼近的目標(biāo)函數(shù)(從紫色圈到擴散,為了滿足loss里的稀疏條件),其中w2或者w1=0的點就是稀疏點,所以交點就是滿足正則化同時達(dá)到一定模型性能的模型點,因為L1一般會用=0的位置(即角)相交于模型(稀疏點,lasso點,模型點三點一致),L2一般會讓模型靠近0,從而防止過擬合,但是模型從哪個方向靠近0都是沒關(guān)系的,只關(guān)心均方差就可以
  • Normalization 歸一化 :把數(shù)據(jù)變?yōu)椋?,1)之間的小數(shù) , 消除量綱。

  • 公式minmax
    零均值(Z-score)減去均值,乘以方差:y=(x-means)/ variance對數(shù)y=lg (x)arctany=arctan(x)*2/PI
  • 比最大最小歸一化更好的方法是歸一到Z值,也就是說,特征值距離它的平均值有多遠(yuǎn),并除去本身的標(biāo)準(zhǔn)差,Batch norm的源頭
  • 歸一化可以處理量綱問題,有利于優(yōu)化迭代速度(梯度下降),提高精度(KNN)
  • Standardization 標(biāo)準(zhǔn)化:是將數(shù)據(jù)按比例縮放,使之落入一個小的特定區(qū)間(如,0均值)

標(biāo)準(zhǔn)化方法公式結(jié)果適用于應(yīng)用z-scorey=(x-μ)/σ變換為正態(tài)分布最大最小未知/存在野點數(shù)據(jù)預(yù)處理,優(yōu)化后用作Batch Norm小數(shù)定標(biāo) y=x/10^n移動小數(shù)的位置使得全部小于1

Logisticy=1/(1+e^(-x))
數(shù)據(jù)分布很遠(yuǎn)可導(dǎo),廣泛應(yīng)用


5.常用的防止過擬合的方法:

(1)數(shù)據(jù)集擴增

(2)正則化:約束參數(shù)大小


6.bias與variance

(1)bias:結(jié)果和預(yù)測的偏差,擬合誤差,表示模型的擬合能力,偏差越小,模型的擬合能力越強;(寬廣網(wǎng)的DNN部分)

擬合誤差表示是否已經(jīng)把線偏差到指定位置

(2)variance:結(jié)果和預(yù)測的方差,泛化誤差,表示模型的泛化能力,方差越小,模型的泛化能力越強;(寬廣網(wǎng)的LR部分)

方差表示這根線有多符合這個驗證集

(3)error = bias + variance

是個問題


7.調(diào)試性能較差的分類器
  • 對于出現(xiàn)了高方差(過擬合)
    • 增加更多的數(shù)據(jù),降低模型復(fù)雜度
    • ill-condition,可以用L2正則化處理,或者檢查數(shù)據(jù),重新搜索參數(shù)
  • 對于出現(xiàn)了高偏差(欠擬合)
    • 增加模型復(fù)雜度,或者嘗試別的模型
  • 改變目標(biāo):
    • 訓(xùn)練和測試數(shù)據(jù)不均衡的情況下,應(yīng)該關(guān)注準(zhǔn)確率和召回率
  • 注意的問題:很低的訓(xùn)練誤差,甚至是0不一定很好,只是有可能出現(xiàn)了N小于P的情況,樣本數(shù)小于特征數(shù)


8.模型參數(shù)與超參數(shù)

(1)機器學(xué)習(xí)模型建立過程其實是一個參數(shù)學(xué)習(xí)與調(diào)優(yōu)的過程,參數(shù)包括模型參數(shù)與超參數(shù);

(2)模型參數(shù)使指通過模型訓(xùn)練中的學(xué)習(xí)算法而進行調(diào)整的,而模型超參數(shù)不是通過學(xué)習(xí)算法而來的,但是同樣也需要進行調(diào)優(yōu),比如特征的維數(shù)等;

(3)常見的調(diào)參方法有:網(wǎng)格搜索,隨機搜索,啟發(fā)式搜索;

(4)調(diào)參是通過線下驗證集進行的;


9.VC維(Vapnik-Chervonenkis Dimension):VC維是統(tǒng)計學(xué)習(xí)理論中的一個核心概念,它是目前為止對函數(shù)集學(xué)習(xí)性能的最好描述指標(biāo)

(1)shatter(打散)概念:給定訓(xùn)練樣本集合x1,x2,...,xn;,其中每個樣本有兩個可選的label(+1, -1),因此總共有2的n次方種不同的label組合;如果對于其中每一種組合,分類模型(函數(shù)集) F 都能夠?qū)ζ溥M行正確的劃分,那么我們稱 F 能夠?qū)⒂?xùn)練樣本集合打散(shatter);

上圖共有3個樣本,可以看到,對于樣本的任意一種label組合,圖中的直線都可以將正樣本和負(fù)樣本分開;這時我們稱這條直線可以將這三個樣本打散(shatter);


上圖中顯示了四個樣本,如果只用一條直線,那么無論這條直線怎么劃都不能將正負(fù)樣本分開;

(2)VC維的概念:指函數(shù)集H能夠打散的最大樣本數(shù)稱為H的VC維;

(3)對于一個模型來說,其VC維越大,則其模型復(fù)雜度越高,需要更多的訓(xùn)練數(shù)據(jù),因此為了防止過擬合,加入正則項,其實也就是降低模型的VC維;

(4)一個機器學(xué)習(xí)模型想要取得好的效果,這個模型需要滿足以下兩個條件:

1. 模型在我們的訓(xùn)練數(shù)據(jù)上的表現(xiàn)要不錯,也就是 trainning error 要足夠小。
2. 模型的 vc-dimension 要低。換句話說,就是模型的自由度不能太大,以防overfit.


換句話說,模型的維度大的容易過擬合,而數(shù)據(jù)量小的容易過擬合


PS:線性SVM的VC維為d+1(任何線性分類器的VC維都是d+1);高斯核函數(shù)的VC維為無窮大;NN(Neural Networks )的VC維為參數(shù)量;樹模型的vc維度很接近樣本


10.集成學(xué)習(xí)(ensemble learning)的常用方法:

(1)bagging:訓(xùn)練不同的模型,對預(yù)測結(jié)果取均值或者投票等(減小variance,增強泛化);

(2)boosting:迭代算法,在上一次分類結(jié)果上進行迭代調(diào)整(減小bias,增強擬合);

(3)stacking/cascade:訓(xùn)練不同的模型,用每個模型的預(yù)測作為輸入,訓(xùn)練新的模型;


11.多分類的常見方法(假設(shè)N個類)

(1)one vs rest:構(gòu)建N個分類器,每個分類器依次將每個類做為正樣本,剩余的類作為負(fù)樣本

(2)one vs one:構(gòu)建N*(N-1)/2個分類器,每個分類器選擇兩個類的樣本進行訓(xùn)練


12.線性分類器與非線性分類器的區(qū)別以及優(yōu)劣
  • 區(qū)別:如果模型是參數(shù)的線性函數(shù),并且存在線性分類面,那么就是線性分類器,否則不是。
  • 常見的線性分類器有:LR,貝葉斯分類,單層感知機、線性回歸
  • 常見的非線性分類器:決策樹、RF、GBDT、多層感知機

13.維度和特征
維度高的時候,數(shù)據(jù)一般在維度空間里面會比較稀疏,很有可能線性可分所以選擇線性分類器

美團特征:

特征的生產(chǎn)流程

特征的統(tǒng)計部分的流程:

各個部分稱為算子
其中,特征的范式:
針對某些統(tǒng)計對象(用戶、商家)的一些維度(品類、下單額),基于某些度量值(點擊、下單)做統(tǒng)計(比例/總和)。
同一對象,可統(tǒng)計不同維度;同一維度,有不同的度量角度;同一度量角度,有不同的統(tǒng)計方式。

行為類別行為詳情主動行為數(shù)據(jù)搜索、篩選、點擊、收藏、下單、支付、評分UGC文本評價、上傳圖片負(fù)反饋數(shù)據(jù)左滑刪除、取消收藏、取消訂單、退款、負(fù)評、低評用戶畫像用戶人口屬性、美團DNA、品類偏好、消費水平、工作地與居住地

  • deal(即團購單,下同)維度的特征:主要是deal本身的一些屬性,包括價格、折扣、銷量、評分、類別、點擊率等
  • user維度的特征:包括用戶等級、用戶的人口屬性、用戶的客戶端類型等
  • user、deal的交叉特征:包括用戶對deal的點擊、收藏、購買等
  • 距離特征:包括用戶的實時地理位置、常去地理位置、工作地、居住地等與poi的距離

特征選擇
dw topic
對于每個特征,加入子特征可以提高性能:
能讓模型更快地收斂

通用模型舉隅

排序?qū)?/h1>
召回層【協(xié)同過濾去除不合適的,選取重要的】
-----------------------------------
用戶畫像層【回流到FFM那層】
非線性映射層:全連接,wide【泛化】&deep【記憶】
特征處理層:FFM特征組合,tfidf計算,降維層,語義提取
embedding層

LR跟NB的區(qū)別:
相同:都是特征的線性表達(dá),都是求條件概率P(y|x)
不同:
NB是生成模型,直接在訓(xùn)練數(shù)據(jù)計算P(x|y)和P(y)的概率,從而利用貝葉斯公式計算P(y|x)。LR是判別模型,通過最大化P(y|x)的函數(shù)產(chǎn)生。
NB比較Naive。
當(dāng)數(shù)據(jù)集比較小的時候,應(yīng)該選用Naive Bayes,為了能夠取得很好的效果,數(shù)據(jù)的需求量為O(log n)。 當(dāng)數(shù)據(jù)集比較大的時候,應(yīng)該選用Logistic Regression,為了能夠取得很好的效果,數(shù)據(jù)的需求量為O( n)


模型集成方法:

Bagging

【切分?jǐn)?shù)據(jù)集,結(jié)果加權(quán)】Bagging試圖在小樣本集上實現(xiàn)相似的學(xué)習(xí)模塊,然后對預(yù)測值求平均值。對于Bagging一般來說,你可以在不同數(shù)據(jù)集上使用不同學(xué)習(xí)模塊。正如你所期望的那樣,這樣可以幫助我們減少方差,增強泛化。


Boosting

【誤差梯度下降】Boosting是一項迭代技術(shù),它在上一次分類的基礎(chǔ)上調(diào)整觀測值的權(quán)重。如果觀測值被錯誤分類,它就會增加這個觀測值的權(quán)重,反之亦然。Boosting一般會減少偏置誤差然后構(gòu)建強大的預(yù)測模型。但是,有些時候它們也會在訓(xùn)練數(shù)據(jù)上過擬合。


Stacking

【簡單的blending】訓(xùn)練集中取子集,交叉訓(xùn)練基模型,再用總模型匯總。這樣做可以減少偏置誤差和方差(泛化誤差)。

線性stacking:

用線性模型做最終模型,這樣就能看見每個模型的權(quán)重


二次線性stacking:

把模型的輸出和他們之間結(jié)果的組合一起作為最終模型的輸入


Blending:
不會信息泄露,融合一切模型和參數(shù)
沒有stacking的交叉驗證的性能
一般采用這種

如何選擇要融合的模型的超參數(shù):
比如,標(biāo)準(zhǔn)化的時候選用三種:
  • 不標(biāo)準(zhǔn)化數(shù)據(jù)
  • 使用z標(biāo)準(zhǔn)化
  • 使用0-1標(biāo)準(zhǔn)化
另外,在特征選擇和數(shù)據(jù)缺失值填補的時候使用不同參數(shù)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容