机器学习虾扯淡之Logostic回归

开发 开发工具
大家好我是小蕉。不知道小伙伴有没有什么意见建议,是不是发现每个字都看得懂,但是全篇都不知道在说啥?哈哈哈哈哈哈,那就对了。

0x00 前言

大家好我是小蕉。上一次我们说完了线性回归。不知道小伙伴有没有什么意见建议,是不是发现每个字都看得懂,但是全篇都不知道在说啥?哈哈哈哈哈哈,那就对了。

这次我们来聊聊,有小伙伴说,那我如果我么想把结果分为两拨,就这样的,咋办?

大蕉大笔一挥。啊这不是分好了吗?

我敢说,现在百分之很多十(目测七八十)说自己在做人工智能的,都只是用Logistic回归在做分析。

“就你事多。我不会分。”

“想学啊你?我教你啊。”

0x01 Logistic是啥玩意

想法大概是这样。把数据映射到Logistic函数上边,大于0.5我们就认为是类别y1 = 0,小于0.5我们认为是类别y2 = 1。

  1. y ∈ {0 , 1} 

这个函数长啥样?就长下面这样。

  1. π (x) = 1 / ( 1 + exp (-x)) 

所以我们在这种情况下,观察到各个样本的概率长下面这样。

  1. P( Y = 1 | x ) = 1 / ( 1 + exp (-x))  
  2. P( Y = 0 | x ) = 1 / ( 1 + exp (x)) 

所以比值比ODD 长这样

  1. odd = P( Y = 1 | x ) / P( Y = 0 | x ) = exp (x) 

对数比值比刚刚好

  1. ln odd = x 

你说神不神奇!!当然我们不仅仅只有一个参数是吧?所以对原始数据变成

  1. g(x) = θ.T * x + b 

其中θ是一个N维的向量,跟每一个样本X的维度保持一致这样。

所以LR的映射函数做一下线性变换就变成这样了。

  1. π (x) = 1 / ( 1 + exp (-g(x))) 

到这里,我们已经知道Logistic回归是什么鸟了,其实就是把数据映射到Logistic函数上,根据概率来进行分类。

0x02 极大似然估计

那我们要怎么得到损失函数loss呢?不要急跟大蕉一步一步来。

上面我们已经看到了每个样本的概率。现在说一下极大似然估计是什么东西。极大似然估计,就是我们装作这些个参数啊,我们老早就知道了,然后借此来估计现在这些样本被观察到的概率。你脑子wata啦?既然这些样本都已经发现了,所以实际概率肯定是***啊!!概率要越大越好越大越好,而又只是一个估计值,所以我们就叫它极大似然估计啦。

所以我们观察到样本的概率是

  1. P = (p ^ Y) * (( 1 - p) ^ ( 1 - Y )) 

怎么容易一点去理解这行蜈蚣一样的公式呢?把Y的值0跟1代进去就行了,你就懂了,Y等于0的时候就是(1 - p ),y等于1时就是 p。就是这么简单。

下面是重点。敲黑板,划重点!!!我就是卡在这里想了很多天,完全不知道损失函数怎么来的!

因为所有样本都是相互独立的,所以他们的联合概率分布是他们的概率乘积。

  1. L(θ) = ∏ (p ^ yi) * ( (1 - p) ^ (1 - yi)) 

yi是每个样本的实际Y值。我们这里要求***值嘛,那要变成损失函数咋变?我们知道这个值永远是 ( 0 , 1)的,所以直接加个负号,本来求***就变成求最小了。

  1. ∴ loss = - L(θ) 

当然我们习惯这样加,看起来比较高端,m是样本的个数

  1. ∴ loss = - 1/m * L(θ) 

无所谓,原理一样的。

乘法是很消耗资源的,我们可以把它转换成对数,这样所有的乘法都变成加法啦!!而且而且函数的性质不变。所以最终的损失函数长这样。

  1. loss(θ) = - log L(θ) 

下面开始我们用Andrew NG大大的方式变换一下好了,仅仅是为了后面比较好算而已。

  1. P = p ^ (y + 1) / 2 * (1 - p) ^ - (y - 1) / 2  
  2. Y ∈ {-1,1} 

跟上面没什么本质的差别,只是把Y的值域变成-1跟1了。下面就是普通的公式变换。

0x03 损失函数咋来的

  1. l(θ) = - ∑ ln(p ^ (yi + 1) / 2 * (1 - p) ^ - (yi - 1) / 2) 

进行log变换,幂乘变成乘法。

  1. = - ∑ (yi + 1) / 2 * lnp - (yi - 1) / 2 * ln(1 - p) ) 

把p代进去,也就是把把负号放到P里边了。变成直接取倒数。就得到下面这个

  1. = ∑ (yi + 1) / 2 * ln(1 + exp (-g(xi)) - (yi - 1) / 2 * ln( 1 + exp (g(xi))) 

观察一下,就可以看出来。自己代进去就知道啦。

  1. ∴ 当yi = 1 时,l(θ) = ∑ ln(1 + exp ( - g(xi)) 

当yi = -1 时,l(θ) = ∑ ln(1 + exp ( g(xi))

所以最终的损失函数长这样。

  1. l(θ) = ∑ ln(1 + exp ( - yi * g(xi)) 

好了,到这里我们的推导就结束了,接下来就按照梯度下降算法去求最小值就好啦。

0x04 怎么用呢

然后我们就可以用最终得到的参数进行预测,大于0就当成类别Y1 ,即Y = 1,小于0当成类别Y1,即Y = -1。当然,这只能用于二分类。

那这玩意有什么用呢?应用场景比比皆是。

用户点击还是不点击?客户是欺诈还是没欺诈?客户逾期还是不逾期?这个产品是推荐还是不推荐?

传说中的人工智能预测高端引擎就出来了,小伙伴自己试试看把。

0x05 结束语

今天就酱,掰~跪在地上求不掉粉。

【本文为51CTO专栏作者“大蕉”的原创稿件,转载请通过作者微信公众号“一名叫大蕉的程序员”获取授权】

戳这里,看该作者更多好文

责任编辑:武晓燕 来源: 51CTO专栏
相关推荐

2021-04-21 10:47:48

机器学习逻辑回归

2014-08-22 10:06:46

机器学习

2017-06-14 17:18:43

机器学习数据研究回归

2017-05-17 08:24:08

TensorFlow机器学习线性回归

2020-12-19 10:54:25

机器学习线性回归算法

2020-12-20 20:31:56

Python机器学习多元线性回归

2020-12-23 07:54:56

Python机器学习逻辑回归算法

2017-11-24 10:43:43

Madlib机器学习

2018-08-03 10:30:16

算法回归机器学习

2014-06-19 14:14:35

机器学习

2023-11-29 14:34:15

机器学习统计学

2022-08-16 15:17:37

机器学习算法模型

2020-11-10 08:37:05

Python线性回归机器学习

2018-03-15 11:50:53

机器学习入门Tensorflow

2020-11-06 09:00:00

机器学习集成学习人工智能

2014-06-30 10:58:02

机器学习

2020-12-22 07:09:01

Python机器学习多项式回归

2020-12-24 06:54:45

Python机器学习多类分类逻辑回归

2022-09-06 08:00:00

机器学习金融数据科学

2021-04-18 22:06:29

机器学习算法数据
点赞
收藏

51CTO技术栈公众号