Patchouli的机器学习系列教程八逻辑回归

上个教程我们学习了贝叶斯分类器和朴素的贝叶斯模型,贝叶斯法则是用来计算类的后验概率的,这次教程我们将实现类成员概率的直接估计,也就是逻辑回归模型,同时这也将是本机器学习系列教程的最后一篇。 再研究概率的时候我们通常会引入这样一个变量——优势比(Odds ratio),也叫比值比,这个变量被用来衡量正反概率之间的差距。假如我们把得到正结果的概率设为π,那么优势比就是: ,因为概率这东西都在0到1之间,所以优势比的上下界在0到 之间;因此我们可以对优势比取对数来平滑这条曲线,并且可以让取值范围变成从 到 。 而这个平滑得到的结果叫Logit Function: 这个东西将被我用作链接函数,还记得我们之前说的标准回归吗: 现在我们将这两个东西链接起来: 然后我们写下链接函数的反函数(以π为因变量): 其中 ,代表的是第i个数据点得到正结果的概率,因此对于一个数据集而言,就可以有如下表达: 本文的核心是逻辑函数(Logistic Function),这种S函数是由韦吕勒在1845研究人口增长时用来模仿人口增长时用的曲线。 他在机器学习中最大的作用就是将一条实线压缩到0和1之间: fig, ax = plt.subplots(figsize=(10,5))f = np.linspace(-8, 8, 100)g = 1/(1np.exp(-f))ax.plot(f, g, 'r-', linewidth=3)ax.set_title('Logistic Function', fontsize=20)ax.set_xlabel('$f_i$', fontsize=20)ax.set_ylabel('$g_i$', fontsize=20)

这时我们把上面链接函数的反函数稍加修改,将 定义为一个包含输入项量 和参数向量 的函数,然后把他扔到逻辑函数中去: 这一切就像我们当初为线性回归做的那样(计算标准线性基函数组合的输出),我们将把这个这个值用到求伯努利分布的参数的似然函数中去。 我们可能还记得伯努利分布和伯努利似然函数是这样的: 对数似然函数是这样的: 这时我们把 带进我们的误差函数中去得到(对数似然函数取负): 因为逻辑函数:的梯度为: 令 ,梯度有: 这个方程没有解析解,因此我们无法从梯度的偏导数找到目标函数的驻点。 既然不能通过分析方法得到解,优化就必须通过数值方法来进行,比如牛顿(环)方法。 实际上逻辑回归只是广义线性模型(GLMs)中的一种,此类模型假设实验者梭测量的随机变量的分布函数与实验中系统性效应可经由一个链接函数建立起可资解释的其相关性的函数,对于logictis模型来说,这个链接函数就是上面我们提到的logit function,这类模型通常都写成这样或通由以下形式得出: 类似函数还有泊松分布,泊松分布由于其分布特性和人类的神经网络中脉冲概率分布十分类似,因此被大量应用在计算神经学,人工智能科学中。 我们假设一个场景,假设我们现在在中国移动的电话客服中心,这个客服中心每分钟接到的电话数量按照一个任意的随机分布(任意的就是高斯的),那么这个客务中心每小时一共会接到多少电话。

泊松分布一般被用来描述这个场景,你看一眼泊松分布的函数图像就明白这个模型的精妙之处了。同样的,在神经网络中,每个神经元接到来自上一层神经元的刺激强度是随机的,因此过不过临界点也是随机的,以此来模拟神经脉冲和神经元的激活,比如IF模型(integrate-and-fire)。 泊松分布有如下表示: 其中 是泊松分布的参数,你可以把他理解为上述例子中每分钟客服中心收到的电话。 from scipy.stats import poissonfig, ax = plt.subplots(figsize=(10,5))y = np.asarray(range(0, 16))p1 = poisson.pmf(y, mu=1.)p3 = poisson.pmf(y, mu=3.)p10 = poisson.pmf(y, mu=10.)ax.plot(y, p1, 'r.-', markersize=20, label='$\lambda=1$')ax.plot(y, p3, 'g.-', markersize=20, label='$\lambda=3$')ax.plot(y, p10, 'b.-', markersize=20, label='$\lambda=10$')ax.set_title('Poisson Distribution', fontsize=20)ax.set_xlabel('$y_i$', fontsize=20)ax.set_ylabel('$p(y_i)$', fontsize=20)ax.legend(fontsize=20)

而泊松回归自然也要和时间挂钩而不是什么别的: 泊松回归以一个对数函数做链接函数,因此也被称为对数加法模型。同样的,我们可以根据参数将泊松回归拆成如下两部分: 实际上上式是可以将连加换成连乘的,那么就等于: 以上就是神经网络和计算神经学中经常用到的泊松回归,也是广义线性回归中的一员,大家在以后的学习中要灵活综合地使用这些函数。 那么我们的机器学习课程就到此结束了,之所以要写这种基础中的基础教程,就是因为看到现在互联网上的机器学习教程全都是各种空中楼阁,直接画出一张大饼告诉你我们用机器学习实现了什么什么,然后扯几句基本思路给你,毫无头绪;要么就是sklearning大法好,调参调库调到死,然而在没有对应的数学解释前,你是万万没可能明白该怎么调参的,就像哑巴伪装自己不是哑巴而说话一样,这从逻辑上就不可能。 说书唱戏劝人方,三条大路走中央。 善恶到头终有报,人间正道是沧桑。 【该内容通过维权骑士士值品牌馆授权发布】

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181015A0GD5O00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券