逻辑回归(logistic regression)与正规化方程
逻辑回归:
当我们的预测值y是离散值时,线性回归这种连续型函数是不适合的,我们需要创造一种称为逻辑回归的学习算法。这种学习算法最广泛的应用是在分类问题上。
逻辑回归函数假设:
假设我们要设计一个分类器,使得我们的输出在[0,1]之间,传统线性回归函数不能将预测值限制在一个范围内,我们可以假设预测函数为如下形式:
其图像为:
纵坐标表示当前x的预测值为1的概率。
这样可以使得,预测函数的值限制在[0,1]内。
Sigmoid function = logistic function
决策边界:
实际上:z表示的为决策边界,即通过z来同行来对y进行分类。
拟合逻辑回归的参数theta.
对于一个有m个训练集的逻辑回归模型,其预测值为{0,1}。
如果我们使用类似于线性回归的cost function,因为我们逻辑回归的函数假设形式是:
所以,当我们使用类似类似于线性回归的方式,由于h(X)是介于(0,1)之间的数,所以cost function的图像有可能如下图所示:
为了使cost function更加平滑,因为假设函数形式为:
所以,我们设定的cost function如下形式:
如果训练数据的真实值为1,那么其为-log(h(X)),相反,如果训练数据的真实值为0,那么其为-log(1-h(X)),因为h(x)的值为预测值为1的可能性。
下面是一个完整cost function解释:
上述代价函数是进行分情况讨论,我们的需要是将代价函数合并到一个式子中去,我们可以这样写:
y*log(h(x))+(1-y)*log(1-h(x)) 当y等于1时,其和分情况讨论时的式子是一样的,当y等于0时其和分情况讨论时的式子也是一样的。
方法1:我们可以利用梯度下降算法进行min(J(theta)):
具体方法与线性回归的梯度下降算法一样
具体对于逻辑回归,方法如下:
当然还有其他方法(水平达不到,NG老师建议直接套用matlab的库就可以):
Conjugate gradient 共轭梯度法
BFGS 变尺度法
L-BFGS 限制变尺度法
示例:
假设有两个参数的逻辑回归:
在写好costfunction后可以使用matlab或者Octave的fminunc函数来进行优化,其基本用法是配置算法然后调用fminunc优化函数来优化计算costfunction一句exitflag来判定是否拟合。
多类分类问题:
现实生活中,大多数分类并不是分为两类,更多的是分为多类:
更直观:
当有多个分类的时候,有一种分类算法叫做one-vs-rest算法一对多算法,其算法思想是:
设计多个分类器,其中每个分类器过滤特定的类,如右图所示,其中被选出的类叫做正类,其余的类叫做负类,如右图所示h1(x)将所有三角形表示的类过滤出来。其中h1(x)表示在当前判定的点是三角形所在类的概率.
具体解释:
对于一个输入,选取所有假设函数中最大的,将结果分到对应的类中。
欠拟合和过拟合问题
欠拟合问题,是指由于考虑因素不够或者训练数据不够所出现的,预测函数与实际数据分布出现很大差异,如下图所示:
而另一种极端情况叫做过度拟合,其问题的原因是由于将一些可以忽略的影响因素过度考虑导致假设函数与训练数据过度重合:
虽然这种情况看起来非常准确,但是实时上在对新的数据进行预测时,其大多数会失败,也就是说这种预测函数没有皮鞭性。
同样,逻辑回归也会出现欠拟合和过度拟合的情况:
判定边界过于复杂时,如上图第三种情况,就会出现过度拟合的问题。
关于过度拟合问题的结局方案:
当影响因素过多时,画图基本上是一个不可能的事情,现有两种方法对过拟合的处理:
Options:
1. Reduce number of features.减少影响因数逇
― Manually select which features to keep.
― Model selection algorithm (later in course).
2. Regularization.(正规化)
― Keep all the features, but reduce magnitude/values of
parameters .
― Works well when we have a lot of features, each of
which contributes a bit to predicting .
减少影响因子的方法,过于繁琐,需要对每个影响因子进行逐个分析,如果影响因子数量在成千上万个的话,这个任务是不可能完成的。
正规化:
上图,左面假设函数已经很好的拟合,但是右边函数却过度拟合,想让右边的假设函数无线趋近于左边假设函数的样子,我们可以做的工作是使theta3和theta4无线趋近于0.
对于cost function来说,要找出合适的theta,所要做的工作是最小化cost function。
在原cost function的基础上对说要缩小的theta加上一个足够大的因子,这样做的目的是,若果要保证cost function 足够小,theta就必须尽量趋近于0.
当theta3和theta4趋近于0时,右图的图像就和作图的图像无线趋近。
线性回归的正规化:
上式中lamda称为正规化参数。
我们的目的是 min(J(theta))
在没有正规方程时,我们所用的方法是利用普通的梯度递减函数进行迭代找出最合适的参数。
在实践中,我们一般不对theta0进行优化,其中x0为1.
所以当利用正规化方程时,其形式如下:
对于非theta0,其求theta的过程可以化简为下式:
其中当m很大,学习速率很小的时候α*lamda/m的值很小。
总结来说:正规化是对过度拟合的一种解决方法。
正规方程 normal equation 说实话,这里我还不是很懂,以后补充
逻辑回归(logistic regression)与正规化方程相关推荐
- 逻辑回归(Logistic Regression, LR)又称为逻辑回归分析,是分类和预测算法中的一种。通过历史数据的表现对未来结果发生的概率进行预测。例如,我们可以将购买的概率设置为因变量,将用户的
逻辑回归(Logistic Regression, LR)又称为逻辑回归分析,是分类和预测算法中的一种.通过历史数据的表现对未来结果发生的概率进行预测.例如,我们可以将购买的概率设置为因变量,将用户的 ...
- 札记_ML——《统计学习方法》逻辑回归logistic regression)
统计学习方法:五. 逻辑回归logistic regression 逻辑回归logistic regression Logistic的起源 1).概念logistic回归又称logistic回归分析, ...
- 逻辑回归(Logistic Regression)简介及C++实现
逻辑回归(Logistic Regression):该模型用于分类而非回归,可以使用logistic sigmoid函数( 可参考:http://blog.csdn.net/fengbingchun/ ...
- OpenCV3.3中逻辑回归(Logistic Regression)使用举例
OpenCV3.3中给出了逻辑回归(logistic regression)的实现,即cv::ml::LogisticRegression类,类的声明在include/opencv2/ml.hpp文件 ...
- Coursera公开课笔记: 斯坦福大学机器学习第六课“逻辑回归(Logistic Regression)”
Coursera公开课笔记: 斯坦福大学机器学习第六课"逻辑回归(Logistic Regression)" 斯坦福大学机器学习第六课"逻辑回归"学习笔记,本次 ...
- OpenCV逻辑回归Logistic Regression的实例(附完整代码)
OpenCV逻辑回归Logistic Regression的实例 OpenCV逻辑回归Logistic Regression的实例 OpenCV逻辑回归Logistic Regression的实例 # ...
- 斯坦福大学机器学习第四课“逻辑回归(Logistic Regression)”
斯坦福大学机器学习第四课"逻辑回归(Logistic Regression)" 本次课程主要包括7部分: 1) Classification(分类) 2) Hypothesis R ...
- 逻辑回归(logistic regression)的本质——极大似然估计
文章目录 1 前言 2 什么是逻辑回归 3 逻辑回归的代价函数 4 利用梯度下降法求参数 5 结束语 6 参考文献 1 前言 逻辑回归是分类当中极为常用的手段,因此,掌握其内在原理是非常必要的.我会争 ...
- CS229学习笔记(3)逻辑回归(Logistic Regression)
1.分类问题 你要预测的变量yyy是离散的值,我们将学习一种叫做逻辑回归 (Logistic Regression) 的算法,这是目前最流行使用最广泛的一种学习算法. 从二元的分类问题开始讨论. 我们 ...
最新文章
- 悬镜 linux防黑加固平台,悬镜答疑丨悬镜服务器防护CC效果如何?
- Mac 技术篇-pip下载速度慢解决办法,pip秒速下载,阿里云镜像配置
- 15个学习习惯,受益一生(强烈推荐)
- echarts line 去掉最外围方框_干货 | 关于射频芯片最详细解读
- compareto 和_清洁责任–摆脱均等,compareTo和toString
- 从决策树学习谈到贝叶斯分类算法、EM、HMM - 结构之法 算法之道
- 最基础的Python的socket编程入门教程
- php中array_merge()与$arr1+$arr2两个数组直接相加的区别
- zz java compare 接口
- UWP 手绘视频创作工具技术分享系列
- 从零开始的腾讯电脑管家下载安装配置教程
- 在 Linux 中安装 Firefox
- android 音乐柱状图动画,android 音乐播放柱形图
- 485型传感器之数据回传进行CRC校验
- Markdown使用进阶教程
- PHP学习:PHP+Apache 安装/配置
- 51单片机——LCD1602液晶显示屏
- 【工具】Gamepad Tester游戏手柄在线测试平台
- 我的物联网项目(十六) 项目工程
- [wp7游戏]角色扮演类游戏~~集合贴~~