Logistic Regression
Classification
Classification : y = 0 or 1;
Linear Regression : hθ(X)>1 or hθ(X)<0
Logistic Regression : 0≤hθ(X)≤1
使用线性回归算法将不能很好的预测值。
Hypothesis Representation
Logistics Regression Model
Want 0≤hθ(X)≤1
Logisitics Function or Sigmoid Function G
Sigmoid Fucntion:
Interpretation of Hypothesis Output
hθ(x) = 给定一个特征 x⃗ , 输出 y=1 的概率。
(estimated probability that
y=1
on input
x⃗
)
Decision boundary
即
hθ(x)
输出的值是在给定
x
和
hθ(x) 设定不同的形式, 可以画出多样的函数图形。
Cost Function
逻辑回归不能使用 标准方差方程, 因为 在逻辑回归中 hθ(x) 函数是非线性的, 使用标准方差方程会导致CostFunction 是一个非凸函数, 将会有多个局部最优解, 将不能使用梯度下降算法求出 θ 使得CostFunction 最小。
逻辑回归的CostFunction定义如下:
这样定义代价函数, 使得在 y=1 时, hθ(x)−>0 时, 与结果不相符合, 代价趋于无穷大。
y=0 事, hθ(x)−>1 时,与结果不相符合, 代价趋于无穷大。
而两者与结果相符合时, 代价非常小, 趋于 0。(相等则为0)
Gradient Descent
我们先把
Cost(hθ(x),y)
写成统一形式, 方便于梯度下降算法的推导。
这时候可以求出总的的代价函数 J(θ) :
这个时候 Logistics Regression 的梯度下降算法可以得出了:
可以发现, 和之前的线性回归是一样的。区别就是 hθ(x) 的区别了
Advanced optimization
Optimization algorithm:
-Gradient Descent
-Conjugate Gradient
-BFGS
-L-BFGS
后面三个算法有待学习。。。。
Octave Options
首先写出函数 J(θ) 以及 ∂∂θjJ(θ)
function [ jVal,gradient ] = advancedOptimizationTest( theta )
%ADVANCEDOPTIMIZATIONTEST 此处显示有关此函数的摘要
% 此处显示详细说明
% J_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);
end
然后就可以使用 fminunc() 函数得出 θ 和 函数结果 functionVal 、 exitFlag 是否收敛。
options = optimset('GradObj','on','MaxIter','100');
initialTheta = zeros(2,1);
[optTheta, functionVal, exitFlag] = fminunc(@advancedOptimizationTest, initialTheta, options);
如果有多个 feartures , 在代价函数中都要写出来。
Multi-class classification:One-vs-all
简而言之, 当有多种离散的值要进行处理时, 单独提出他们单独处理。结果即为 y=i 的概率了。