机器学习之——判定边界和逻辑回归模型的代价函数

判定边界(Decision Boundary)

上一次我们讨论了一个新的模型——逻辑回归模型(Logistic Regression),在逻辑回归中,我们预测:

  • 当h?大于等于0.5时,预测y=1
  • 当h?小于0.5时,预测y=0

根据上面的预测,我们绘制出一条S形函数,如下:

根据函数图像,我们知道,当

  • z=0时,g(z)=0.5
  • z>0时,g(z)>0.5
  • z<0时,g(z)<0.5

又有:

所以

以上,为我们预知的逻辑回归的部分内容。好,现在假设我们有一个模型: 并且参数?是向量 :[-3 1 1]。那么当-3+x1+x2大于等于0,即x1+x2大于等于3时,模型将预测 y=1。

我们可以绘制出来x1+x2=3,这条线便是我们模型的分界线,也称之为判定边界(Decision Boundary),将预测为1的区域和预测为0的区域分隔开。

假设我们的数据呈现出如下图的分布情况,那么我们的模型是什么样才能适合这些数据呢?

如上图,函数图像为一个圆,圆点在原点且半径为1,这样一条曲线来分隔开了 y=1 和 y=0 的区域,所以我们需要的是一个二次方特征:

假设参数为 [-1  0  0  1  1],则我们得到的判定边界恰好是圆点在原点并且半径为1的圆形。

我们可以使用非常复杂的模型来适应非常复杂形状的判定边界。

逻辑回归模型的代价函数(Cost Function)

对于线性回归模型,我们定义的代价函数是所有模型误差的平方和。理论上讲,我们也可以沿用这个定义来对逻辑回归模型使用,但是问题在于,当我们将:

代入到这样定义的代价函数中时,我们得到的代价函数将会是一个非凸函数(Non-covex Function)

这意味着,我们的代价函数将会有许多的局部最小值,这就会影响到梯度下降算法去找寻全局最小值。

因此,我们重新定义逻辑回归的代价函数为:

其中,Cost(h?(x(i), y(i))) 是我们定义的一个代价函数迭代形式,具体表示如下:

h?(x) 与 Cost(h?(x),y)之间的关系是如下图所示:

通过这样构建的Cost(h?(x), y)函数的特点是:

当实际的 y=1 且 h?=1 时,误差为0;当  y=1 但 h? != 1时,误差随h?的变小而变大;

当实际的 y=0 且 h?=0 时,误差代价为0;当 y=0 但 h? != 0 时,误差随h?的变大而变大。

将构建的Cost(h?(x), y) 进行一个简化,可以得到如下简化公式:

这个简化其实是对上面Cost(h?(x), y) 的两种表达式的一次性结合。

将简化代入到代价函数,得到:

这便是逻辑回归模型的代价函数了。

在得到这样的一个代价函数之后,我们便可以使用梯度下降算法(Gradient Descent)来求得能够使代价函数最小的参数了。

梯度下降算法:

对此求导,得到:

*注:虽然得到的梯度下降算法,表面上看上去和线性回归的梯度下降算法一样,但是这里的h?(x) = g(?TX)与线性回归不同,所以实际上是不一样的。另外,在运行梯度下降算法之前,对特征进行特征缩放(Features Scaling)也是非常必要的。

一些梯度下降算法之外的选择:

除了梯度下降算法之外,还有一些常被用来使代价函数最小的算法,这些算法更加复杂和优秀,而且通常情况下,不需要人工选择学习速率,通常也比梯度下降算法更加快速。举一些例子:共轭梯度法(Conjugate Gradient)局部优化法(Broyden
Fletcher Goldfarb Shann, BFGS)
有限内存局部优化法(LBFGS)。这些算法更加复杂也更加优秀,如果感兴趣我们可以以后再继续讨论。

MatlabOctave中,有一个最小值优化函数,fminunc。使用时,我们需要提供代价函数和每个参数的求导,这里给大家举一个例子:

function [ jVal, gradient ] = costFunction( theta )
%COSTFUNCTION Summary of this function goes here
%   Detailed explanation goes here
    jVal = (theta(1)-5)^2 + (theta(2)-5)^2;
    gradient = zeros(2,1);
    gradient(1) = 2*(theta(1)-5);
    gradient(2) = 2*(theta(2)-5);

end

options = optimset('GradObj', 'on', 'MaxIter', '100');
initialTheta = zeros(2,1);
[optTheta, functionVal, exitFlag] = fminunc(@costFunction, initialTheta, options);

*PS :关于机器学习相关算法的MatlabOctave代码,我上传到了我的coding.net项目中,有需要的童鞋可以联系我。

时间: 2024-08-10 19:07:59

机器学习之——判定边界和逻辑回归模型的代价函数的相关文章

逻辑回归模型梯度下降法跟牛顿法比较

1.综述 机器学习的优化问题中,梯度下降法和牛顿法是常用的两种凸函数求极值的方法,他们都是为了求得目标函数的近似解.梯度下降的目的是直接求解目标函数极小值,而牛顿法则变相地通过求解目标函数一阶导为零的参数值,进而求得目标函数最小值.在逻辑回归模型的参数求解中,一般用改良的梯度下降法,也可以用牛顿法. 2 梯度下降法 2.1算法描述 1.确定误差范围和下降的步长,确定函数的导函数 2.while(|新值 -旧值| >误差) 3.       旧值=新值 4.       新值=初始值-步长*导函数

先验概率、后验概率、似然函数与机器学习中概率模型(如逻辑回归)的关系理解

看了好多书籍和博客,讲先验后验.贝叶斯公式.两大学派.概率模型.或是逻辑回归,讲的一个比一个清楚 ,但是联系起来却理解不能 基本概念如下 先验概率:一个事件发生的概率 \[P(y)\] 后验概率:一个事件在另一个事件发生条件下的条件概率 \[P(y|x)\] 贝叶斯公式:联合概率公式直接能推导出来的,代表什么意义?不放在具体问题中代表不了任何意义 \[P(y|x) = \frac{{P(x|y)P(y)}}{{P(x)}}\] 拿一个实际的例子,如果用阴天预测是否下雨 先验概率:下雨的概率 \[

基于分类问题的逻辑回归模型

由于分类问题的输出是0.1这样的离散值,因而回归问题中用到的线性回归模型就不再适用了.对于分类问题,我们建立逻辑回归模型. 针对逻辑回归模型,主要围绕以下几点来讨论. Logistic Regression (逻辑回归) Sigmoid Function (逻辑函数) Decision Boundaries (决策边界) Cost Function (代价函数) 决策边界不是数据集的属性,而是假设本身及其参数的属性.我们不是用训练集来定义的决策边界,我们用训练集来拟合参数θ,一旦有了参数θ就可以

逻辑回归模型预测股票涨跌

http://www.cnblogs.com/lafengdatascientist/p/5567038.html 逻辑回归模型预测股票涨跌 逻辑回归是一个分类器,其基本思想可以概括为:对于一个二分类(0~1)问题,若P(Y=1/X)>0.5则归为1类,若P(Y=1/X)<0.5,则归为0类. 一.模型概述 1.Sigmoid函数 为了具象化前文的基本思想,这里介绍Sigmoid函数: 函数图像如下: 红色的线条,即x=0处将Sigmoid曲线分成了两部分:当 x < 0,y <

逻辑回归模型(Logistic Regression)及Python实现

逻辑回归模型(Logistic Regression)及Python实现 http://www.cnblogs.com/sumai 1.模型 在分类问题中,比如判断邮件是否为垃圾邮件,判断肿瘤是否为阳性,目标变量是离散的,只有两种取值,通常会编码为0和1.假设我们有一个特征X,画出散点图,结果如下所示.这时候如果我们用线性回归去拟合一条直线:hθ(X) = θ0+θ1X,若Y≥0.5则判断为1,否则为0.这样我们也可以构建出一个模型去进行分类,但是会存在很多的缺点,比如稳健性差.准确率低.而逻辑

Andrew Ng机器学习(二):逻辑回归

1.逻辑回归解决什么问题? 逻辑回归用于分类问题. 对于二分类问题,输入多个特征,输出为是或不是(也可以写作1或0). 逻辑回归就是这样一个用于分类的模型. 2.什么是逻辑回归? 逻辑回归建立在线性回归的基础上. 首先,线性回归将多个特征映射到一个变量. 之后,在这个变量上设置一个阈值.大于这个阈值的判断为是,输出1:小于这个阈值的判断为否,输出0. 也可以不输出1或0,而输出是1的概率,再由概率是否大于0.5判断是或否. 逻辑回归就是这样一个输出是1的概率的模型(Sigmoid函数): 对于θ

Python之逻辑回归模型来预测

建立一个逻辑回归模型来预测一个学生是否被录取. import numpy as np import pandas as pd import matplotlib.pyplot as plt import os path='data'+os.sep+'Logireg_data.txt' pdData=pd.read_csv(path,header=None,names=['Exam1','Exam2','Admitted']) pdData.head() print(pdData.head())

逻辑回归模型

1. 逻辑回归是一种监督式的学习算法. [ 监督式学习算法有两组变量:预测变量(自变量x)和目标变量(因变量y),通过这些变量(x,y),搭建一个可以由已知的预测变量值x,得到对应的目标变量值y. 重复训练这个模型,直到能够在训练数据集上达到预定的准确度.] 2. 逻辑回归是一个分类算法. 利用已知的自变量,来预测一个离散型因变量的值(比如0/1, 是/否,真/假). 每个离散值的概率结果即是我们要预测的,可以通过一个逻辑函数(logit function),自然地,输出值在0到1之间. odd

机器学习笔记(六)逻辑回归

一.逻辑回归问题 二分类的问题为是否的问题,由算出的分数值,经过sign函数输出的是(+1,-1),想要输出的结果为一个几率值,则需要改变函数模型 ,其中,, 则逻辑回归的函数为 二.逻辑回归错误评价 线性分类和线性回归的模型为: 其中的线性分数函数均为,逻辑回归有同样的分数函数,模型为 逻辑回归的理想函数为 对于函数f(x),在数据情况下,D的所有数据在函数下的联合概率为 ,我们想要的模型h要使,则对于h来说,在数据D中也符合, 要使需要找到一个g使它发生的可能性最大,即 由 p(x1),p(