机器学习入门系列三(关键词:逻辑回归,正则化)

来源:互联网 发布:内江百科线材优化系统 编辑:程序博客网 时间:2024/05/03 05:06

机器学习入门系列三(关键词:逻辑回归,正则化)


目录(?)[+]

  1. 一逻辑回归
    1. 逻辑回归
    2. 假设表示
    3. 决策边界
    4. 代价函数
    5. 其他优化方法
    6. 多元分类
  2. 二正则化

一、逻辑回归

1.逻辑回归

什么是逻辑回归问题,通俗地讲就是监督下的分类问题。通过前面的学习,我们已经掌握如何解决线性(非线性)回归的问题。那面对分类问题我们是否也可以用线性回归呢?简单起见,我们先讨论二元分类,首先让我们来看一个例子,肿瘤的大小与是否是恶性的关系,其中红色的×表示肿瘤大小,对应的y轴表示是否为恶性。
这里写图片描述
我们对数据进行线性回归,得到了一条很完美的直线。我们可以规定,当拟合出来的y值大于0.5时,为恶性1;当y值小于0.5时,为良性0。这一切看起来似乎很合理,当我们增加一个数据,即有一个肿瘤非常大,显然它是恶性的,但是再用线性回归时,我们可以发现为了去更好地拟合,直线的斜率变低,0.5不再是恶性与良性的分界线。除了这个问题之外,我们知道y的可取值应该是[0,1],而采用线性回归我们发现y的可取值是[,+]。这一系列的问题就促使我们希望寻求一个新的方法来解决分类问题。

2.假设表示

在线性回归问题中,我们定义了

hθ(x)=θTx(1)
在分类问题中,我们改变该函数,增加一个作用函数,即
hθ(x)=g(θTx)(2)
其中g(z)为sigmoid函数
g(z)=11+ez(3)

那么把式(3)代入式(2),得
hθ(x)=11+eθTx(4)
为什么要使用sigmoid函数?有一系列的数学原因,感兴趣的可以搜索广义线性模型,在这里就不阐述原因了。我们来直观地感受一下sigmoid函数,当z时,g0;当z+时,g1
这里写图片描述
下面我们对hθ(x)输出的结果做一个解释。由于它的取值范围,我们可以把它理解为概率。若hθ(x)=0.7,在二元分类(本例)中即表示肿瘤在输入变量x下为恶性(y=1)的概率为70%。由于是二元分类,y取值不是0就是1,因此肿瘤为良性(y=0)的概率为170%=30%
由于sigmoid函数的性质,且hθ(x)(0,1),我们认为当hθ(x)0.5时,我们把数据x预测为类1即y=1;当hθ(x)<0.5时,我们把数据x预测为类0即y=0。因此当θTx0时,预测为类1;当θTx<0时,预测为类0。

3.决策边界

既然是分类问题,那么对于二分类,hθ(x)一定可以做出一个决策边界,当数据集在某一侧时预测为类1,在另一侧时预测为类0。为了更直观地理解,我们来看一个这样一个例子,训练集分为两类,其中红叉表示一类,蓝圈表示另一类。
这里写图片描述
对于

hθ(x)=g(θ0+θ1x1+θ2x2)(5)
假设我们得到的参数θ=[311],此时决策边界为黑线所示。由sigmoid函数我们可知,当θ0+θ1x1+θ2x20时,预测为类1,即为直线以上;当θ0+θ1x1+θ2x2<0时,预测为类0,即为直线以下。我们预先规定:红叉为类1,蓝圈为类0。
注:这里有人可能会有疑问,假如我们规定红叉为类0,蓝圈为类1,如果我们还是认为θTx0即取得直线上方的点为为类1,θTx<0即取得直线下方的点为类0,那岂不是会分错?学完本系列,我将给出答案,这也是我曾经学习ML时的困惑。

4.代价函数

在线性回归问题中,我们是这样定义代价函数的

J(θ)=12mi=1m(hθ(x(i))y(i))2(6)
那我们可不可以用这个代价函数来解决逻辑回归?答案是否定的,因为hθ(x)中包含了一个非线性函数即sigmoid函数,这使得J(θ)不是凸函数,有很多局部最小值,很难通过梯度下降法或其他方法得到全局最优值。我们来看一下J(θ)的大致图像。
这里写图片描述
为了方便说明我们令
J(θ)=1mi=1mCost(hθ(x(i))y)(7)
其中
Cost(hθ(x(i))y)=12(hθ(x(i))y(i))2(8)
现在我们该选择一个Cost(hθ(x(i))y),使得它是凸函数。函数的选择方法和选择原因涉及到比较复杂的数学原理,例如最大熵原理,感兴趣的可以上网自行搜索,在这里就不详细介绍了。总之我们找到了这样的一个完美凸函数(只有全局最小值)。
Cost(hθ(x)y)={log(hθ(x)),log(1hθ(x)),if y=1if y=0(9)
让我们来直观地感受一下。
这里写图片描述
我们可以看到,当预测的为hθ(x)=1且实际的类别也是y=1时,代价函数取值为0;而当预测的为hθ(x)=0且实际的类别是0,意味着分类完全错误时,代价函数是无穷大,这个错误无法容忍。由于sigmoid函数的作用,hθ(x)(0,1),因此不会出现代价函数无意义的情况。这是y=1的情况,当y=0时,正好相反,我们可以自行画出图像,在这里就不进行解释了。
为了能用梯度下降法或其他方法寻找最优θ,我们需要改变一下Cost(hθ(x)y)的形式,使之更方便计算,并代入到代价函数中即
J(θ)=1mi=1m[y(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i)))](10)
下面要做的就是用梯度下降法最小化代价函数,重复对所有的θj同时进行更新,方法同线性回归一样。
θj=θjαθjJ(θ)(11)
其中
θjJ(θ)=1mi=1m(hθ(x(i))y(i))x(i)j(12)
感兴趣的可以自行推导上式(12),涉及偏导数最基本的知识。这么看起来逻辑回归代价函数的偏导数和线性回归代价函数的偏导数一致,其实不然,因为在线性回归中的hθ(x)为式(1),而逻辑回归中的为式(2),逻辑回归比线性回归多了一个sigmoid函数,这点切记!

5.其他优化方法

除了梯度下降法,还有共轭梯度法、BFGS、L-BFGS等等,这几种方法收敛速度快,不用选择步长α,但是非常复杂,很难理解。不过在matlab的库中存在这几种方法,我们可以通过函数fminunc自行调用,不过前提是计算好代价函数和梯度。在这里就不详细介绍了。

6.多元分类

让我们举一个例子更直观地进行描述。假如我们有数据集x,并且分为三类:1,2,3。训练时我们可以这样做,先把注意力集中在类1,于是当前的任务是把类别1与类别2、3进行分类;然后再把注意力集中在类2,于是当前的任务是把类别2与类别1、3进行分类;最后把注意力集中在类3,于是当前的任务是把类别3与类别1、2进行分类。这样就把多元分类问题转化为二元分类问题,各个击破。现在我们得到了三个分类器,三组θ。若给定一个未知类别的数据,通过计算hθj(x),对于第一个分类器(j=1),我们得到的是未知类别是类1的概率;对于第二个分类器(j=2),我们得到的是未知类别是类2的概率;对于第三个分类器(j=3),我们得到的是未知类别是类3的概率。比较这三个概率,哪个概率最大,当然位置数据就属于这个类别。

注:回到前文所示的那个问题。假如我们规定红叉为类0,蓝圈为类1,如果我们还是认为θTx0即取得直线上方的点为类1,θTx<0即取得直线下方的点为类0,那岂不是会分错?其实不然,当我们规定的类别相反时,分类器给出的θ也正好相反,因为是最小化代价函数,如果分类彻底分反,代价函数则取得极大值。而且最关键一点,对于二维来说,θTx0不代表一定是取得直线上方的点。因此当θ取反时,θTx亦取反,于是当θTx0时,取得的是类别1,而且是黑色的决策边界下方,符合。所以训练集类别的设定丝毫不会对结果产生影响,无论怎样对训练集设定类1还是类0,当θTx时,一定选择的是类1,一定符合训练集即是训练集标注的类别1。

二、正则化

首先我们来了解一下什么是欠拟合和过拟合。欠拟合,顾名思义,拟合的所用的参数过少,导致无法准确拟合训练数据,准确度比较低。而过拟合意味着所用的参数太多导致虽然可以非常准确地拟合训练集,但是无法进行泛化(generalization),即无法掌握训练集的规律。下图左1为欠拟合,右1为过拟合,中间的拟合是我们所需要的。
这里写图片描述
线性回归和逻辑回归等问题中,如果问题比较复杂,并且特征(参数)较多,我们很难去选择一个很好的参数数量去防止欠拟合和过拟合,这时就需要对我们的代价函数进行正则化(regularization),即在后面增加一个才”惩罚项”,当参数的值较大时代价函数较大,这样训练出来的模型会尽可能地使参数变小,即模型较为简单,避免出现过拟合。增加的一项为:

λj=1nθ2j(13)
注意:λ0,而且在这里我们没有考虑偏置项θ0,因为偏置项与特征数的选取无关。

对于线性回归,我们修改它的代价函数如下:

J(θ)=12mi=1m(hθ(x(i))y(i))2+λ2mj=1nθ2j(14)
我们可以看到如果训练集特征数较多时,当λ减小,”惩罚项”趋近于0,即出现过拟合现象。当λ增加,”惩罚项”增加,如果想要最小化代价函数就要使θ尽量小,即此时会出现欠拟合现象。
因此对于权值θ的更新也要进行相应的改变,同样对于θ0我们不进行正则化。
θ0=θ0α1mi=1m(hθ(x(i))y(i))x(i)0θj=θjα(1mi=1m(hθ(x(i))y(i))x(i)1+λmθj)(y=1,2,3,)(15)
线性回归中的正规方程,我们进行这样的改变:
θ=(XTX+λ0111(n+1)×(n+1))1XTy(16)
注:正规方程中进行正则化之后,经过严格的数学证明可以得知矩阵一定可逆!

对于逻辑回归,我们修改它的代价函数如下:

J(θ)=1mi=1m[y(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i)))]+λ2mj=1nθ2j(17)
权值更新的式子与线性回归的式(15)一致,除了注意hθ(x)是要作用在sigmoid函数上。
0 0