背景:要预测的y是一个离散值,难以用一个直线去拟合 就像是判断垃圾邮件,判断恶性肿瘤,要么是,要么不是,像这种,y∈{0,1} 但是使用线性回归的话,算法的输出值(假设值)h_θ(x)可能会>1,<0, 对此,我们使用Logistic回归使得预测值0<=h_θ(x)<=1,可以把它看作一个分类算法
Logistic function: 可以把h_θ(x)理解为对一个输入x,y是1的概率,概率只可能在0到1之间
我们要预测y=1,只需 θ T θ^T θT>=0,预测y=0,只需 θ T θ^T θT<0 如上图,直线 x 1 + x 2 = 3 x_1+x_2=3 x1+x2=3就是决策界限,将区间分为两半,一侧预测y=0,一侧y=1。 决策边界是假设函数的一个属性,不是数据集的属性。
非线性决策边界:
对于上图这个给定的训练集,我们如何选择,或者说如何拟合参数θ? 我们在线性回归时,使用了这个函数。我们把黑框中的叫Cost function,它表示在预测值是 h θ ( x ) h_θ(x) hθ(x)时,而实际标签是y的情况下,我们希望学习算法付出的代价。这个代价值就是1/2乘以预测值h和实际观测的y值的差的平方。
但是不能直接用,把 1 / ( 1 + e ( − θ T x ) ) 1/(1+e^ {(-θ^Tx)}) 1/(1+e(−θTx))代入 h θ ( x ) h_θ(x) hθ(x),得到Cost function,再代入J(θ),得到的J(θ)是一个非凸函数,有很多局部最小值。用在Logistic regression上的Cost function应该是这个样子: 当y=1时,它的图像大概是这个样子: 看上图,当y=1、h(x)=0时,意味着预测的概率为0,但是它发生了,这个时候的代价函数值是无穷大。 当y=0时,它的图像大概是这个样子: 看上图,当y=0、h(x)=1时,意味着预测的概率为1,但是它没发生,这个时候的代价函数值是无穷大。 通过这个Cost function,整体的代价函数J(θ)会是一个凸函数,没有局部最优解。
目标:找一个相对简单的方法来写代价函数,如何使用梯度下降法拟合出逻辑回归的参数。
Cost函数: C o s t ( h θ ( x ) , y ) = − y l o g ( h θ ( x ) ) − ( 1 − y ) l o g ( 1 − h θ ( x ) ) Cost(h_\theta(x),y)=-ylog(h_\theta(x))-(1-y)log(1-h_\theta(x)) Cost(hθ(x),y)=−ylog(hθ(x))−(1−y)log(1−hθ(x)) 逻辑回归代价函数: 使用梯度下降法最小化代价函数J(θ): 也就是下图: 线性回归和逻辑回归都是用上图式子,只是逻辑回归的h_θ(x)变了 线性回归: h θ ( x i ) = θ T ∗ x h_θ(x^i) = θ ^T*x hθ(xi)=θT∗x 逻辑回归: h θ ( x i ) = 1 / ( 1 + e ( − θ T ∗ x ) ) h_θ(x^i) = 1/(1+e ^{(-θ ^T*x)}) hθ(xi)=1/(1+e(−θT∗x))
目标:学习高级优化方法,相比梯度下降法大大提高逻辑回归运行速度。
换个角度看梯度下降法 我们有代价函数J(θ),我们计算出J(θ)和J(θ)的偏导数,带入梯度下降法中,就可以最小化代价函数。
options是可以存储你想要的options的数据结构。
目标:使用逻辑回归解决多类别分类问题
就像区分天气一样,给各种天气取离散值,如晴天:y=1,阴天:y=2,雨天:y=3等。 一对多分类原理: 假设我们有上图中的三个训练集,我们要把它转换成三个独立的二元分类问题,方法就是对某一个训练集,把剩下两个训练集归为一类,就变成了二元分类问题。如图: 三个逻辑回归分类器分别为 h θ 1 ( x ) , h θ 2 ( x ) , h θ 3 ( x ) h_θ ^1(x),h_θ ^2(x),h_θ ^3(x) hθ1(x),hθ2(x),hθ3(x) 估计对不同的x、θ,y=i的概率,三个分类器分别表示y=1、2、3的概率。 分类: 对一个新的输入x,选择h最大的类别,无论给出什么值的i,h都是最大的,我们就预测y就是那个值。