机器学习(3)-逻辑回归

逻辑回归(Logistics Regression)

逻辑回归和线性回归类似。在现实回归中,函数hθ(x)是个线性函数。输入x和输出是线性关系,如果x很大或很小,那么输出范围难以控制。逻辑回归可以解决这个问题。逻辑回归把输出限定在了一个范围内,常常用于分类问题中。

  • 一个常用的逻辑回归函数为:
    hθ(x)=g(θTx)=11+eθx

    这是Sigmoid函数,形状如下:
    Sigmoid函数

逻辑回归,对于给定的输入值,输出都在(0,1)之间。用于分类问题时,例如肿瘤大小和其是否是良性,这是个二元分类;可以分为0和1,对于输出给出一个阈值η,输出大于阈值阈值η时,判断为1,小于阈值η,判断为0。

决策边界(Decision Boundary)

假设
hθ(x)=g(θ0+θ1x1+θ2x2)


θ=[3,1,1],当1+x1+x2>0时,判断为1,否则为0。那么可以得到一个决策边界,如下图所示
线性决策边界

如果边界是非线性的呢?如下图所示:
非线性边界
那么可以用一个高阶函数来拟合。
hθ(x)=g(θ0+θ1xx+θ2x2+θ3x22+θ4x22)


这里θ=[1,0,0,1,1]。当1+x21+x22>0时为一类,否则为另一类。如果形状更为复杂,那么可以通过更复杂的高阶公式来拟合。

损失函数(Cost Function)

对于线性回归,损失函数的含义为:真实值和预测值之间误差的平方和均值。
线性回归损失函数
如果将逻辑回归的
hθ(x)=g(θTx)=11+eθx


直接代入,得到的将是一个非凸函数。这样的代价函数有许多局部最小值,使用梯度下降法,可能找不到全局最优值。重新定义损失函数如下:
逻辑回归损失函数
这样损失函数的意义就非常清楚了:

  • y=1时,如果hθ(x)(0,1)区间上,离1越远,那么损失函数值log(hθ(x))越大。
  • y=0时,如果hθ(x)(0,1)区间上,离0越远,那么损失函数值log(1hθ(x))越大。

如下图所示
逻辑回归损失函数

因为y总是0或1,损失函数可以推导为:
logic_loss_fun_2.jpg

梯度下降

最小化损失函数J(θ),逻辑回归也是用梯度下降法。hθ(x)的含义为y=1的概率,对于输入xy=0y=1的概率为:
probability.jpg
结合起来:
probability_2.jpg
求最大似然函数
max_likehood.jpg
求对数最大似然函数
log_max_likehood.jpg
这个结果很像损失函数J(θ)

参数更新过程为:
logic_theta_update.jpg

矩阵化

上面梯度更新的过程,需要一个for循环m次。可以用 矩阵的形式一次完成;下面x的每一行为一个训练样本,那么:
log_vector_update.jpg
可以看出hθ(x)y的m的循环,可以由g(A)y一次完成。因此梯度为:
A=xθ


E=g(A)y

θ:=θαxTE

实验

训练数据为两门课的考试成绩,根据这两门课的成绩来决定是否录取。先可视化训练数据。
训练数据
回归函数为
hθ(x)=g(θTx)=11+eθx


损失函数
logic_loss_fun_2.jpg
参数更新过程为:
logic_theta_update.jpg
这里用到两个函数

1
options = optimset('param1',value1,'param2',value2,...)

这个函数作用为创建一个最优化选项,设定参数的值。

1
options = optimset('GradObj', 'on', 'MaxIter', 400);

表示使用梯度来优化目标函数,最大迭代次数为400次。
fminunc用于求无约束最优化的最小值。这里用法为

1
2
[theta, cost] = ...
fminunc(@(t)(costFunction(t, X, y)), initial_theta, options);

优化函数costFunction,优化的参数为t,其初始值为initial_theta,用到了上面创建的最优化选项。最有求得的结果,如下图
逻辑回归结果

参考:Programming Exercise 2: Logistic Regression

参考:http://blog.csdn.net/pakko/article/details/37878837

文章目录
  1. 1. 逻辑回归(Logistics Regression)
  2. 2. 决策边界(Decision Boundary)
  3. 3. 损失函数(Cost Function)
  4. 4. 梯度下降
    1. 4.1. 矩阵化
  5. 5. 实验
,
#add by kangyabing