機器學習技巧筆記

一、簡介
結構化數據和非結構化數據
  • 結構化數據(表)
  • 半結構化數據(文本,日志)
  • 非結構化數據(圖像,視頻)

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

  • 實質公式場景對參數的看法利用的信息最小化結構風險loss+正則
    決策模型

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

      ? ? ? ?

    • 貝葉斯估計中的先驗概率其實就相當于最小化結構風險函數中的正則項,若先驗為拉普拉斯分布,則為L1,若先驗為高斯分布,則為L2

  • 算法
    • 最優化方法

(二)數據

1.常見抽樣方法

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

(2)分層抽樣


2.類別樣本不平衡的解決方法(假設負樣本遠遠大于正樣本數量)

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

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

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


3.處理數據缺失的常用方法:

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

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

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

(4)整列刪除


4.構造線下驗證集的常用方法:

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

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

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

PS:

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

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

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

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


5.常見的離線評價指標:

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

其中平均準確率是對各個類的準確率取平均值

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

(3)ROC和PRC

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

6.常見的在線評價指標——A/B test


7.驗證集和測試集的區別

驗證集:用于調整子模型或者其超參數,做模型選擇

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

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


(三)特征

1.冗余特征

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

(2)去除冗余特征會減輕學習過程的負擔,增加冗余特征會降低學習任務的難度;


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

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

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

PS:

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

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


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

(1)過濾式 Filter

根據CHI,PCA等降維

先做特征選擇,再訓練學習器

優點: 快速, 只需要基礎統計知識, 特征選擇過程與后續的學習器的訓練沒有關系 。

缺點:特征之間的組合效應難以挖掘。

(2)包裹式 Wrapper

根據效果好的算法的結果搜索 “量身定做”的特征子集

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

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

(3)嵌入式Embedded

將特征選擇與學習器訓練融為一體使用各種的稀疏和懲罰項

優點: 快速, 并且面向算法,兩者在同一個優化過程中完成,即在學習器訓練過程中自動地進行了特征選擇。

缺點: 需要調整結構和參數配置, 而這需要深入的知識和經驗。


(四)模型

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

(1)正則化

(2)交叉驗證

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


2.過擬合與欠擬合

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

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


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

(1)泛化能力是指由該方法學習到的模型對未知數據的預測能力,是學習方法本質上最重要的性質;

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


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

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

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



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

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

標準化方法公式結果適用于應用z-scorey=(x-μ)/σ變換為正態分布最大最小未知/存在野點數據預處理,優化后用作Batch Norm小數定標 y=x/10^n移動小數的位置使得全部小于1

Logisticy=1/(1+e^(-x))
數據分布很遠可導,廣泛應用


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

(1)數據集擴增

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


6.bias與variance

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

擬合誤差表示是否已經把線偏差到指定位置

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

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

(3)error = bias + variance

是個問題


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


8.模型參數與超參數

(1)機器學習模型建立過程其實是一個參數學習與調優的過程,參數包括模型參數與超參數;

(2)模型參數使指通過模型訓練中的學習算法而進行調整的,而模型超參數不是通過學習算法而來的,但是同樣也需要進行調優,比如特征的維數等;

(3)常見的調參方法有:網格搜索,隨機搜索,啟發式搜索;

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


9.VC維(Vapnik-Chervonenkis Dimension):VC維是統計學習理論中的一個核心概念,它是目前為止對函數集學習性能的最好描述指標

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

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


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

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

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

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

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


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


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


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

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

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

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


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

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

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


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

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

美團特征:

特征的生產流程

特征的統計部分的流程:

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

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

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

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

通用模型舉隅

排序層

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

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


模型集成方法:

Bagging

【切分數據集,結果加權】Bagging試圖在小樣本集上實現相似的學習模塊,然后對預測值求平均值。對于Bagging一般來說,你可以在不同數據集上使用不同學習模塊。正如你所期望的那樣,這樣可以幫助我們減少方差,增強泛化。


Boosting

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


Stacking

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

線性stacking:

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


二次線性stacking:

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


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

如何選擇要融合的模型的超參數:
比如,標準化的時候選用三種:
  • 不標準化數據
  • 使用z標準化
  • 使用0-1標準化
另外,在特征選擇和數據缺失值填補的時候使用不同參數
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,321評論 6 543
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,559評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,442評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,835評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,581評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,922評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,931評論 3 447
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,096評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,639評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,374評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,591評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,104評論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,789評論 3 349
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,196評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,524評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,322評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,554評論 2 379

推薦閱讀更多精彩內容