相关学习资料深度学习入门到精通+TensorFlow全程案例讲解 .zip

2-6 普通最小二乘法与最大似然估计法

普通最小二乘法( Ordinary Least Squares, OLS )、最大似然估
计法( Maximum Likelihood Estimation, MLE )是常见的优化和
估算参数值的方法,如回归系数、正态分布的平均数 / 变异数。
笔者戏称两者是优化器求解的倚天剑与屠龙刀,许多算法问题
凭借这两把利器便可迎刃而解。

2-6-1 普通最小二乘法

“2-3-4 简单线性回归求解 章节,利用一阶导数等于 0 的特性,
对简单线性回归( y = wx + b )求取最佳解,使用的就是普通最
小二乘法,这里再强化一下,使用矩阵运算,让解法可应用到
多元回归、深度学习。
y=w x +w x+w x+L+w x +b
112233nn
首先定义线性回归的目标函数( Objective Function )或称损失
函数( Loss Function )为均方误差( MSE ),公式为误差平方
和( SSE ),除以样本数( n ),其中
首先定义线性回归的目标函数( Objective Function )或称损失
函数( Loss Function )为均方误差( MSE ),公式为误差平方
和( SSE ),除以样本数( n ),其中
MSE 当然越小越好,所以它是一个最小化的问题。
1 )目标函数。
MSE = SSE / n ,我们忽略常数 n ,可以只考虑 SSE ,有
②以矩阵表示线性回归 y = wx 。其中 b = b * x ,故将 b 也可视为 w
的一个项目。
③以矩阵表示 SSE
y - wx * y - wx
y y - 2wx y + wx wx
2 )对 w 偏微分得
结合矩阵、微分,我们就能够轻松求出线性回归的系数,此原
理是神经网络优化求解的基石。
以下程序请参考 02_18_ 普通最小二乘法 .ipynb
范例 1. 以普通最小二乘法建立线性回归模型,预测波士顿
Boston )房价。
解题:
1 )依上述公式计算回归系数。程序代码如下:
执行结果: W=[-1.08011358e-01 4.64204584e-02 2.05586264e-
02 2.68673382e+00
-1.77666112e+01 3.80986521e+00 6.92224640e-
04 -1.47556685e+00
3.06049479e-01 -1.23345939e-02 -9.52747232e-01 9.31168327e-03
-5.24758378e-01 3.64594884e+01]
2 )计算相关效果衡量指标。程序代码如下:
3 )以 Sklearn 库验证。程序代码如下:
执行结果:与公式计算一致,验证无误。
范例 2. 使用 SciPy 以普通最小二乘法计算函数 x +5 的最小值。
1 )先对函数绘图。程序代码如下:
执行结果:如图 2.62 所示。
图2.62 函数绘图
图2.62 函数绘图

2 )调用 scipy.optimizea 模块的 leastsq() 函数进行优化求解。
①在 leastsq() 函数中,第一个参数是求解的函数;第二个参数是
起始点; leastsq 是采逼近法,而非纯数学公式求解, nfev 显示它
经过 22 次执行周期,才找到最小值 5 fvec ),当时
x=1.72892379e-05≈0
②执行结果如下:
③起始点可设为任意值,通常采用随机数或是直接给 0 。指定值
设定不佳的话,仍然可以找到最佳解,不过,需要较多次的执 行周期,也就是所谓的较慢收敛( Convergence )。
④当面对较复杂的函数或较多的变量时,我们很难单纯运用数
学去求解,因此,逼近法会是一个比较实用的方法,深度学习
的梯度下降法就是一个典型的例子,后面章节我们将使用
TensorFlow 程序来进行说明。

2-6-2 最大似然估计法

最大似然估计法( MLE )也是估算参数值的方法,目标是找到
一个参数值,使出现目前事件的概率最大。如图 2.63 所示,圆
点是样本点,曲线是四个可能的正态概率分布(平均数 / 变异数
不同),我们希望利用最大似然估计法找到最适配( Fit )的一
个正态概率分布。
图2.63 最大似然估计法示意图
图2.63 最大似然估计法示意图

下面使用最大似然估计法求算正态分布的参数 µ δ
1 )正态分布
2 )假设来自正态分布的多个样本互相独立,联合概率就等于
个别的概率相乘。即
3 )目标是求取参数值 µ δ ,最大化概率值,即最大化目标函
数。即
4 N 个样本概率全部相乘,不易计算,通常我们会取对数,
变成一次方,所有的概率值取对数后,大小顺序并不会改变。
5 )取对数后,化简为
6 )对 µ δ 分别偏微分,得
7 )一阶导数为 0 时,有最大值,得到目标函数最大值下的 µ
δ 。所以,使用最大似然估计法算出的 µ δ 就如同我们常见的公
式。有
以下程序请参考 02_19_ 最大似然估计法 .ipynb
范例 1. 如果样本点 x =1 ,计算来自正态分布 N 0,1 )的概率。
1 )使用 NumPy 计算概率密度函数( PDF )。程序代码如下:
执行结果: 0.24
2 )也可以使用 scipy.stats 模块计算。程序代码如下:
执行结果: 0.24
3 )绘制概率密度函数。程序代码如下:
       
执行结果:如图 2.64 所示。
图2.64 绘制概率密度函数
图2.64 绘制概率密度函数

范例 2. 如果有两个样本点 x =1 3 ,来自正态分布 N 1,1 )及 N
2,3 )的可能性,哪一个比较大?
假设两个样本是独立的,故联合概率为两个样本概率相乘,使
scipy.stats 模块计算概率。程序代码如下:
执行结果如下,表明来自 N 1,1 )可能性比较大。
范例 3. 如果有一组样本,计算来自哪一个正态分布 N μ , δ )的
概率最大,请依上面证明计算 μ δ
1 )对正态分布的 PDF 取对数( log )。程序代码如下:
执行结果如下, Jupyter Notebook 可显示 LaTeX 数学式。有
2 )带入样本数据。程序代码如下:
3 )上述函数使用 diff() 各对平均数、变异数偏微分。程序代码
如下:
4 )使用 simplify() 简化偏导数。程序代码如下:
5 )令一阶导数为 0 ,有最大值,可得到联立方程式。程序代
码如下:
执行结果: [ 3.62, -1.57 , 3.62, 1.57 ]
6 )使用 NumPy 验证。程序代码如下:
执行结果:( 3.62, 1.57 ),与 MLE 求解的结果相符。
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐