机器学习的简单逻辑回归的Advanced Optimization
Learning Course: One variable logistic regression optimization
單變量(只有一個(gè)特征)的用于分類的邏輯回歸的cost function的最小值求解, here:
x=[x1;x2]; y={0,1};
theta=[theta(1);theta(2)]
由于分類中的y值需為0-1之間的數(shù)值,因此這里的cost function不同于線性回歸的cost function。
hθ(x)=g(θTx), where g(x)= 1/(1-exp(-x)); thus hθ(x) = 1/(1-exp(-θTX));
Thus Cost(hθ(x),y)=?ylog(hθ(x))?(1?y)log(1?hθ(x)),?
因?yàn)楫?dāng)實(shí)際y =1時(shí),上述方程 cost =??ylog(hθ(x)), 因此在預(yù)測(cè)y值接近1時(shí),方程值趨近于0,即使cost value趨近于零,反之,預(yù)測(cè)值接近于0時(shí),cost value趨近于無窮大;對(duì)于y=0的推理也是同理。
然后 repeat θj :=θj - alpha*?(J(θ))/?(θj);
因此此處的優(yōu)化即使找到一個(gè)theta使得cost function,即我們的目標(biāo)方程的最小值。
?
以下用一個(gè)簡(jiǎn)化的例子來計(jì)算目標(biāo)方程的最小值
例如 cost function 為 J(theta) = (theta(1)-5)^2+(theta(2)-5)^2
先構(gòu)建出我們的目標(biāo)函數(shù)
function [jVal,gradiant] = costfunction(theta) jVal = (theta(1)-5)^2+(theta(2))-5)^2; gradiant = zeros(2,1); gradiant(1) = 2*(theta(1)-5); gradiant(2) = 2*(theta(2)-5); end然后我們使用optimization的函數(shù)
options = optimset('GradObj','on','MaxIter',100); initialTheta = zeros(2,1);% MaxIter定義最大迭代步數(shù),100即定義為100步
% GradObj指定義的梯度 [optTheta,fval,exitFlag] = fminunc(@costfunction,initialTheta,options); % optTheta export our optimal Theta value % fval export our final objective function value % exitFlag 返回算法的終止標(biāo)志;
% 大于零時(shí)為計(jì)算收斂,等于零時(shí)表示超過最大迭代次數(shù)(所以該增加maxiters),小于零時(shí)代表不收斂
% options是一個(gè)結(jié)構(gòu),里面有控制優(yōu)化過程的各種參數(shù)
這里對(duì) 'on'的理解我不是特別明白,根據(jù)解釋
| Hessian | If 'on', function uses user-defined Hessian, or Hessian information (when using HessMult), for the objective function. If 'off', function approximates the Hessian using finite differences. | L | fmincon, fminunc |
?
?
這里的fminunc函數(shù)是matlab或者octave里已定義的函數(shù),其功能是無約束(x的值域無約束)最優(yōu)化問題求解,fminisearch和fminuc都可用于最小值求解,以下為簡(jiǎn)單總結(jié):
1.以上兩個(gè)函數(shù)都用于非線性多元函數(shù)最小值求解(因此注意求解的x的維度)
2. fminisearch適合階次低,但是斷點(diǎn)多的函數(shù)
3. fminunc適合高階連續(xù)函數(shù),因此當(dāng)階數(shù)大于等于2時(shí),使用fminunc效果更好,但注意函數(shù)需連續(xù)。
以下為fminunc函數(shù)的一般調(diào)用格式:
x = fminunc(fun,x0);
x為返回的使函數(shù)值最小的x值,x0為優(yōu)化的初始值,fun為我們定義的目標(biāo)函數(shù),也可以用@fun來調(diào)用定義函數(shù),如下
x = fminunc(@fun,x0);
本篇博客的目的是為了總結(jié)吳恩達(dá)老師的機(jī)器學(xué)習(xí)課程,以便幫助自己更好的學(xué)習(xí),如有錯(cuò)誤之處,還請(qǐng)指出討論以便改正。
?
轉(zhuǎn)載于:https://www.cnblogs.com/chantervin/p/6061723.html
總結(jié)
以上是生活随笔為你收集整理的机器学习的简单逻辑回归的Advanced Optimization的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CSS之层模型
- 下一篇: 使用shell脚本实现二进制、十进制、十