好像在各种机器学习入门教程中,逻辑回归模型(Logistic/Logit Regression)经常被拿来作为入门的机器学习模型,比如我家的Andrew Ng就是这样做的。

看起来,逻辑回归模型实在太简单,甚至容易被认为是一个拍脑袋想出的naïve的模型。今天,小夕就非要把它当做宝贝好好夸一夸,哼哼哼...

流水账一样的看似没毛病而且简单易懂的讲法是这样的:

浅入

怎么将n维向量X=[x1,x2,...,xn]映射成一个点y呢?很容易想到就是将向量X与另一个向量做内积啦。这个向量我们称为参数θ,即θ=[θ1, θ2 ,..., θn]。所以做内积就是X*θ’【即行向量X乘以(行向量θ的转置)】得到一个数。

但是如果X=[0, 0, 0, ..., 0]时,输出y应等于1,那怎么办呢?这时X*θ’肯定也是0 呀。。。所以为了解决这个问题,要再加个常数b,所以现在是X*θ’+b。我们为了看起来好看简洁,在X的最开头加个1,把b扔到θ的最开头,所以就成了新版的X*θ’,当然此时X=[1,X], θ=[b,θ]

好像还不行,因为这时的值域是(-∞,+∞)呀,可是我们要得到的是0或者1,模型给我输出一个100000是怎么回事。。。所以要把值域限制一下啦,将值域正负无穷改为(0, 1),怎么改呢?出现了下面这个sigmoid函数:

在这个函数的限制下,哪怕输入为正无穷,输出也不会大于1,同样输入为负无穷,输出也不会为小于-1。所以现在模型成了:

sigmoid(X*θ’)。

这时,我们只需要认为当模型输出值大于0.5时,就认为是逻辑1;当输出值小于0.5时,就认为是逻辑0。预测函数(假设函数)完成!即htheta(X)= sigmoid(X*θ’),有了这个函数,我们就可以给样本贴类别标签啦。

好咯,然后还差什么?当然是训练模型用的损失函数/代价函数/目标函数啦。损失函数是什么呢?

诶?看起来很不错呀,仔细一看也能模模糊糊的看明白,反正当类别预测值与实际类别完全对起来的时候,J(θ)确实等于0的。

所以最后要干嘛呢?当然是得到我们的迭代公式然后梯度下降法啦。一求导就得到了下面的公式

然后坐等J(θ)收敛,从而得到最优模型参数θ了...

上面的讲解看起来没毛病呀~难道每一步真的都是这么恰好的信手拈来的吗?

前方超高能预警!

深出

慢慢来~从回归开始讲起啦。

回归的含义在高中就学过了,不过可能被老师解释的比较naïve(都忘了老师怎么讲的了。。。)。一个抽象而准确的描述是“回归即为两个或多个随机变量之间的相关关系建立数学模型”。设想一下,如果我们仅考虑两个随机变量,并且将其中一个随机变量看作机器学习的输入,也就是特征向量X,将另一个随机变量看作机器学习的输出,也就是类别预测y。那么...回归的意思是...

用一个数学模型直接描绘出X到y的映射关系!

如果还不懂的话,想一想我们之前的朴素贝叶斯模型是怎么用X训练模型求y的?是不是用贝叶斯定理呀~也就是下面这样:

等式左边就是随机变量y,而等式右边并不是直接用X表示的,而是用其他东西间接描述y。

所以!回归就是要直接用X描绘出y!是直接!

当随机变量X与随机变量y呈线性关系时,如果我们要用回归模型来描述这两个随机变量的关系,那么这里的回归模型是什么样子的呢?相信机智的你肯定想到啦,这里就是高中就学过的线性回归模型:y=aX+b。

那么当随机变量X与随机变量y呈。。。逻辑关系时呢?(逻辑不就是0/1嘛),也就是说当随机变量X取某值时,随机变量Y为某一个逻辑值(0或1),那么这里的回归模型是什么样子的呢?相信机智的你肯定想到啦,这里就是大学都没学过的逻辑回归模型:?????=?????

hhhh,小夕太调皮是不是不太好吖~

其实我们仔细想一下,逻辑回归模型是难以像线性回归一样直接写出类似于y=aX+b这么简洁的形式的,因为y的取值为离散的,只有0和1,所以要怎么表示呢?当然是用模型分别表示y取0的概率和y取1的概率了。也就是用模型表示出P(y=1|X)和P(y=0|X)。

其实为某种形式的回归建立数学模型并不是一件容易的事情,经过先烈的曲折探索,得出了一个神奇的公式,称为logit公式:

诶?看似简洁,然而有什么用呢?里面既没有X也没有y呀。。。

先等等,还记得深度学习中经常加在神经网络的顶层来求后验概率P(y=j|X)的softmax函数吗?对就是下面这个熟悉的函数:

对于我们的二分类问题来说,有P(y=0|X)+P(y=1|X)=1,那么如果我们令logit公式中的Q=P(y=0|X)呢?然后P(y=0|X)用softmax函数表示呢?是不是突然被下面推导的过程和结果惊呆了!!!:

而xTΔw的值不就是反映感知机模型的输出嘛!(即xTΔw>0则预测类别为正,xTΔw<0则预测类别为负)

我们再把xTΔw整理的好看一点,变成更正常的形式:w·x+b。然后就可以得到下面的结论!!!:

这就是我们前面苦苦寻找的逻辑回归模型!看,随机变量X与随机变量Y的关系竟然直接纳入了一个模型下面!也就是说后验概率直接用随机变量X表示了出来!而不是像贝叶斯定理一样间接表示后验概率。

有了上面直接表示的后验概率,于是建立似然函数,通过极大似然估计来确定模型的参数。因此设:

似然函数就表示为

对数似然函数即:

也就是本文的“浅入”环节的损失函数啦,原来是正儿八经的一步步推出来的!剩下的就交给梯度下降法优化出模型参数吧!

好咯,小夕只能帮你把逻辑回归模型挖的这么深啦,据说有更深的理解的,然而小夕已经驾驭不了了T_T。

浅入深出被人看扁的逻辑回归!相关推荐

  1. Angular浅入深出系列 - 写在前面

    本系列目录: 写在前面 基础知识 控制器(Controller) 作用域(Scope) 集合(Collection) 模块(Module) 依赖注入(Dependency Injection) 服务( ...

  2. 处理中文乱码_浅入深出:一次提问引发的深思,从此再也不怕“乱码”问题

    这是恋习Python之浅入深出系列第3篇原创首发文章 作者|丁彦军 来源|恋习Python(ID:sldata2017) 转载请联系授权(微信ID:2394608316) 近日,有位粉丝向我请教,在爬 ...

  3. 浅入深出之Java集合框架(上)

    Java中的集合框架(上) 由于Java中的集合框架的内容比较多,在这里分为三个部分介绍Java的集合框架,内容是从浅到深,如果已经有java基础的小伙伴可以直接跳到浅入深出之Java集合框架(下). ...

  4. 浅入深出Vue:环境搭建

    浅入深出Vue:环境搭建 工欲善其事必先利其器,该搭建我们的环境了. 安装NPM 所有工具的下载地址都可以在导航篇中找到,这里我们下载的是最新版本的NodeJS Windows安装程序 下载下来后,直 ...

  5. 浅入深出之Java集合框架(中)

    Java中的集合框架(中) 由于Java中的集合框架的内容比较多,在这里分为三个部分介绍Java的集合框架,内容是从浅到深,如果已经有java基础的小伙伴可以直接跳到浅入深出之Java集合框架(下). ...

  6. Java 注解 (Annotation)浅入深出

    Java 注解 (Annotation)浅入深出 本文主要参考与借鉴frank909 文章,但更为简单,详细. Annotation 中文译过来就是注解.标释的意思.Annotation是一种应用于类 ...

  7. JavaScript中函数作用域之精辟,函数原理的浅入深出,及程序执行预编译之通天编译???

    1.程序执行的前一刻会先将代码预编译一遍,如果有语法错误则直接终止程序运行 //预编译之通天编译 --> 在执行的前一刻,会把文件通天扫描一遍 /** //预编译 函数整体提升(即函数会放到程序 ...

  8. webpack那些事:浅入深出-源码解析构建优化

    基础知识回顾 入口(entry) module.exports = {entry: './path/to/my/entry/file.js' }; //或者 module.exports = {ent ...

  9. Why WebRTC|“浅入深出”的工作原理详解

    WebRTC可以被看作是一个不需要安装任何插件或者下载任何额外程序就能运行的浏览器原生实时通信手段.不同的客户端通过(相同或不同)浏览器跳转到同一个 URL 就能实现实时互通.看见彼此.但这只是&qu ...

最新文章

  1. 财务人员学python有用吗-一个来自35岁职场高管的忠告:Python为什么不得不学?...
  2. Linux命令 iperf - 网络性能测试工具
  3. c语言两个数组比较大小函数,输入两个数组,调用large函数比较,计数,输出统计结果...
  4. java面试题二十八 从未用过的 native
  5. 双线性插值理论与代码实例
  6. mnist手写数字数据集_mnist手写数据集(1. 加载与可视化)
  7. java 遍历hashmap key_Java5种遍历HashMap数据的写法
  8. MySQL索引常用算法
  9. JQUERY对RADIO,CHECKBOX,SELECT的操作常用方法大全
  10. MySQL中boolean类型设置
  11. Spring中EmptyResultDataAccessException异常产生的原理及处理方法
  12. 01_kubernetes初始化系统和全局变量
  13. SHA1散列算法及其C++实现
  14. 利用wePE制作WinPE启动U盘全过程(含图文)
  15. 转:嵌入式的经典书籍
  16. Netty :仿写微信 IM 即时通讯系统
  17. tcpdump抓取网络
  18. 浅谈对象的深拷贝和浅拷贝
  19. 2021年最后一期 | 转录组分析的正确姿势你了解了吗?
  20. 如何快速恢复最近关闭的浏览器标签页面

热门文章

  1. ftp上传文件出现“sftp: cannot open /usr/SmartStore_test/1.zip to write”
  2. iOS开发-自动隐藏键盘及状态栏
  3. PHP中的get_defined_funciton和get_defined_vars
  4. 简单的脚本控制面试题
  5. linux中DIR、dirent、opendir()、readdir()、closedir()函数的使用
  6. RTOS 任务间互斥的难题
  7. Linux C简单的web服务器
  8. html分类代码查询,html标签元素分类(示例代码)
  9. ubuntu 18 Cannot find installed version of python-django or python3-django.
  10. LeetCode 2132. 用邮票贴满网格图(DP/二维差分)