文章内容均来自斯坦福大学的Andrew Ng教授讲解的Machine Learning课程,本文是针对该课程的个人学习笔记,如有疏漏,请以原课程所讲述内容为准。感谢博主Rachel Zhang 的个人笔记,为我做个人学习笔记提供了很好的参考和榜样。
§ 3. 逻辑回归 Logistic Regression
1 分类Classification
首先引入了分类问题的概念——在分类(Classification)问题中,所需要预测的$y$是离散值。例如判断一封邮件是否属于垃圾邮件、判断一个在线交易是否属于诈骗、一个肿瘤属于良性肿瘤还是恶性肿瘤等,都属于分类问题。
对于有两种类别的分类(例如上述三个例子),可以分别将两种类别标记为正类(Positive Class)和负类(Negative Class)。在实际应用中,把一个类别标记为正类或负类是任意的,但一般来说会用正类代表拥有某样东西,用负类代表缺少某样东西。
分类问题可以分为多类分类(Multiclass Classification)问题和二元分类(Binary Classification)问题。
Andrew Ng以肿瘤分类问题为例,讲解了在分类问题中线性回归方法的有效性较低的原因。
如图,当前的数据集中,如果应用线性回归方法并以$h_{\theta}(x)=0.5$为阈值将肿瘤分类,即以$h_{\theta}(x)=0.5$在横轴上的投影点为基准进行划分,左边的预测为良性肿瘤,右边的预测为恶性肿瘤,那么预测的效果还是很不错的。
但在加入了最右的数据点之后,表示$h_{\theta}(x)$的直线从紫色线变成了蓝色线,预测准确性在$h_{\theta}(x)=0.5$处可以看出有了比较明显的降低。
如果线性回归算法应用在分类问题中,那么在y={0,1}的情况下,也有可能会出现$h_{\theta}(x)<0$或者$h_{\theta}(x)>1$的情况,而且$h_{\theta}(x)$可能会远小于0或者远大于1。因此,分类问题并不适合拿线性回归的方法来解决。
2 逻辑回归Logistic Regression
下面引入能够满足$0<=h_{\theta}(x)$的逻辑回归算法来解决上述问题。逻辑回归算法虽然名字上有个“回归”,但事实上是个分类算法。
首先引入了逻辑函数(Logistic Function),也称S型函数(Sigmoid Function)——如图中的$g(z)$所示。逻辑函数的性质是:在正无穷处无限趋近于1,在负无穷处无限趋近于0,在z=0处值为0.5。
Andrew Ng解释了$P(y=1|x;\theta)$所代表的含义,然后给出了$P(y=1|x;\theta)$与$P(y=0|x;\theta)$的重要特点——相加等于1。
然后给出了以下例题,考察了上述知识点。
3 决策边界Decision Boundary
决策边界(Decision Boundary) 将整个平面分为y=1和y=0的两个预测区域,对于$\theta^{T}x>=0$的部分,有$h_{\theta}(x)$>0.5,因此预测为y=1;对于$\theta^{T}x<0$的部分则反之,预测为y=0。
决策边界不是训练集的属性,而是假设本身及其参数的属性。一旦给定了$\theta$,那么其决策边界就已经确定了。我们不是用训练集来定义决策边界,而是用训练集来拟合参数$\theta$。
如果在平面上把训练集和决策边界都表现出来,那么应该是类似下图这样的效果。
又例如下题中,$5-x_{1}=\theta^{T}x$,当$5-x_{1}=\theta^{T}x>=0$时有$x_{1}<5$,因此图像如图所示。而$x_{1}=5$即为该预测函数的决策边界。
非线性决策边界(Non-Linear decision boundaries),拥有复杂的多项式特征变量,得到复杂的决策边界,而不是简单的用直线分开正负样本。
例如如下的情况:
4 代价函数Cost Function
逻辑回归模型中的代价函数如下所示:
对于y=1:如果预测正确,那么代价为0;如果预测错误,那么代价将随着预测值趋于0而趋于无穷。即当预测错误时我们会以非常大的代价来惩罚学习算法。
对于y=0:也是类似的,$Cost=0$ if $y=1$,$h_{\theta}(x)=1$
But as $h_{\theta}(x)\rightarrow 1$ $Cost\rightarrow \infty$
Captures intuition that if $h_{\theta}(x)= 1$(predict $P(y=0|x;\theta)=0$),but y=0,we will penalize learning algorithm by a very large cost.
5 简化代价函数与梯度下降算法Simplified cost function and gradient descent
因为y只有两个取值:0,1
所以可以简化代价函数为:
接下来,我们的目标就是最小化参数$\theta$了。
之前提到过梯度下降算法,这里也是类似的用法:
代入上述蓝色式子可得
这个算法看起来似乎与应用于线性回归的梯度下降算法是一样的,但是事实上,这个式子中$h_{\theta}(x)$的假设并不同于应用于线性回归的梯度下降算法中的$h_{\theta}(x)$。
特征缩放也适用于逻辑回归算法中使得收敛速度更快。
6 高级优化算法Advanced Optimization
除了梯度下降算法之外,还可以考虑以下三种算法。这三种算法的有点是不用手动选择$\alpha$、速度快,但也相应来说更复杂。
在算法实现的过程中,建议尽量调用matlab或者octave中已有的库。
例如:
一般来说,我们可以使用octave中的fminunc来实现这一算法,但是在fminunc中,$\theta$的维数应该大于1.
下面来看具体的实现:
function [jVal,gradient] = costFunction(theta)
% jVal is how we will compute the cost function J
% a vector,the elements of the gradient vector correspond to partial derivative terms jVal = (theta()-)^+(theta()-)^; gradient = zeros(,);
gradient() = *(theta()-);
gradient() = *(theta()-);
上述代码可以保存为costFunction.m然后在matlab里面调用
options = optimset('GradObj','on','MaxIter',);
%'GradObj','on' ->sets the gradientobjective parameter to on
% so you will provide a gradient to this algorithm
%'MaxIter', -> sets maximum number of iterations to
% so you will give it an initial guess for theta initialTheta = zeros(,); [optTheta,functionVal,exitFlag] = fminunc(@costFunction,initialTheta,options)
%fminunc is the advanced optimization
与Andrew Ng原slide所不同的地方是,原文的迭代次数设置为了'100',但其实'100'代表的是一个字符串,因此应该直接设置为100。
可得结果:
initialTheta =
0
0
Local minimum found. Optimization completed because the size of the gradient is less than
the default value of the function tolerance. <stopping criteria details> optTheta = functionVal = exitFlag =
7 多类分类问题 Multiclass Classification
多类分类问题 Multiclass Classification是指有两个以上分类的分类问题。
在多类分类问题里,其实是产生了多个分类器的。
这样one-vs-all的方法中,实际上由每个分类i的所有可能结果y=i来训练逻辑回归分类器。
然后选择一个让h最大的i,不论i为多少我们都有最高的概率值。
笔记目录
(一)单变量线性回归 Linear Regression with One Variable
(二)多变量线性回归 Linear Regression with Multiple Variables
(四)正则化与过拟合问题 Regularization/The Problem of Overfitting
(五)神经网络的表示 Neural Networks:Representation
(六)神经网络的学习 Neural Networks:Learning
(七)机器学习应用建议 Advice for Applying Machine Learning
(八)机器学习系统设计Machine Learning System Design
(九)支持向量机Support Vector Machines
(十)无监督学习Unsupervised Learning
(十一)降维 Dimensionality Reduction
(十二)异常检测Anomaly Detection
(十三)推荐系统Recommender Systems
(十四)大规模机器学习Large Scale Machine Learning
机器学习 (三) 逻辑回归 Logistic Regression的更多相关文章
-
机器学习总结之逻辑回归Logistic Regression
机器学习总结之逻辑回归Logistic Regression 逻辑回归logistic regression,虽然名字是回归,但是实际上它是处理分类问题的算法.简单的说回归问题和分类问题如下: 回归问 ...
-
机器学习入门11 - 逻辑回归 (Logistic Regression)
原文链接:https://developers.google.com/machine-learning/crash-course/logistic-regression/ 逻辑回归会生成一个介于 0 ...
-
Coursera公开课笔记: 斯坦福大学机器学习第六课“逻辑回归(Logistic Regression)” 清晰讲解logistic-good!!!!!!
原文:http://52opencourse.com/125/coursera%E5%85%AC%E5%BC%80%E8%AF%BE%E7%AC%94%E8%AE%B0-%E6%96%AF%E5%9D ...
-
机器学习(四)--------逻辑回归(Logistic Regression)
逻辑回归(Logistic Regression) 线性回归用来预测,逻辑回归用来分类. 线性回归是拟合函数,逻辑回归是预测函数 逻辑回归就是分类. 分类问题用线性方程是不行的 线性方程拟合的是连 ...
-
机器学习方法(五):逻辑回归Logistic Regression,Softmax Regression
欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. 技术交流QQ群:433250724,欢迎对算法.技术.应用感兴趣的同学加入. 前面介绍过线性回归的基本知识, ...
-
逻辑回归(Logistic Regression)详解,公式推导及代码实现
逻辑回归(Logistic Regression) 什么是逻辑回归: 逻辑回归(Logistic Regression)是一种基于概率的模式识别算法,虽然名字中带"回归",但实际上 ...
-
ML 逻辑回归 Logistic Regression
逻辑回归 Logistic Regression 1 分类 Classification 首先我们来看看使用线性回归来解决分类会出现的问题.下图中,我们加入了一个训练集,产生的新的假设函数使得我们进行 ...
-
【机器学习】Octave 实现逻辑回归 Logistic Regression
ex2data1.txt ex2data2.txt 本次算法的背景是,假如你是一个大学的管理者,你需要根据学生之前的成绩(两门科目)来预测该学生是否能进入该大学. 根据题意,我们不难分辨出这是一种二分 ...
-
[笔记]机器学习(Machine Learning) - 02.逻辑回归(Logistic Regression)
逻辑回归算法是分类算法,虽然这个算法的名字中出现了"回归",但逻辑回归算法实际上是一种分类算法,我们将它作为分类算法使用.. 分类问题:对于每个样本,判断它属于N个类中的那个类或哪 ...
随机推荐
-
hibernate学习笔记之四 Hibernate的增删改查
采用JUnit测试,继承TestCase import java.util.Date; import junit.framework.TestCase; import org.hibernate.Se ...
-
PHP核心编程知识点
一.PHP基本语法 PHP标记:一共有四种,只推荐使用第一种 语句结束符:分号 注释:行注释(// #)和块注释(/* */),注释的规范 二.常见的输出语句 print echo var_du ...
-
object-c 协议和委托
协议相当于接口 委托相当于帮助实现其它类的功能 object-c提供的协议机制,一个类可以实现多个协议,从而感觉上像多继承一样
-
学习Perl6: slice fastq file
需求: 只获取 ath 物种的 hairpin 序列 文件格式如下所示,以>打头的为 header,紧跟的为序列[AUCG]+ (Perl5 regexp 格式) #!/usr/bin/env ...
-
【Linux高频命令专题(6)】mkdir
简述 用来创建指定的名称的目录,要求创建目录的用户在当前目录中具有写权限,并且指定的目录名不能是当前目录中已有的目录. 命令格式 mkdir [选项] 目录... 命令参数 -m, --mode=模式 ...
-
滚珠菜单动效-b
原型从网上找的,动效使用了CAAnimation和UIDynamic物理引擎. gitHub :https://github.com/BearRan/FlowMenuAnimation 大致步骤如 ...
-
View的滑动冲突
一.常见的滑动冲突 场景1:外部滑动和内部滑动不一致 场景2:外部滑动和内部滑动一致 场景3:上面两种情况的嵌套 二.滑动冲突的处理方法 场景一:根据水平滑动还是竖直滑动判断到底由谁来拦截事件. 场景 ...
-
Java 基础类型转换byte数组, byte数组转换基础类型
Java 基础类型转换byte数组, byte数组转换基础类型 Java类型转换 java类对象转化为byte数组
-
OneZero第七周第一次站立会议(2016.5.9)
1. 时间: 12:15--12:25 共计10分钟. 2. 成员: X 夏一鸣 * 组长 (博客:http://www.cnblogs.com/xiaym896/), G 郭又铭 (博客:http ...
-
独立的android开发者开发app如何盈利?
对立android开发者开发app如何盈利?android开发日益兴隆,随着google的大力推广和技术及其android培训的支持,android个人开发者或者android独立开发者也都匆匆欲动加 ...