在这节中主要讲的是如何更好地拟合逻辑回归模型的参数θ.具体来说,要定义用来拟合参数的优化目标或者叫代价函数,这便是监督学习问题中的逻辑回归模型的拟合问题。

我们有一个训练集,训练集中有m个训练样本:{(x(1),y(1)),(x(2),y(2)),...,(x(m),y(m))},像之前一样,每个样本用n+1维特征向量表示,如下:

    和以前一样x0=1,第0个特征一直是1.而且因为这是一个分类问题的训练集,所以所有的标签y不是0就是1.假设函数如下所示,它的参数是θ.
    下面要讲的问题是,对于这个函数如何选定合适的参数θ.
    回归一下之前讲线性回归模型的时候,使用了如下的代价函数。
    下面将对这个函数换一种写法:
    那么此时代价函数等于1/m * 这个Cost项在训练集范围上的求和。可以除去上标来对该公式简化。它是在输出的预测值是h(x),但实际值是y的时候我们的学习算法付出的代价。去掉上标之后,这个代价值就是 1/2 * 预测值与实际值差的平方。这个代价函数在线性回归里面是十分好用的,但是我们现在要用在逻辑回归里。如果我们要最小化代价函数J,它也能工作。但是如果我们这样做的话它就会变成参数θ的非凸函数。
    当我们把代入J(θ)中,因为hθ(x)是一个很复杂的非线性函数,我们很有可能得到的函数图像如下,它有很多局部最优值。
    如果我们对非凸函数用梯度下降法,并不能保证可以收敛到全局最小值。我们更希望得到的是一个凸函数,这样对它使用梯度下降法的话就可以收敛到该函数的全局最小值。所以,我们重新定义这个算法要付出的代价。
    这看起来是一个很复杂的函数,我们画出这个函数。图像如下:
    这个函数的性质有:
        如果y=1而且hθ(x)=1,那么代价值就为0.但是如果y=1但是预测值hθ(x)=0的时候,此时代价值趋于∞.
    上面为y=1的情况。下面来看y=0的情况。
    当实际值y=0时,预测值hθ(x)=0的情况下付出的代价值就为0,预测值hθ(x)=1的情况下付出的代价值趋于∞.以上讲的主要是单训练样本的代价函数。下面将将其推广得到整个训练样本的代价函数,接着对其运用梯度下降法。
    python代码:
1 import numpy as np
2 def cost(theta, X, y):
3 theta = np.matrix(theta)
4 X = np.matrix(X)
5 y = np.matrix(y)
6 first = np.multiply(-y, np.log(sigmoid(X* theta.T)))
7 second = np.multiply((1 - y), np.log(1 - sigmoid(X* theta.T)))
8 return np.sum(first - second) / (len(X))

最新文章

  1. Gulp基础
  2. Mysql 主从热备份
  3. animated js动画示例
  4. reset代码
  5. Java-练习方法之冒泡排序
  6. c++ 常数后缀说明
  7. Javascript模块化编程(二):AMD规范 作者: 阮一峰
  8. MQ的通讯模式
  9. Oracle数据库程序包全局变量的应用
  10. test_wifi
  11. 利用jQuery接受和处理xml数据
  12. 配置mac自带的Apache服务器
  13. HTML5 CSS3专题 纯CSS打造相册效果
  14. Contest2162 - 2019-3-28 高一noip基础知识点 测试5 题解版
  15. [HEOI2014]平衡(整数划分数)
  16. python网络编程(十一)
  17. String 源码探究
  18. Windows环境——MySQL安装及配置
  19. The Little Prince-12/04
  20. [蓝桥杯]ALGO-15.算法训练_旅行家的预算

热门文章

  1. Java8学习小记
  2. solr综合案例
  3. 海量数据处理之布隆过滤器BloomFilter算法
  4. php bypass disable function
  5. Go-变量-var
  6. notepad快捷使用
  7. js 基础概念
  8. springboot1.5和jpa利用HikariCP实现多数据源的使用
  9. 高效的后端API开发模板-illuminant
  10. 实验二 HTML中图片和超链接的应用