機器學習算法筆記(一)

(1)容斥原理

a. 容斥原理是組合數學方法,可以求解集合、複合事件的概率等。

b. 計算幾個集合並集的大小,先計算出所有單個集合的大小,減去所有兩個集合相交的部分,加上三個集合相交的部分,再減去四個集合相交的部分,以此類推,一直計算到所有集合相交的部分。

c. 概率論:

事件Ai(i=1,...,n),P(Ai)爲對應事件發生的概率。至少一個事件發生的概率:
這裏寫圖片描述

轉自:https://blog.csdn.net/m0_37286282/article/details/78869512

(2)基於物品的協同過濾算法

基於物品的協同過濾算法主要分爲兩步:

a. 計算物品之間的相似度

  其中Ni是喜歡物品i的用戶數 Nj是喜歡物品j的用戶數,分子式同時喜歡物品i和物品j的用戶數。

此時可以建立物品相似度矩陣C,在得到物品之間的相似度後,進入第二步。

b. 根據物品的相似度和用戶的歷史行爲給用戶生成推薦列表

  ItemCF通過如下公式計算用戶u對一個物品j的興趣

其中,Puj表示用戶u對物品j的興趣,N(u)表示用戶喜歡的物品集合(i是用戶喜歡的某一個物品),S(I, K)表示和物品i最相似的K個物品集合(j是這個集合中的一個物品),Wji表示物品j和物品i的相似度,Rui表示用戶u對物品i的興趣(這裏簡化Rui都等於1)

參考:https://blog.csdn.net/u011630575/article/details/78649331

(3)梯度下降法的另一個理解

a. 在機器學習任務中,需要最小化損失函數L(θ),其中θ是要求解的模型參數。梯度下降法常用來求解這種無約束最優化問題,是一種迭代方法:選取初值θ',不斷迭代,更新θ的值,進行損失函數的極小化 。

b. 迭代公式:

c. 將處進行一階泰勒展開:

要使得,可取,則:,α爲步長。

(4)XGBOOST針對傳統GBDT改進的地方

a. 誤差函數引入二階泰勒展開

b. 正則化項加入數的個數和節點權值的計算

c. 使用優化後的結構分數作爲新的目標函數,求解最優化的節點的參數

d. 利用貪心法計算分裂前後的增益(即新的目標函數),選取增益大的進行分割。

e. 近似算法進行樹的節點分裂,對於每個特徵,只考察分位點,減少計算量。(實際上是二階導數值作爲權重?)

f. 缺失值自動學習出分裂的方向

g. 借鑑隨機森林列抽樣,支持行抽樣、縮減、支持自定義損失函數h. 特徵預排序,以column block的結構存在內存中 加速了splid finding的過程,只需要在建樹前排序一次,後面的節點分裂時直接根據索引得到梯度信息

i. 支持並行。xgboost的並行是在特徵粒度上的。我們知道,決策樹的學習最耗時的一個步驟就是對特徵的值進行排序(因爲要確定最佳分割點),xgboost在訓練之前,預先對數據進行了排序,然後保存爲block結構,後面的迭代中重複地使用這個結構,大大減小計算量。這個block結構也使得並行成爲了可能,在進行節點的分裂時,需要計算每個特徵的增益,最終選增益最大的那個特徵去做分裂,那麼各個特徵的增益計算就可以開多線程進行

j. 可並行的近似直方圖算法:把連續的浮點特徵值離散化成k個整數,同時構造一個寬度爲k的直方圖。在遍歷數據的時候,根據離散化後的值作爲索引在直方圖中累計統計量,當遍歷一次數據後,直方圖累積了需要的統計量,然後根據直方圖的離散值,遍歷尋找最優的分割點

(5)LightGBM傳統XGBOOST改進的地方

1. 直方圖差加速。一個葉子的直方圖可以由它的父親節點直方圖做差得到,提升一倍速度

2. 建樹過程的兩種方法。XGBoost同一層所有節點分裂,最後剪枝。lgb選取具有最大增益的節點分裂,容易過擬合,通過max_depth限制

3. 特徵並行優化。傳統的特徵並行,每個worker只有部分特徵 全局切分需要網絡通信;lgb每個worker保存所有數據集

4. 數據並行優化

5. 迭代加速。在每一次迭代前,利用了GBDT中樣本誤差和梯度的關係,對訓練樣本進行採樣,誤差大的保留,小的採樣一個子集,但給一個權重,保證數據分佈不變。

6. 特徵加速。在特徵維度很大的數據上,特徵空間一般都很稀疏。降低構造特徵直方圖需要便利的特徵數量。

(6)深度學習防止過擬合的方法

1. 參數正則化:

2. 數據增強:增加訓練樣本數量是防止過擬合最直接有效的一種方法

3. 提前終止:

4. dropout:在深度神經網絡訓練過程中,按照一定的概率隨機丟棄(dropout)一些神經元的激活,提高模型的泛化能力,使模型更爲魯棒

(7)機器學習中的防過擬合

1. 增大數據量:最有效的方法

2. 選擇較爲簡單的模型

3. 繼承方法:bagging等

4. 正則化項的添加

5. early stopping

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章