机器学习中的数学原理——对数似然函数

简介: 机器学习中的数学原理——对数似然函数

一、什么是对数似然函数

对数似然是Minitab 为了确定估计系数(β) 的最优值而最大化的表达式。 由于对数似然是样本数量的函数,因此它们的值不能单独作为拟合值的指数使用,但可以用来比较不同系数的拟合值。 由于您要最大化对数似然,因此值越大越好。

二、算法分析

之前我们已经接触过似然函数的概念,我们认为似然函数 L(θ) 中,使其值最大的参数θ能够最近似地说明训练数据。和随机梯度下降法一样,我们接下来要做的就是对似然函数进行微分,求出参数 θ。不过直接对似然函数进行微分有点困难,在此之前要把函数变形。联合概率中的概率都是 1 以下的数,所以像联合概率这种概率乘法的值会越来越小。如果值太小,编程时会出现精度问题。并且与加法相比,乘法的计算量要大得多。

想要解决这些问题,只要取似然函数的对数就好了。像这样在等式两边加上 log 即可:

log 是单调递增函数。log 函数的图形如下所示:

 

图形一直向右上方延伸。单调递增函数是在 x1 < x2 时,f(x1) < f(x2) 的函数 f(x)。log(x)的图形一直向右上方延伸,而且在 x1 < x2时,log(x1) < log(x2)也成立。

我们现在考察的似然函数也是在 L(θ1) < L(θ2) 时,有logL(θ1) < logL(θ2) 成立。也就是说,使 L(θ) 最大化等价于使logL(θ) 最大化。我们把对数似然函数变形看看:

每一行的变形分别利用了下面这些特性,好好理解一下:

  • 第 2 行是 log(ab) = log a + log b
  • 第 3 行是 log ab = b log a
  • 第 4 行是 P(y(i) = 0|x(i) ) = 1 − P(y(i) = 1|x(i) )

前两个是对数函数的特性,下面对第 4 行进行解释:现在我们考虑的只有 y = 1 和 y = 0 两种情况,所以应有 P(y(i) = 0|x(i) ) + P(y(i) = 1|x(i) ) = 1

下面要做的就是就是进行偏分求未知量。前面讲了很多,总结一下就是逻辑回归将这个对数似然函数用作 目标函数。

接下来,对各个参数 θj 求微分就行了:

和回归的时候是一样的,我们把似然函数也换成这样的复合函数, 然后依次求微分。

 

这个是 u 对 v 微分,log(v) 的微分是 1/v。对 log(1 − v) 微分时,要像这样通过复合函数来求。还 要注意,这样做最后的表达式前面会有个负号。

所以,微分结果是这样的:

接下来是 v 对 θj 的微分:

这个看上去有点麻烦,不过其实我们已经知道了 sigmoid 函数的 微分是这样的,所以用这个应该就可以计算了。

现在 fθ(x)本身就是 sigmoid 函数,所以这个微分表达式可以直接使用。设 z = θTx,然后再一次使用复合函数的微分会比较好。

 

v 对 z 微分的部分也就是 sigmoid函数的微分。

z 对 θj 的微分就简单了。

接下来把结果相乘就好了:

我们就代入各个结果,然后通过展开、约分,使表达式 变得更简洁。

接下来要做的就是从这个表达式导出参数更新表达式。不过现在是以最大化为目标,所以必须按照与最小化时相反的方向移动参数哦。也就是说,最小化时要按照与微分结果的符号相反的 方向移动,而最大化时要与微分结果的符号同向移动。

为了与回归时的符号保持一致,也可以将表达式调整为下面这样。注意,η 之前的符号和∑中的符号反转了。这就是我们最终求得的结果表达式:

 

三、总结

通过上面的推导,我们学习了最大似然函数,这与我们之前接触的最小二乘法不同,最小二乘法以误差作为评判标准,误差越小越好,而最大似然函数以概率作为评判标准,概率越大越好。在计算概率时,我们求了一次对数log计算,避免了连乘概率越来越小,受计算机计算进度影响也越来越大的问题。求得表达式之后的求微分也和我们之前讲的相似,只要采用连续偏导就可以了。计算过程挺复杂,不过最后的结果还挺简单的:


相关文章
|
6天前
|
机器学习/深度学习 数据可视化 计算机视觉
【视频】机器学习交叉验证CV原理及R语言主成分PCA回归分析犯罪率|数据共享
【视频】机器学习交叉验证CV原理及R语言主成分PCA回归分析犯罪率|数据共享
|
6天前
|
机器学习/深度学习 人工智能 并行计算
人工智能平台PAI产品使用合集之机器学习PAI中特征重要性的原理不知道如何解决
阿里云人工智能平台PAI是一个功能强大、易于使用的AI开发平台,旨在降低AI开发门槛,加速创新,助力企业和开发者高效构建、部署和管理人工智能应用。其中包含了一系列相互协同的产品与服务,共同构成一个完整的人工智能开发与应用生态系统。以下是对PAI产品使用合集的概述,涵盖数据处理、模型开发、训练加速、模型部署及管理等多个环节。
|
6天前
|
机器学习/深度学习 自然语言处理 算法
|
6天前
|
机器学习/深度学习 算法 数据挖掘
【机器学习】各大模型原理简介
【机器学习】各大模型原理简介
|
6天前
|
机器学习/深度学习 自然语言处理 算法
机器学习算法原理与应用:深入探索与实战
【5月更文挑战第2天】本文深入探讨机器学习算法原理,包括监督学习(如线性回归、SVM、神经网络)、非监督学习(聚类、PCA)和强化学习。通过案例展示了机器学习在图像识别(CNN)、自然语言处理(RNN/LSTM)和推荐系统(协同过滤)的应用。随着技术发展,机器学习正广泛影响各领域,但也带来隐私和算法偏见问题,需关注解决。
|
6天前
|
机器学习/深度学习 PyTorch TensorFlow
【Python机器学习专栏】卷积神经网络(CNN)的原理与应用
【4月更文挑战第30天】本文介绍了卷积神经网络(CNN)的基本原理和结构组成,包括卷积层、激活函数、池化层和全连接层。CNN在图像识别等领域表现出色,其层次结构能逐步提取特征。在Python中,可利用TensorFlow或PyTorch构建CNN模型,示例代码展示了使用TensorFlow Keras API创建简单CNN的过程。CNN作为强大深度学习模型,未来仍有广阔发展空间。
|
6天前
|
机器学习/深度学习 算法 数据挖掘
【Python机器学习专栏】层次聚类算法的原理与应用
【4月更文挑战第30天】层次聚类是数据挖掘中的聚类技术,无需预设簇数量,能生成数据的层次结构。分为凝聚(自下而上)和分裂(自上而下)两类,常用凝聚层次聚类有最短/最长距离、群集平均和Ward方法。优点是自动确定簇数、提供层次结构,适合小到中型数据集;缺点是计算成本高、过程不可逆且对异常值敏感。在Python中可使用`scipy.cluster.hierarchy`进行实现。尽管有局限,层次聚类仍是各领域强大的分析工具。
|
6天前
|
机器学习/深度学习 算法 前端开发
【Python机器学习专栏】集成学习算法的原理与应用
【4月更文挑战第30天】集成学习通过组合多个基学习器提升预测准确性,广泛应用于分类、回归等问题。主要步骤包括生成基学习器、训练和结合预测结果。算法类型有Bagging(如随机森林)、Boosting(如AdaBoost)和Stacking。Python中可使用scikit-learn实现,如示例代码展示的随机森林分类。集成学习能降低模型方差,缓解过拟合,提高预测性能。
|
6天前
|
机器学习/深度学习 数据采集 算法
机器学习的原理与应用
机器学习的原理与应用
|
6天前
|
机器学习/深度学习 大数据 程序员
[机器学习]机器学习数学基础(三)
[机器学习]机器学习数学基础(三)
23 0

热门文章

最新文章