细数二十世纪最伟大的10大算法
demi 在 周五, 09/10/2021 - 09:33 提交
作者July总结了一篇关于计算方法的文章《 细数二十世纪最伟大的10大算法 》
算法是一组用于解决特定问题或执行特定任务的有序步骤。在计算机科学中,算法是用于完成计算任务的一系列定义明确的指令。算法可以用于处理数据、执行计算、解决问题或执行其他与计算有关的任务。
机器学习算法是机器学习领域中用于从数据中学习模式并做出预测或决策的数学模型或规则。这些算法可以分为多个主要类别,取决于学习任务的类型和目标。
作者July总结了一篇关于计算方法的文章《 细数二十世纪最伟大的10大算法 》
什么是算法?简而言之,任何定义明确的计算步骤都可称为算法,接受一个或一组值为输入,输出一个或一组值。
一篇有趣的文章《统治世界的十大算法》中,作者George Dvorsky试图解释算法之于当今世界的重要性,以及哪些算法对人类文明最为重要。
在 XGBoost算法原理小结 中,我们讨论了XGBoost的算法原理,这一片我们讨论如何使用XGBoost的Python类库,以及一些重要参数的意义和调参思路。
本文主要参考了XGBoost的Python文档 和XGBoost的参数文档 。
1. XGBoost类库概述
本次所讲的内容为Batch Normalization,简称BN,来源于《Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift》,是一篇很好的paper。
人工智能的发展已经初步成熟,如今被广泛地应用于文明社会的各个方面,它影响着我们的决策、情感和行为。问题是,人工智能不止是潜移默化地影响着我们对事物的看法,也带来了它有害的一面:不公平和不平等。
KNN算法,即K近邻算法是一种监督学习算法,本质上是要在给定的训练样本中找到与某一个测试样本A最近的K个实例,然后统计k个实例中所属类别计数最多的那个类,就是A的类别。 从上面一句话中可以看出,KNN的原理非常简单粗暴,而且是一种“在线”的学习方式,即每一次分类都需要遍历所有的训练样本,此外KNN算法还有几个要素:K,距离,分类决策规则。
Linear Discriminant Analysis (也有叫做Fisher Linear Discriminant)是一种有监督的(supervised)线性降维算法。与PCA保持数据信息不同,LDA是为了使得降维后的数据点尽可能地容易被区分!
假设原始数据表示为X,(m*n矩阵,m是维度,n是sample的数量)
既然是线性的,那么就是希望找到映射向量a, 使得 a‘X后的数据点能够保持以下两种性质:
1、同类的数据点尽可能的接近(within class)
2、不同类的数据点尽可能的分开(between class)
所以呢还是上次PCA用的这张图,如果图中两堆点是两类的话,那么我们就希望他们能够投影到轴1去(PCA结果为轴2),这样在一维空间中也是很容易区分的。
接下来是推导,因为这里写公式很不方便,我就引用Deng Cai老师的一个ppt中的一小段图片了:
机器学习领域中所谓的降维就是指采用某种映射方法,将原高维空间中的数据点映射到低维度的空间中。降维的本质是学习一个映射函数 f : x->y,其中x是原始数据点的表达,目前最多使用向量表达形式。 y是数据点映射后的低维向量表达,通常y的维度小于x的维度(当然提高维度也是可以的)。f可能是显式的或隐式的、线性的或非线性的。
虽然XGBoost是GBDT的一种高效实现,但是里面也加入了很多独有的思路和方法,值得单独讲一讲。因此讨论的时候,我会重点分析和GBDT不同的地方。