机器学习之logistic回归算法

#Classification(分类)

机器学习之logistic回归算法

 

#Logistic regression(logistic回归)

一种分类算法,用在标签y为离散值0或1的情况下。

#背景

线性回归应用在分类问题上通常不是一个好主意:

机器学习之logistic回归算法

 所以引出logistic回归算法

机器学习之logistic回归算法

 

#Logistic Regression Model

  • sigmoid函数/logistic函数:g(z)

机器学习之logistic回归算法

机器学习之logistic回归算法

#Decision boundary(决策边界)

是假设函数的一个属性,取决于其参数,不是数据集的属性。所以只要给定了参数向量θ,决策边界就确定下来了,而不是用训练集来定义决策边界。

我们用训练集来拟合参数θ,但是一旦有了θ,就确定了决策边界。

机器学习之logistic回归算法

机器学习之logistic回归算法

机器学习之logistic回归算法

 

#如何拟合logistic回归

机器学习之logistic回归算法

机器学习之logistic回归算法

如果用平方函数定义代价函数,会变成非凸函数,具有很多局部最小值。

  • non-convex function(非凸函数)

#logistic回归代价函数

机器学习之logistic回归算法

机器学习之logistic回归算法

#Simplified cost function(简化的代价函数)

推导:

机器学习之logistic回归算法

机器学习之logistic回归算法

这是从统计学的极大似然法得来的,是快速寻找参数的方法,而且有个很好的特性,即它是凸的。

 

#Gradient Descent(梯度下降)

 最小化代价函数的方法是使用梯度下降法。

推导:

机器学习之logistic回归算法

 

机器学习之logistic回归算法

即使更新参数的规则看起来基本相同,但由于假设的定义发生了变化,所以它跟线性回归的梯度下降实际上是完全不同的东西。

*更新θ可以通过向量化实现,可以把所有这些n+1个参数同时更新?

#Vectoriztion(向量化)

向量化是非常基础的去除代码中 for 循环的艺术,在深度学习安全领域、深度学习实践中,你会经常发现自己训练大数据集,因为深度学习算法处理大数据集效果很棒,所以你的代码运行速度非常重要,否则如果在大数据集上,你的代码可能花费很长时间去运行,你将要等待非常长的时间去得到结果。所以在深度学习领域,运行向量化是一个关键的技巧。

下面我用一个超级简单的例子来向大家说明什么是向量化。

假如我们要用python编程来计算下面这个求和公式。

机器学习之logistic回归算法

上式其实等于A1*B1+A2*B2+A3*B3

如果我们用非向量化的方式来实现的话,代码如下(本篇文章中,你只需要大致看懂这些代码就可以了,后面的文章我再给大家介绍如何用python编程)

A = [1,2,3]

B = [1,2,3]

res = 0

for i in range(0,3):

res+=A[i]*B[i]

而向量化的方式如下。

import numpy as np

A = [1,2,3]

B = [1,2,3]

res = np.dot(A,B)

上面这段代码中最关键的一行是np.dot(A,B)。dot执行了一个向量乘法运算,套入上面我向大家介绍的向量相乘知识,并可知它等价于上面的循环代码。

向量化可节约高达几百倍时间,为什么呢?有人是这样解释的:由于python是由c语言实现的,所以python每次在循环调用时都会先将代码转换成c语言,如果循环次数太多,那么这些转换消耗的总和就很大了。而向量化操作是把一堆计算一次性转换成c语言去实现,即消耗只有一次,所以快。这个说法我觉得是合理的。

无论如何,请切记在人工智能编程的过程中,要尽量尽量尽量用向量化取代循环代码。

https://kuaibao.qq.com/s/20180606G1KMTC00?refer=cp_1026

 

*特征缩放也可使logistic回归的梯度下降更快。

 

#Advanced optimization(高级优化)

与梯度下降相比,可以大大提高logistic回归运行的速度。

机器学习之logistic回归算法

  • 共轭梯度法BFGS、L-BFGS

 

#Multi-class classification:one-vs-all (多元分类:一对多)

机器学习之logistic回归算法

 机器学习之logistic回归算法

 分成多个classifiers(分类器),每一个都针对其中一种情况进行训练。

机器学习之logistic回归算法

然后对每一个分类器输入x,选择可信度最高、效果最好的那个分类器。

机器学习之logistic回归算法


PS.内容为学习吴恩达老师机器学习的笔记【https://study.163.com/course/introduction/1004570029.htm