1. 程式人生 > >吳恩達機器學習——優化演算法(高階演算法使用+多類別分類)

吳恩達機器學習——優化演算法(高階演算法使用+多類別分類)

其他演算法

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

這樣,我們就可以將為三角形的邊界得到(如下圖)

同樣的方法應對於正方形和叉叉,然後得到分類的邊界線

通過這種方式,我們得到三個分類器

最終,我們把樣本最可能為的值在三種類型中,歸納出來