機器學習思考題目 04基礎演算法

2021-09-12 00:17:09 字數 1573 閱讀 6833

本文直譯自《hands on ml》課後題。(有改動的以【】表示)。

可以用隨機梯度下降法(sgd)或者小批量梯度下降(mini-batch gradient descent)。如果訓練集能否放入記憶體的話也可以用批量梯度下降演算法(batch gradient descent)。但是不宜用標準方程(normal equation)的解法,因為計算複雜度隨著特徵數增長極快。

這種情況下,損失函式的形狀為乙個細長的碗(an elongated bowl),因此梯度下降演算法會花費很長時間來收斂。

為了解決這個問題,需要在訓練之前對資料進行縮放(scale the data)。注意:標準方程解法在這種情況下,不需要縮放也可以工作的很好。

【svm也需要訓練之前標準化】

不會,因為邏輯回歸的損失函式是凸的。

(a)如果優化問題是凸的(例如線性回歸或邏輯回歸),假如學習率(learning rate)不很大,那麼所有的梯度下降演算法都會接近最優解,最後得到乙個非常相近(fairly similar)的模型。

(b)除非逐漸減少學習率,sgd和小批量gd(mini-batch gd)永遠不會真正收斂;它們會在最優點附近來回跳躍。這意味著讓它們執行很長時間,這些梯度下降演算法會產生不同(slightly different)的模型。

如果驗證誤差在每個epoch結束之後上公升,乙個可能是學習率太大了,演算法發散(diverging):

(a)如果訓練誤差同時也上公升了,這就很明確,需要減小學習率

(b)如果訓練誤差沒有變大,說明模型過擬合了,需要停止訓練。

由於包含隨機性,不論sgd還是mini-batch gd,都不能保證誤差每一步都減小。如果發現驗證誤差增大,立刻停止訓練,可能停止地過早了,演算法還沒有找到最優解。

乙個更好的選擇是每隔一定步數儲存模型,當有一段時間模型效果沒有提高的時候,可以回去找到儲存的最好的模型。

sgd(或mini-batch)會最快地到達最優解附近,因為它每次只考慮乙個(或若干個)訓練樣本,因此訓練時迭代最快。

當給予足夠的時間,只有batch gd會實際上收斂。除非逐漸減少學習率,sgd和mini-batch gd 會在最優解附近來回跳躍。

如果驗證誤差比訓練誤差大得多,可能是因為模型過擬合了。

解決辦法:

(a)減少多項式的階數:低階多項式不容易過擬合。

(b)可以對模型進行正則化:在損失函式中新增l2懲罰(ridge)或l1懲罰(lasso)。這也會減少模型的自由度的階數。

(c)可以嘗試增加資料集的數量。

此模型可能是欠擬合,這意味著模型偏差大;應該減小α。

(a)有正則化的模型一般都會比沒有正則化的模型表現好,因此嶺回歸一般都比純線性回歸效果好;

(b)lasso回歸用了l1懲罰項,這會傾向於把權重變為0。這會生成乙個稀疏模型——除了一些最重要的權重,其他的都為0。因此當只有部分特徵重要的時候,這是一種自動的選擇特徵的方法。當你不確定(只有部分特徵重要的)時候,用嶺回歸。

(c)elastic net一般都會比lasso從表現好,因為lasso在某些問題中會表現異常(例如有若干特徵之間相關性很強或者特徵數目多於樣本數目)。而且lasso引入了乙個超引數。

由於類之間可能有交叉(not exlusive),因此訓練兩個邏輯回歸分類器即可。

機器學習思考題目 06決策樹

本文直譯自 hands on ml 課後題。有改動的以 表示 一棵勻稱 well balanced 的二叉樹,如果共有m個葉子,則它的深度為log2 m 取整 一棵二元決策樹 binary decision tree 訓練結束時,或多或少平衡,每個葉子代表乙個樣本 訓練時沒有限制的情況下 因此如果包...

演算法導論 思考題 4 3

a.利用主方法可得,t n n的log3 4次方 b.n f n lgn,不能應用主方法 共log3 n 1層,每層代價n lg n 3 的i次方 最後一層共n個 1 的結點,代價為 n t n n lg n 3 的i次方 n n lgn n n log3 2 n o n 又因為t n 最後一層代價...

演算法導論 思考題 8 4

寫一下我的思路,大概是對的,詳細證明不出來。設藍色水壺為a,紅色為b 先取乙個a1,對所有的b做一次比較,可以將b分為兩個部分,一部分大於a1,一部分小於a1 再取乙個a2,將b分為三個部分 再取a3,將b分為四個部分 假設現在b被分成了k個部分,b1,b2,b3.bk,每次取ai,都從b集合的一半...