(二十二)线性回归算法(二)-python数据分析与机器学习实战(学习笔记)

文章原创,最近更新:2018-05-19

1.似然函数求解
2.目标函数推倒
3.线性回归求解
4.案例:计算最大似然估计
课程来源: python数据分析与机器学习实战-唐宇迪

1.似然函数求解

有了误差之后,对最终建立的模型又有什么样的关系呢?之前讲了误差与预测值的关系,以及误差服从高斯分布,这节课来学习,来理解似然函数.


(2)的公式需要说明,均值为0.将(1)带入到(2).

注意:如果数学哪个知识点不懂,就去网上查相关资料.最好是边用边学.

什么叫极大似然函数?先来看看几个小例子:

  • 猎人师傅和徒弟一同去打猎,遇到一只兔子,师傅和徒弟同时放枪,兔子被击中一枪,那么是师傅打中的,还是徒弟打中的?
  • 一个袋子中总共有黑白两种颜色100个球,其中一种颜色90个,随机取出一个球,发现是黑球。那么是黑色球90个?还是白色球90个?
  • 看着两个小故事,不知道有没有发现什么规律...由于师傅的枪法一般都高于徒弟,因此我们猜测兔子是被师傅打中的。随机抽取一个球,是黑色的,说明黑色抽中的概率最大,因此猜测90个的是黑色球。
  • 他们有一个共同点,就是我们的猜测(估计),都是基于一个理论:概率最大的事件,最可能发生.

概念
极大似然估计方法(Maximum Likelihood Estimate,MLE)也称为最大概似估计或最大似然估计,似然就是可能性的意思。现在已经拿到了很多个样本,这些样本值已经实现,最大似然估计就是去找到那个(组)参数估计值,使得前面已经实现的样本值发生概率最大。因为你手头上的样本已经出现了,其发生概率最大才符合逻辑。即,样本所展现的状态便是所有可能状态中出现概率最大的状态。

原理
最大似然估计的目的就是:利用已知的样本结果,反推最有可能(最大概率)导致这样结果的参数值。通过若干次试验,观察其结果,利用试验结果得到某个参数值(这个参数值要具体问题具体分析)能够使样本出现的概率为最大,则称为极大似然估计。

举个栗子
现在有一个黑箱子里面有标有1或2的球共100个,现在从中有放回的抽取10个球,结果为{1,2,2,2,1,2,1,1,2,2},估计标有1的球在黑箱子里面有多少个。

我们不妨把标有1的球设为θ个,那么抽到1的概率p(x=1)=θ/100,这里简单记作p,则产生实验结果{1,2,2,2,1,2,1,1,2,2}的概率为 P = (p ^ 4)*((1-p)^ 6),这里的待估参数为θ,P是一个关于θ的函数,不妨记作P(θ)。根据前面讲的原理,“已发生的就是概率最大的”,θ有多种可能取值,但根据最大似然原理,θ应当取使{1,2,2,2,1,2,1,1,2,2}发生的概率最大时对应的值,即求P(θ)取最大值时θ的取值。

在这里,我们成P(θ)为似然函数,常记为L(θ),或L(θ)=L(x1, x2 ,..., xn; θ),其中x1, x2 ,..., xn是已发生的样本,记p(xi; θ)为xi发生的概率,则似然函数可以写为:

若总体X为连续型,其概率密度函数为f(x; θ),θ为未知参数。则似然函数为:


极大似然法的一般步骤:

1 构造似然函数L(θ)
2 取对数:lnL(θ)
3 求导,计算极值
4 解方程,得到θ

对于第3步不能利用求导取极值的情况,可以先将求对数似然函数的极大值转化为求极小值(或最小值),然后如果转换后的函数时高阶连续可导凸函数,则可以利用梯度下降法、牛顿法等求其最优解。

学习参考链接:机器学习入门——极大似然估计

2.目标函数推倒

什么叫对数似然?

  • 是将乘法转换成加法.因此这就是似然函数转换成对数似然的原因.

注意:似然函数/对数函数/最小二乘法这些都是考试常考的内容.需要知道推倒过程.


需要将目标函数展开,

为什么求偏导?因为要使目标函数最小,所以要求导求出目标函数的极小值点?偏导等于0的位置满足这样的数.

3.线性回归求解


这个是最常用的评估项.

残差平方和:是指预测值与真实值之间的差异.
类似方差项:是指真实值与均值之间的差异.

需要知道用什么工具做什么事情?为什么去做?需要把理论知识打结实一点.这些知识对后续理解算法理解代码都会有很大的帮助.

4.案例:计算最大似然估计

用一个例子来演示这个过程.案例如下:

假设这次有三个数据点,我们假设它们是从一个被高斯分布充分描述的过程生成的。这些点是 9、9.5 和 11。那么如何用最大似然估计逼近这个高斯分布的参数 μ 和 σ 呢?

我们要计算的是同时观察到所有这些数据的概率,也就是所有观测数据点的联合概率分布。因此,我们需要计算一些可能很难算出来的条件概率。我们将在这里做出第一个假设,假设每个数据点都是独立于其他数据点生成的。这个假设能让计算更容易些。如果事件(即生成数据的过程)是独立的,那么观察所有数据的总概率就是单独观察到每个数据点的概率的乘积(即边缘概率的乘积)。

从高斯分布中生成的单个数据点 x 的(边缘)概率是:

在表达式 P(x; μ, σ) 中的分号是为了强调在分号后的符号都是概率分布的参数。所以千万不要把这个与条件概率相混淆。条件概率一般会用竖线来表达,比如说 P(A| B)。

在我们的例子中,同时观察到这三个数据点的总(联合)概率是:

我们只要找出能够让上述表达式最大化的μ、σ值就可以了。

如果你在数学课上学过微积分,那么你可能会意识到有一种技巧可以帮助我们找到函数的最大值(和最小值)。我们所要做的就是求出函数的导数,把导函数设为零然后重新变换方程,使其参数成为方程的未知数。

总概率表达式实际上是很难微分,这里就需要用到对数似然函数.这里需要解释一下,为什么可以用取自然对数进行简化?

因为自然对数是一个单调递增的函数。这意味着,如果 x 轴上的值增加,y 轴上的值也会增加(见下图)。这一点很重要,因为它确保了概率的最大对数值出现在与原始概率函数相同的点上。因此,我们可以用更简单的对数概率来代替原来的概率。


原函数的单调性,左边是 y = x,右边是(自然)对数函数 y = ln(x)。


这是一个非单调函数的例子,因为从左至右 f(x) 会上升,然后下降,然后又上升。

这个表达式可以通过求导得到最大值。在这个例子中,我们要找到平均值 μ。为此我们对函数求 μ 的偏导数,得到:

最后,设置等式的左边为零,然后以μ为未知数整理式子,可以得到:

这样我们就得到了 μ 的最大似然估计。我们可以用同样的方法得到 σ 的最大似然估计。

你可能感兴趣的:((二十二)线性回归算法(二)-python数据分析与机器学习实战(学习笔记))