1、最大熵模型
最大熵原理是概率學習的一個準則。最大熵原理認爲,在學習概率模型時,在所有可能的概率模型(分佈)中,熵最大的模型是最好的模型。通常用約束條件來確定概率模型的集合。所以,最大熵原理也可以表述爲在滿足約束條件的模型集合中選取熵最大的模型,而這個熵最大的模型稱爲最大熵模型。
最大熵原理認爲要選擇的概率模型首先必須滿足已有的事實,即約束條件。在沒有更多信息的情況下,那些不確定的部分都是“等可能的”。
最大熵模型的學習可以形式化爲約束最優化問題,即:
最大熵模型實際上是一個條件概率。
2、拉格朗日乘子法
拉格朗日乘子法是一種優化算法,它是尋找多元函數在一組約束下的極值的方法。對於約束最優化問題,通過引入拉格朗日乘子,可將有d個變量與k個約束條件的最優化問題轉化爲具有d+k個變量的無約束優化問題。最大熵模型和支持向量機是應用拉格朗日乘子法的典型模型
約束優化問題根據約束條件的不同又可分爲:等式約束優化問題和不等式約束優化問題。
等式約束問題:
假設函數、是定義在實數域的連續可微函數,在個等式約束下的優化問題
那麼直接可以定義拉格朗日函數:
這樣就將等式約束優化問題變爲無約束優化問題
不等式約束優化問題:
假設函數、是定義在實數域的連續可微函數,在個不等式約束下的優化問題
那麼對應的拉格朗日函數爲:
但是不等式約束會引入KKT條件():
將其推廣,考慮個等式約束和個不等式約束,那麼其約束最優化問題
那麼相應的拉格朗日函數爲:
其中爲連續可微函數,爲拉格朗日乘子。
3、KKT條件
4、梯度下降法
(1)、隨機梯度下降法(stochastic gradient descent,sgd):在更新權重的時候只考慮一個樣本點,這樣大大減小了計算複雜度,每一次更新不一定朝着極小值的方向,但是整體方向是朝着極小值的方向,需要的迭代次數要比批量梯度下降多。
(2)、批量梯度下降法(batch gradient descent,bgd):每一次更新都是針對所有的訓練樣本來最小化損失函數的,這樣是朝着最小值的方向進行更新的,每一次都是沿着梯度下降最快的方向進行更新的,但是由於每一次更新都是針對所有訓練樣本,所以計算複雜度較高,在樣本數量較多時,不適用。
(3)、小批量梯度下降法(mini-batch gradient descent,mbgd):是sgd和bgd的折中算法,每次更新權重的時候考慮小批量樣本點,比如每次考慮10或20個樣本點,這樣既提高了訓練速度,也減少了迭代次數。
5、正則化和正則化
在損失函數後一般會加一個額外項:正則項和正則項
正則化和正則化可看做是損失函數的懲罰項,懲罰是指對損失函數中某些參數做一些限制。和都有助於降低過擬合的風險,但是更容易獲得“稀疏解”。
正則化:
使用正則化的模型叫做Lasso迴歸,它可以產生稀疏權值矩陣,即產生一個稀疏模型,用於特徵選擇。
稀疏模型與特徵選擇:稀疏矩陣是指很多元素是0,只有少數元素爲非0的矩陣;在機器學習中,有時特徵數量很多,但並不是所有特徵都對模型有貢獻,那些對模型貢獻微乎其微的特徵,我們把它對應的權重可以近似設置爲0,只保留主要的特徵權重,這樣既保留了模型的主要框架,又降低了權重矩陣的稀疏性。這一點的思想和奇異值分解、降維的思想相近。
正則化就是以範數作爲正則化項,以線性迴歸模型爲例,其正則化後的表達式爲:
正則化:
正則化可以有效的防止過擬合,其在損失函數後加入範數來進行正則化,以線性迴歸中的爲例,以平方誤差函數爲損失函數,其正則化的表達式爲:
稱此式爲“嶺迴歸”(ridge regression)。其中稱爲正則化參數。
範數等值線和平方誤差等值線的相交處即爲上式中的解,很明顯,正則化的解大多位於座標軸上,因此其更容易得到稀疏解。
6、機器學習中數據缺失值的處理
當某特徵的缺失值較多時,可以將該特徵捨棄掉,避免帶入更大的誤差。
當某特徵的缺失值較少時,處理方法就會更多一些:
1、用均值填充缺失值
2、使用上下數據進行填充
3、利用插值法進行填充
7、無約束最優化問題求解方法
1.梯度下降法:
梯度下降法(gradient descent)是一階優化算法,也稱爲最速下降法(實際上並不是最速)。梯度下降法是迭代算法,每一步需要求解目標函數的梯度向量,由於負梯度方向是使函數數值下降最快的方向,在迭代的每一步,以負梯度方向更新x的值,從而達到減小函數值的目的。 梯度下降的算法如下:
當目標函數是凸函數時,梯度下降的解是全局最優解。一般情況下,其解不保證是全局最優解。
2. 牛頓法
牛頓法(Newton method)是二階優化算法,每一步需要求解目標函數的Hessian矩陣(多元函數的二階偏導數構成的方陣,其描述的是函數的局部曲率)的逆矩陣,計算複雜。其算法如下:
下圖中紅色表示牛頓法的迭代路徑,綠色表示梯度下降法的迭代路徑。
3. 擬牛頓法
擬牛頓法是基於牛頓法設計的,其通過正定矩陣近似海森矩陣的逆矩陣或海森矩陣。
4. 共軛梯度法
共軛梯度法是介於梯度下降法(最速下降法)與牛頓法之間的一個方法,它僅需利用一階導數信息,但克服了梯度下降法收斂慢的缺點,又避免了牛頓法需要存儲和計算Hessian矩陣並求逆的缺點,共軛梯度法不僅是解決大型線性方程組最有用的方法之一,也是解大型非線性最優化最有效的算法之一。在各種優化算法中,共軛梯度法是非常重要的一種。其優點是所需存儲量小,具有逐步收斂性,穩定性高,而且不需要任何外來參數。下圖爲共軛梯度法和梯度下降法搜索最優解的路徑對比示意圖:
紅色表示共軛梯度法,綠色表示梯度下降法。
8. 偏差和方差
當我們在討論預測模型是,預測誤差由兩部分導致:偏差(bias)和方差(variance)。偏差是模型預測值與實際值之間的差值,它描述模型的精確性;方差描述的是給定數據點模型預測的變異性,即模型的穩定性。下圖是偏差和方差的靶心圖表示,靶心位置(即紅圈位置)表示模型完美的預測。假設將模型的每一次預測視爲一次打靶,那麼顯然每次打靶都打中紅圈區域最好,也就是打的又準又穩,準對應着low bias,而穩則對應着low variance。
想要low bias,就得複雜化模型,增加模型參數,但是這樣容易導致過擬合(overfitting),過擬合對應high variance;想要low variance,就得簡化模型,減少模型參數,這樣容易導致欠擬合(underfitting),欠擬合對應high bias。
上面的圖表示模型複雜度和預測誤差之間的關係。
9. GBDT和XGBoost的區別