数据科学实战(二):算法
1.前言
算法是完成分析任务所采纳或者遵循的一整套步骤和规则,它是计算机科学中一个基本概念,可视作计算机科学的基石。设计优雅高效的代码、准备和处理数据以至软件工程开发
均以算法为基础。
排序、查找、基于图的计算等问题都是算法能够解决的。然而,对于同一个问题,基于效率和计算时间的考虑,可以选出某个相对最优的算法。当算法要解决的数据分析问题涉及
海量数据,或者开发面向客户的产品时,基于效率选择最优的算法会变得尤为重要。高效的算法是准备和处理数据的基础,算法的执行可以是顺序的,也可以是并发的。就数
据科学来说,以下三类算法是必须了解的。
(1) 数据清理和预处理的算法。如排序、MapReduce、Pregel。
我们将这类算法称为数据工程
(2) 用于参数估计的最优化算法。比如 Stochastic Gradient Descent(随机梯度下降)、Newton’s Method(牛顿法)和 Least Squares
(最小二乘法)
(3) 机器学习算法。
1.2 机器学习算法
机器学习算法的应用主要有三个大舞台:预测、分类和聚类。
参数:
计学家认为模型中的参数必须在现实世界中是有意义的;
软件工程师或计算机科学家不会关注模型参数的意义。即便他们想要关注,也可能是只是为了提升模型的预测能力,而不是为了解释这些参数。
置信区间:
统计学中,置信区间和后验分布用来描述参数估计的不确定性。但是,有些机器学习算法,比如 k 均值算法(k-means)和 k 近邻算法(k-nearest neighbors),就不涉及置信
区间和参数估计的不确定性问题。
显式假设:
统计模型会对数据的生成过程和数据的分布做出一些明确的假设(称作显式假设),统计推断往往是建立在假设上的
一个数据科学家要能够在
统计学和计算机科学的思维方式之间找到一个平衡点,要取长补短。数据科学家的身上同
时流淌着统计学家和计算机科学家的血液,大可不必厚此薄彼。
2 三大基本算法