常见机器学习算法背后的数学
不同的机器学习算法是如何从数据中学习并预测未见数据的呢?
机器学习算法是这样设计的,它们从经验中学习,当它们获取越来越多的数据时,性能就会提高。每种算法都有自己学习和预测数据的方法。在本文中,我们将介绍一些机器学习算法的功能,以及在这些算法中实现的有助于学习过程的一些数学方程。
机器学习算法的类型
机器学习算法大致可以分为以下四类:
监督学习:预测的目标或输出变量是已知的。这些算法生成一个函数,该函数将输入映射到输出变量。回归和分类算法属于这一类。在回归中,输出变量是连续的,而在分类中,输出变量包含两个或更多的离散值。一些监督学习算法包括线性回归,逻辑回归,随机森林,支持向量机,决策树,朴素贝叶斯,神经网络。
无监督学习:目标或输出变量是未知的。这些算法通常对数据进行分析并生成数据簇。关联、聚类和维数约简算法属于这一类。K-means聚类、PCA(主成分分析)、Apriori算法等是非监督学习算法。
半监督学习:它是监督和非监督学习方法的结合。它使用已知数据来训练自己,然后标记未知数据。
强化学习:机器或代理被训练从“试错”过程中学习。机器从过去的决策经验中学习,并利用它的学习来预测未来决策的结果。强化学习算法的例子有Q-Learning, Temporal Difference等。
线性回归
线性回归是通过拟合数据点上的最佳直线来预测连续变量的结果。最佳拟合线定义了因变量和自变量之间的关系。该算法试图找到最适合预测目标变量值的直线。通过使数据点与回归线之间的差的平方和最小达到最佳拟合线。
公式:Y = c + m₁X₁ + m₂X₂ + ….. +mₙXₙ
逻辑回归
逻辑回归是一种基于自变量估计分类变量结果的分类算法。它通过将数据拟合到logistic函数来预测某一事件发生的概率。通过最大化似然函数,对logistic函数中自变量的系数进行优化。优化决策边界,使成本函数最小。利用梯度下降法可以使代价函数最小化。
逻辑回归的s型曲线
Logistic回归的代价函数
逻辑回归方程
朴素贝叶斯
朴素贝叶斯是一种基于贝叶斯定理的分类算法。该算法假设自变量之间不存在相关性。在一个类中出现的某个特性与在同一类中出现的另一个特性没有关系。我们针对类为所有预测器创建一个频率表(目标变量的不同值),并计算所有预测器的可能性。利用朴素贝叶斯方程,计算所有类别的后验概率。朴素贝叶斯分类器的结果将是所有类概率中概率最高的类。
c→类,X→预测
决策树
决策树主要用于分类问题,但它们也可以用于回归。在该算法中,我们根据最有效地划分数据集的属性,将数据集划分为两个或多个同构集。选择将分割数据集的属性的方法之一是计算熵和信息增益。熵反映了变量中杂质的数量。信息增益是父节点的熵减去子节点的熵之和。选择提供最大信息增益的属性进行分割。我们也可以使用基尼指数作为杂质标准来分割数据集。为了防止过度分裂,我们优化了max_features、min_samples_split、max_depth等决策树的超参数。
熵:c→类的数量
基尼指数
随机森林
随机森林由多个决策树组成,决策树作为一个集合来运行。一个整体由一组用来预测结果的模型组成,而不是一个单独的模型。在随机森林中,每棵决策树预测一个类结果,投票最多的类结果成为随机森林的预测。为了做出准确的预测,决策树之间的相关性应该最小。有两种方法可以确保这一点,即使用Bagging和特性选择。Bagging是一种从数据集中选择随机观察样本的技术。特征选择允许决策树仅在特征的随机子集上建模。这就防止单个树使用相同的特性进行预测。
k -近邻
该算法也可用于回归和分类。该算法通过计算数据点与所有数据点的距离来找到k个数据点的最近邻。数据点被分配给k个邻居中点数最多的类(投票过程)。在回归的情况下,它计算k个最近邻居的平均值。不同的距离度量可以使用欧几里得距离,曼哈顿距离,闵可夫斯基距离等。为了消除平局的概率,k的值必须是一个奇数。由于每个数据点与其他数据点的距离都需要计算,因此该算法的计算开销较大。
k - means
K-Means是一种无监督学习算法,用于形成数据簇。形成的集群应该使集群内的数据点尽可能相似,集群之间的差异尽可能明显。它随机选择K个位置,每个位置作为一个簇的质心。数据点被分配到最近的簇。在分配数据点之后,计算每个聚类的质心,再次将数据点分配到最近的聚类中。此过程将重复进行,直到在每次连续迭代中数据点保持在同一簇中,或簇的中心不改变为止。我们还可以指示算法在进行一定次数的迭代后停止计算。
Apriori算法
Apriori算法是一种基于关联规则的数据库频繁项集识别算法。频繁项集是支持度大于阈值(支持度)的项集。关联规则可以被认为是一种IF-THEN关系。它通常用于市场篮子(market basket)分析中,发现不同商品之间的关联。支持、信心和提升是帮助确定关联的三个措施。
支持指示某些项目集一起出现的频率。
置信度计算项目集在其中一个项目出现时发生的概率。
Lift表示关联规则的强度。支持是用户定义的阈值。
XGBoost
XGBoost是一种基于决策树的梯度增强算法(集成的另一种类型)。XGBoost涉及一组较弱的学习者,它们结合在一起可以做出值得注意的准确预测。Boosting是一个序列集成,每个模型都是在修正之前模型错误分类的基础上构建的。换句话说,它接收到前一个模型的错误,并试图通过学习这些错误来改进模型。
支持向量机(SVM)
SVM也是一种监督学习算法,可用于分类和回归问题。支持向量机试图在N维空间(N指特征的数量)中找到一个最优超平面来帮助分类不同的类。它利用Hinge损失函数,通过最大化类观测值之间的裕度距离来寻找最优超平面。超平面的维数取决于输入特征的数量。如果特征个数为N,则超平面的维数为N-1。
Hinge损失函数:t→目标变量,w→模型参数,x→输入变量
微信号 : deephub-imba
每日大数据和人工智能的重磅干货
大厂职位内推信息
长按识别二维码关注 ->
喜欢就请三连暴击!
作者:Prathamesh Thakar
deephub翻译组
https://towardsdatascience.com/the-math-behind-machine-learning-algorithms-9c5e4c87fff
本文分享自微信公众号 - DeepHub IMBA(deephub-imba)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
目标检测算法YOLO-V3结构详解
❝ 上期我们一起学了YOLO-V2的算法结构以及跟YOLO-V1比起来有哪些优缺点,如下:目标检测算法YOLO-V2详解今天我们看下在YOLO-V2版本上改进的YOLO-V3算法,到底做了哪些优化? ❞ 今天我们主要从以下几个方面来学习YOLO-V3对YOLO-V2做了哪些改进。 Darknet-53结构 YOLO-V3结构 先验框设置 损失函数 模型性能 YOLO-V3模型框架 YOLO-V3模型框架,我们主要从它的基础网络Darknet-53以及YOLO-V3的结构方面学习,首先看下Darknet-53结构。 Darknet-53结构 Darknet-53是专门为YOLO-V3设计的一个深度学习框架,有着非常好的图像识别的效果,如下图: Darknet-53模型结构 整个网络主要包括5组残差块,如下: 以 256x256输入为例,首先经过一个 3x3x32的卷积层输出为 256x256x32; 接着经过一个 3x3x64 stride=2的卷积层输出为 128x128x64; 接着经过一个 残差块(前面学习残差网络的时候学过),输出为 128x128x64; 再经过一个 3x3x1...
- 下一篇
优质单元测试的十大标准,你有遵循吗?
优秀的测试套件可以让人在更改代码时感到安全,从而使工作更为轻松;糟糕的测试套件会让人痛苦不堪,且浪费大量时间。编写好的、可维护的单元测试存在着一些特定规则,可使单元测试质量更高、更具效率。 1、尽可能简短 因为我们测试的是由单个代码单元交付的单个功能,所以测试应该相当短是有意义的。至于具体需要多短就取决于多种因素,但通常不会超过几行代码。 2、切忌自我重复 良好的编码实践应用于测试代码的方式与应用于生产代码的方式相同。从实践经验上来说,单元测试中最容易违反的规则之一是“Dont Repeat Yourself”。有些人甚至声称单元测试根本不应该共享任何代码。那是全然的废话。当然,我们希望尽可能保持测试的可读性,但是复制粘贴不是解决方案。 3、选择组合而非继承 一旦了解了前面的两点,你可能会想要为自己的测试创建一些包含常用代码的基类。如果确实如此,请立马停止!这样的基类就像磁铁一样吸引着各种不相关的共享代码,并且增长非常迅速,直到接管你的项目、迭代、产品……为保证这些不被它逐步侵蚀,务必使用组合方式! 4、使其速度更快 单元测试几乎可以一直运行。出于这个原因,一定要模拟外部依赖项和其他可...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Mario游戏-低调大师作品
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS关闭SELinux安全模块
- CentOS8安装Docker,最新的服务器搭配容器使用