分类

二分类:

假设0为“负类”(Negative class),1为“正类”(Positive class)
逻辑回归(Logistic regression)
假设有一个数据集,需要预测肿瘤是良性(y = 0)和恶性(y = 1)。
使用线性回归(linear regression)来解决这个问题:
逻辑回归(Logistic regression)
由上图可以看出模拟的效果并不好,所以不建议将线性回归用于分类问题。

逻辑回归(logic regression)实际上是一种分类算法(如下)。
逻辑回归(Logistic regression)

假设陈述

hθ(x) = g(z) = 1 / (1 + e -z)

z = θTx

Sigmoid function = Logistic function
逻辑回归(Logistic regression)
假设模型已训练好,则输出值为 y = 1 的概率,根据实际选择阈值提高预测的准确度。
逻辑回归(Logistic regression)

决策界限

假设输出值hθ(x) >= 0.5 , y = 1; hθ(x) < 0.5 , y = 0 。

由下图看出 y = 1 时,z >= 0 (θTx >= 0); y = 0 时,z < 0(θTx < 0) 。
逻辑回归(Logistic regression)
逻辑回归(Logistic regression)
通过增加复杂的多项式可以得到更复杂的决策边界。

如下图可以得到一个圆形的决策边界。
逻辑回归(Logistic regression)

代价函数

假设函数:
逻辑回归(Logistic regression)
下图代价函数,是非凸函数(因为sigmoid函数是一种复杂的函数导致代价函数成为非凸函数),如果使用梯度下降,几乎不能收敛到最全局最小值,所以我们需要寻找其他的是凸函数的代价函数,这样才可以使用之前学过的算法。
逻辑回归(Logistic regression)
使用下面的代价函数可以找到全局最小值。
逻辑回归(Logistic regression)
逻辑回归(Logistic regression)
因为y要么是1,要么是0。

当假设h(θ)=1时,如果y是1,那么cost=0;如果y=0,那么cost=+∞。
当假设h(θ)=0时,如果y时1,那么cost=+∞;如果y=0,那么cost=0。
即假设越符合实际,惩罚力度小,反之惩罚力度大。

简化代价函数与梯度下降

简化代价函数:

J(θ) = - 1 / m [ ∑ y(i)log( hθ(x(i)) ) + ( 1 - y(i)log( 1 - hθ(x(i)) ) ) ]
逻辑回归(Logistic regression)
逻辑回归(Logistic regression)
最小化 J(θ) 即可得到 某组 θ 。

由最大似然估计,得出来的式子。

该代价函数它是凸的(convex),所以使用梯度下降可以获得全局最优解。

梯度下降:

由于 hθ(x)改变,所以 Logistic回归与线性回归不同。

但线性回归的特征缩放(提高梯度下降的速度)在逻辑回归中依然可以使用。
逻辑回归(Logistic regression)
逻辑回归(Logistic regression)

高级优化

使用高级优化算法和一些高级优化方法会使我们逻辑回归算法的速度更快,能更好的解决大型的机器学习问题。

梯度下降算法:
逻辑回归(Logistic regression)
其他的更高级的算法:
共轭梯度法(Conjugate gradient);
BFGS算法;
L-BFGS算法。

这些算法优点是不需要我们手动的选择α;速度快于梯度下降法。缺点是复杂。
所以我们只需要会使用它们,而不需要深究其中的原理。
逻辑回归(Logistic regression)

在Octave中使用这些算法的例子:

首先我们需要自己实现一个代价函数:例如 costFunction(theta) ,它的作用是返回两个自变量,第一个 jVal 是代价函数 J(θ) 的值,第二个 gradient 是一个向量为代价函数的各项偏导值。

然后调用高级优化函数 fminunc(无约束最小化函数) 调用方式:
1.你要设置几个 options(一个你想要存储的数据结构);( ‘GradObj’ , ‘on’ )设置梯度目标参数为打开,表明你要为这个算法提供一个梯度;( ’MaxIter‘ )设置最大;( ’ 100 ‘)迭代次数。
2. initialTheta 给出 θ 的初始值。
3. 调用 fminunc ,@表示指向定义的 costFunction 函数的指针;返回值 optTheta 求解出的 θ 向量,functionVal 为 代价函数值,exitFlag 为算法是否收敛。

逻辑回归(Logistic regression)
逻辑回归(Logistic regression)
初始化的θ维度要大于等于2。

当我们使用fminunc函数的时候,Octave会自动的帮我们挑选出合适的高级算法去计算,我们不需要深究其中的细节,只需要会用即可。在一些大型的逻辑回归问题中,我们需要使用这些数值算法帮助我们优化运行速度。

多元分类:一对多

多类别分类问题:
逻辑回归(Logistic regression)
有多个类别:
逻辑回归(Logistic regression)
一对多算法(one-vs-all):
就是使用多个分类器,对于每一个类假设其为正类,然后使用一次二分类的判别算法即可分别得出各个类的分类。

预测是将 x 带入每一个分类器,选择其中输出值最大的分类器。
逻辑回归(Logistic regression)
逻辑回归(Logistic regression)

相关文章:

  • 2021-07-27
  • 2021-11-16
  • 2021-11-07
  • 2021-09-04
猜你喜欢
  • 2021-04-14
  • 2021-05-17
  • 2021-09-03
  • 2021-06-20
  • 2021-08-07
  • 2021-08-04
相关资源
相似解决方案