吳恩達機器學習——優化演算法(高階演算法使用+多類別分類)
其他演算法
Conjugate descent
BFGS
L-BFGS
特點:
不需要手動計算學習率
比梯度下降效率更高
缺點:
更加的複雜
如何排程高階演算法優化代價函式
Matlab實現方法
例項:
假設已知代價函式,我們通過代價函式求得了偏導數
首先,完成代價函式的實現(程式碼如下)
function [jVal,gradient] = costFunction(theta)
jVal = (theta(1)-5)^2+(theta(2)-5)^2;
gradient = zeros(2,1);
gradient(1) = 2*(theta(1)-5);
gradient(2) = 2*(theta(2)-5);
這些內容是對上述關係式的實現
呼叫高階演算法求代價函式
options = optimset('GradObj','on','MaxIter',100);
第一個引數為GradObj:on意為設定目標引數為開啟,意為要給該演算法設定一個梯度
第二個引數為MaxLter:100意為最大迭代次數為100
initialTheta = zeros(2,1);
θ初始值
[optTheta,functionVal,exitFlag] = fminunc(@costFunction,initialTheta,options);
Fminunc是一個高階演算法,第一個引數為代價函式,無需設定學校效率,該演算法會自動計算出相應的學習效率。
計算結果如下:
OptTheta為最終計算得到的theta的結果,exitflag=1表示結果為收斂的,同樣functionVal表示最終的代價函式的值。
通用格式:
注意在用matlab實現的時候是從1到n+1因為在matlab中陣列是從下標1開始計數。
多類資料分類圖形
1、建立偽類
首先是針對為三角形的類別
將為三角形的y設定為1,不為三角形的樣本設定為0
這樣,我們就可以將為三角形的邊界得到(如下圖)
同樣的方法應對於正方形和叉叉,然後得到分類的邊界線
通過這種方式,我們得到三個分類器
最終,我們把樣本最可能為的值在三種類型中,歸納出來