逻辑回归的算法思想

Logistic regression(简称LR)是机器学习最常用的算法,经常用来处理二分类问题

我们举一个生活案例,毕业的学生都要求职,如果你看上了一家企业,并把你的简历投递给该企业的hr,我们省略中间N轮的面试笔试经过,那么这件事情对于你会产生两个结果,你被录取了或者你被淘汰了。假设我们有一个模型算法用来预测这件事情的结果,那么你通过这个模型来预测结果,但是你会发现,模型只会直接告诉你你被录取(你很开心)或者你被淘汰(你很绝望),这样不免会显得太粗鲁太直接,你更希望模型可以告诉你一个可能性,比如说你非常有希望,有一点希望,不怎么有希望,你想都不用想了等等信息,这样会使得结果更加人

我们的世界是随机的,比如今天会不会下雨,今天去散步会偶遇到谁,开车走这条路会不会拥堵,有哪几家企业相中你的offer,玩游戏掉落的装备,同一间办公室两个人生日相同的可能性,甚至蝴蝶效应等,每一件事件的发生都可以用可能性或者几率来表达,而促使该事件发生的条件越充分,事件发生的可能性也就越大,所以人类发明了概率来描述这一现象

假设y是我们想要的结果概率,而简历有m个因素可以理解成m个因变量,我们将m个因变量表示为x1,x2,...,xm,那么公司会怎么考虑这些因素呢?最快速的方式就是把这些因素对应的得分进行求和,和的结果越大表示录用,也就是属于录用这个类别,反之和的结果越小,就属于淘汰这个类别。我们将每个因变量对应的权值表示为θ1,θ2,...,θm,将因变量乘以相应的权值得到的加权和就是最后的得分,根据得分就可以进行归类

本章知识点:

1多项式逻辑函数

2sigmoid非线性函数

3分类任务函数

4最大似然函数和其对数化处理

5最大似然函数的偏导数求解

6梯度上升法

7、随机梯度上升法

一. 逻辑函数

假设我们的数据有n个独立的维度,我们用x1,x2,...,xn来表示,用w1,w2,...,wn表示每个维度的权值,我们叫做回归系数,分类结果y=0或者y=1表示两个类别,显然w1,w2,...,wn就是模型待求解的参数列表

首先我们需要拟合出一个多项式逻辑函数f(x),用来表示其加权和结果

多项式逻辑函数

上式的右边我们用W表示这n个回归系数向量,X表示n维样本特征向量,则根据向量的乘法,W的转置和X的点积就可以表示加权和结果。

二. sigmoid非线性函数

现在我们希望f(x)具有良好的逻辑判断性质,最好可以直接表达出样本被分到某类的概率,比如f(x) > 0.5的时候表示x被分到正类,f(x) < 0.5表示分到反类,并且我们希望f(x)的结果总是在[0,1]之间可以直接表示概率,那么我们需要一个函数g(z)来映射f(x),于是我们会用到sigmoid函数:

sigmoid函数
sigmoid函数图像

很明显,sigmoid满足我们对g(z)的一切要求,定义域为任意实数R,值域正好在[0,1]之间并且在x=0处值为0.5,整个函数单调递增且非线性变化,我们就可以根据g(z)的值是否大于0.5来判断样本x属于正类还是反类

现在我们设预测函数h(x)来计算样本x的类别,那么怎么映射h(x)到sigmoid函数上呢?

设h(x)表示预测出样本x属于正类的概率,那么样本x属于反类的概率就为1 - h(x),我们定义让步比为正类和反类的比值,那么引入对数后我们得到下面关系

让步比

我们利用对数来求解出h(x)

sigmoid映射h(x)

从上面式子可以看出,我们可以用g(z)来直接映射f(x)就可以得到h(x),即h(x) = g(f(x)),且h(x)拥有sigmoid函数的一切特性,h(x)即为模型的预测函数

线性模型加权和
加权和非线性输出

从上面两个模型我们也可以证明出:逻辑回归的本质就是一个线性分类模型,它通过一个非线性化映射输出一个概率值来评判分类的标准

三. 分类任务函数

设P(y=1|x)表示样本x属于正类的概率,那么P(y=0|x) 表示反类的概率,我们需要用一个分类函数用来表示P(y|x)是属于正类还是反类的概率,于是得到下面分类函数

每个样本(xi,yi)出现的概率

仔细观察上式,当yi=1时,p(y|x)即表示样本x属于正类的概率,而当yi=0时,p(y|x)即表示样本x属于反类的概率,而P(y=1|x)我们可以用之前的预测函数h(x)来表示,于是分类函数可以整合为

分类函数

四. 最大似然函数及其对数化

现在我们写出了预测函数和分类函数,以及拥有二分类数据样本集做训练,而回归因子W未知,那么怎么求解出W呢?下一步,我们需要构造出损失函数Loss(代价函数)

那么我们的损失函数为什么不用最小二乘法了呢?(请比较线性回归的损失函数思考)

我们知道,逻辑回归可以被视为一个广义上的线性模型,而它的外层函数g是sigmoid函数,问题就在这里,g是一个非线性函数,如果我们把预测函数h(x)带入最小二乘法函数中,会发现损失函数图像是非凸函数

非凸函数

由于g的非线性使得用最小二乘法表示的loss拥有多个局部极小值,这样会影响我们使用梯度下降法求解最小值时,有非常大的概率不是全局最优解,只是得到局部最小值,这也就解释了我们不能使用最小二乘法来表示损失

那我们需要找到什么样的函数来表示模型的损失呢?

回想我们从小做数学题,大多都是根据一些已知条件来推算结果,而当下的模型是已经知道了结果,需要寻找使得该结果出现的概率最大的条件,而这个条件就是W

显然,我们需要构造的函数是统计模型中参数的函数,而这个函数就是似然函数。它在观察到结果的时候,对产生该结果的参数列表进行估计,使得该参数列表最具有合理性

通过之前的分析,我们需要找到一个凸函数给预测函数h(x)作为损失函数,为此我们写出似然函数L(w),因为每个样本互相独立,那么n个样本出现的似然度为

似然函数

显然,似然函数就是我们的损失函数,我们需要求出使得似然函数L(w)最大的系数组合,该组合即为W,即问题转化为求解最大似然函数

我们先准备尝试用数学知识直接对L(w)求导,计算其导数为0的解析解,如何存在解析解,那么我们就可以直接对损失函数进行优化了,为此我们需要变换L(w):取自然对数,然后化简

对数化似然函数

我们将预测函数h(x)和逻辑函数f(x)带入上式l(w)再次化简可得

损失函数最终表达式

至此,我们终于找到了损失函数Loss和逻辑函数f(x)的关系,最优化Loss函数,求出相对的f(x),也就找到了回归因子W,下面我们需要对参数W求偏导数

五. 最大似然函数的偏导数

最大似然函数参数的偏导数

至此,我们一步步推导出了最大似然函数的偏导数,令该导数为0可以得到极值,但是很不幸的是,它无法通过直接解析来求解,所以我们需要利用迭代逼近,也就是梯度下降(上升)法来求解极值

六. 梯度上升算法

机器学习中梯度下降似乎已经无处不在使用了,它是求解最优化函数问题中最常见的算法,显然,在似然函数作为损失函数的模型中,我们需要计算梯度上升(和梯度下降方向相反)来得到最大似然值

我们从构造逻辑函数f(x)、预测函数h(x)、分类函数P(y|x)、似然函数L(w),对数化似然函数得到和f(x)相关的l(w)作为损失函数,最后对l(w)求偏导数,才可以写出梯度上升式子

梯度上升更新回归因子

上式就是最基本的梯度上升法,其中α设置为学习率,表示每次迭代上升的幅度(步长),这个式子的作用即是每次迭代更新回归因子W来逼近最大值(最合理的参数列表)

梯度下降法求解回归因子
二分类结果迭代500次

从结果中可以看到模型在梯度上升算法优化后,准确率大概在95%左右

七. 随机梯度上升法

已经有了梯度上升,为什么还需要随机梯度上升呢,这二者有什么区别呢?

我们来分析一下代码中梯度上升式子,weights = weights + alpha * x.T * (y - hx),显然,每一次的迭代更新都需要计算所有数据的损失函数,当训练数据较小还好,但是如果有数十亿样本,那么上式的矩阵乘法消耗的时间将会非常大,于是我们考虑使用随机梯度上升来更新参数列表

所谓的随机梯度上升,指的是每次迭代更新参数时不需要用到所有的数据样本矩阵x和y,而是使用样本中随机选出的一个数据点来计算梯度并更新参数,这样可以在新的样本到来时对模型进行增量式更新

可以看出随机梯度上升法是一个在线学习算法,相比之前的梯度上升法一次性处理整个数据样本可以被称作批处理,训练之前我们一般将训练数据随机打乱在进行随机梯度算法

随机梯度上升算法求解回归因子
二分类结果迭代200次

从结果中可以看到模型在随机梯度上升算法优化后,准确率大概在98%左右

最后从一元线性回归到逻辑回归的原理分析过程中,我们可以总结出机器学习算法的基本步骤如下:

1、对于一个实际问题,我们需要使用数学语言来描述并建立数学模型,比如回归模型还是分类模型等

2、对训练数据进行数据清洗/补充

3、建立模型的预测函数来描述问题的解(线性模型,非线性模型)

4、建立模型的损失(代价)函数来最优化问题的解(比如最小二乘法,似然函数等)

5、纯数学推导出损失函数关于带求解参数的偏导数表达式

6、在偏导数无法计算出其解析解或者无法求导的情况下,借助迭代算法一步步逼近最优解(梯度下降,随机梯度下降等)

7、编程实现整个算法,并尝试调整超参数组合得到最优模型

逻辑回归代码见:逻辑回归的基本原理

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343

推荐阅读更多精彩内容