专栏首页人工智能神经网络的基础-逻辑回归

神经网络的基础-逻辑回归

练习数据和代码那必须是每一期都有的,文末查看获取方式。

大家好,今天给大家介绍的算法叫做逻辑回归

从名字入手,逻辑回归嘛,它肯定是回归的一种,还记得我们之前讲过的线性回归吧,原理上这两个算法是一样的。那什么叫逻辑呢,在计算机里,逻辑常常被理解为0、1值,也就是说我们得到的结果不能像线性回归一样得到一些任意的值,逻辑回归的结果应该是0或者1,这也就导致逻辑回归最适用的场景是二分类问题

回顾一下线性回归,我们要做的是求一组参数θ和b,然后利用Y=θx + b这个函数根据x的值预测Y的值(θ和b都可以是向量)。现在我们对这个式子进行一个变形,使得预测的结果在0到1之间:

y=h(z)

z=θx + b

这个过程呢相当于先对数据进行线性回归,然后对回归的结果进行一种函数变换使得结果在0-1之间。我们的函数h是这样的:

函数h叫做“sigmoid函数”或者“S型函数”,里面的e叫自然对数,是一个常量,值大约为2.7多,函数长这个样子:

我们可以看到当自变量为0时,该函数的函数值为0.5,自变量大于0时函数值迅速向1靠拢,小于0时函数值迅速向0靠拢。

至于我们为什么要在逻辑回归里选择这个函数,大家不必深究,只需要知道他的样子和公式就可以,实际上这个函数的选择不仅可以满足我们对输出结果取值范围的要求,也为我们计算提供了很多方便。

这样经过一个下线性回归,再把线性回归的结果用sigmoid函数进行处理,得到0-1之间的值,就完成了逻辑回归的过程。当然这样得到的逻辑回归值可能是0-1之间的任意值,对于二分类问题的话,我们把两个类别分别叫做“0类”和“1类”,比较回归值与0.5之间的大小关系,大于0.5的话就把当前样本分类为1类,否则分类结果为0类。

整个的思路和过程就是这样,我们再来看看想要实现这个模型需要哪些东西吧。

再次回顾线性回归,我们在使用数据对模型进行参数确定的时候是定义了一个代价函数L(θ,b),通过最小化L得到的两个参数的拟合值。同样地,我们在逻辑回归里也需要这样一个代价函数L。其实,在今后的算法中大家也可以细心观察,许多算法的思路都是这样的,确定思路,找到一个合适的代价函数L,使用数据去拟合参数使得L取的最小值,最终就得到了结果。

那么逻辑回归的代价函数应该怎么确定呢,先给出答案:

其中m为训练集中样本的个数,yi表示样本i的真实类别(0或者1),hi(z)是我们逻辑回归运算的结果。

我们来分析一下函数L,对于一个样本来说,如果他的真实分类应该是0,也就是yi=0,那么对这个样本来说,Li=- log(1-hi(z))。而对于一个样本yj=1,来说,Lj=- log(hj(z))。

我们来看一下log函数:

a表示底数,我们在文中省略掉了,默认使用的底数是e,也就是前面提到的自然对数。

在我们这里呢,由于h(z)的结果是在0-1之间的,所以log函数的值总是小于0的,这也就是为什么我们在L函数中有一个负号。这样的话对于上述的样本i来说,预测的hi(z)越接近0,Li就越小;同理对样本j,预测的hj(z)越接近1,Lj就越小。这就验证了我们代价函数选择的合理性,同样的,代价函数为什么是这个形状大家完全可以不必考虑,数学上可以有很多解释来支持他,我们只要知道他是合理的、易于计算的一种形式就可以啦。

Ok,现在我们有了代价函数,有了训练数据,下一步该做什么呢?

这里就可以用我们之前讲过的利器-梯度下降法求解。

我们把函数L对θ和b分别求导:

有微积分基础的同学看懂这个应该不难,当然没有的同学也不必纠结,如果只是应用层面的去理解这个算法的话,直接记住结果绝对是最实用的解决措施。

好啦,大家可以自己回顾一下梯度下降算法的主要思路,完成对参数的优化。

最后,对一个待分类的样本,将其属性输入到逻辑回归模型中,将得到的数与0.5进行比较就可以啦!

不论是对代码还是对教程有疑问的话可以随时在后台提问!

为了方便大家进一步的学习,在接下来的几次文章中我会讲述一些机器学习方面需要的数学基础,大家敬请期待!

本文来自企鹅号 - 全球大搜罗媒体

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 五撩Python

    重复,再重复,你就是专家。 --曾子 1、起手 来说函数。 2、函数 函数就是整理好的一堆可重用的代码,有输入,然后就有输出。 比如我们计算折扣,输入是消费者的...

    企鹅号小编
  • Kotlin学习之高阶函数和Lambda表达式的基础用法

    Kotlin学习之高阶函数和Lambda表达式的基础用法 一、定义和调用高阶函数的写法 kotlin.collections._Arrays.kt中的mapTo...

    企鹅号小编
  • 盘点机器学习中那些神奇的损失函数

    盘点机器学习中那些神奇的损失函数 这周深圳真的变冷,以前读书的时候,只要天气变到我会冷到哆嗦就知道,快过年了,算算,还有21天,2017就过去了,我在2016年...

    企鹅号小编
  • 【Python环境】Python函数式编程指南(2):函数

    2. 从函数开始 2.1. 定义一个函数 如下定义了一个求和函数: def add(x, y): return x + y 关于参数和返回值的语法细节可以参考...

    陆勤_数据人网
  • 【算法】线性回归算法库总结

    小编邀请您,先思考: 1 回归算法的道和术分别是什么? 2 如何应用回归算法? scikit-learn对于线性回归提供了比较多的类库,这些类库都可以用来做线性...

    陆勤_数据人网
  • python第十六课——外部函数and内部函数

    1.外部函数&内部函数 内部函数: 定义在某个函数的内部,就是内部函数; 【注意事项】: 1).内部函数可以随意使用它外部函数中的内容 2).外部函数...

    hankleo
  • Kotlin:02-函数的声明

    在上一篇文章中,我们在创建Intellij IDEA 和 Eclipse 的编译环境时已经写过 HelloWorld 代码,具体代码为:

    CnPeng
  • 一文了解神经网络工作原理

    深度学习是机器学习中重要分支之一。它的目的是教会计算机做那些对于人类来说相当自然的事情。深度学习也是无人驾驶汽车背后的一项关键性技术,可以帮无人车识别停车标志、...

    小白学视觉
  • MySQL敏感数据加密及解密

    大数据时代的到来,数据成为企业最重要的资产之一,数据加密的也是保护数据资产的重要手段。本文主要在结合学习通过MySQL函数及Python加密方法来演示数据加密的...

    July
  • Fast.ai 最实战深度学习在线课程 Lesson5

    AI100 每周二推出的 Fast.ai 深度学习在线课程很受同学们的欢迎。本课程由 Jeremy Howard 教授开设,共8节。目的是让大家在不需要深入研究...

    AI科技大本营

扫码关注云+社区

领取腾讯云代金券