
深度学习从入门到精通+TensorFlow案例演示:普通最小二乘法与最大似然估计法
小二乘法,这里再强化一下,使用矩阵运算,让解法可应用到。结合矩阵、微分,我们就能够轻松求出线性回归的系数,此原。学去求解,因此,逼近法会是一个比较实用的方法,深度学习。变成一次方,所有的概率值取对数后,大小顺序并不会改变。假设两个样本是独立的,故联合概率为两个样本概率相乘,使。设定不佳的话,仍然可以找到最佳解,不过,需要较多次的执。个样本概率全部相乘,不易计算,通常我们会取对数,点是样本点,曲线是
·
相关学习资料 | 深度学习入门到精通+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
)调用
scipy.optimizea
模块的
leastsq()
函数进行优化求解。

①在
leastsq()
函数中,第一个参数是求解的函数;第二个参数是
起始点;
leastsq
是采逼近法,而非纯数学公式求解,
nfev
显示它
经过
22
次执行周期,才找到最小值
5
(
fvec
),当时
x=1.72892379e-05≈0
。
②执行结果如下:

③起始点可设为任意值,通常采用随机数或是直接给
0
。指定值
设定不佳的话,仍然可以找到最佳解,不过,需要较多次的执
行周期,也就是所谓的较慢收敛(
Convergence
)。
④当面对较复杂的函数或较多的变量时,我们很难单纯运用数
学去求解,因此,逼近法会是一个比较实用的方法,深度学习
的梯度下降法就是一个典型的例子,后面章节我们将使用
TensorFlow
程序来进行说明。
2-6-2 最大似然估计法
最大似然估计法(
MLE
)也是估算参数值的方法,目标是找到
一个参数值,使出现目前事件的概率最大。如图
2.63
所示,圆
点是样本点,曲线是四个可能的正态概率分布(平均数
/
变异数
不同),我们希望利用最大似然估计法找到最适配(
Fit
)的一
个正态概率分布。

下面使用最大似然估计法求算正态分布的参数
µ
及
δ
。
(
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.
如果有两个样本点
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
求解的结果相符。
更多推荐
所有评论(0)