数据科学与机器学习
什么是数据科学呢?数据科学是从数据中获取有用的洞察的实践。我们现在已经能够获取海量数据了,但是却缺乏真正有价值的信息。数据科学提供了强大的处理过程和技术帮助我们从数据海洋中获取可行动的信息。数据科学涉及多个学科领域,包括统计学,数学,运筹学,信号处理,语言学,数据库与存储,编程,机器学习和科学计算等等。虽说“数据科学”这个词汇对商务来说是新的,它其实在上世纪六十年代就被Peter Naur提出,特指计算机科学中的数据处理。在九十年代的时候知名统计学家 C.F. Jeff Wu和 William S. Cleveland也使用了数据科学这个词作为他们眼中的统计学的扩展领域。
数据科学的专门人才被称为数据科学家。他们的技能跨越统计,数学,运筹学,信号处理,语言学,数据库与存储,编程,机器学习,和科学计算。另外,数据科学家需要具有良好的沟通能力和数据可视化的技能。为了提供有意义的结果,对于某一领域的知识也是非常重要的。单个人很难具备这样广度的技能,所以数据科学通常是团队的运动,而不是个人的努力。为了达到效能,通常需要召集一个团队,团队中具有互补的数据科学技能。
根据Gartner,分析可以分为以下四类:
描述性分析
解释发生了什么,这类分析包括回答例如“发生什么了?”, “谁是我客户?”,“我们有几种类型的用户?”这样的问题。通常我们会用图表,柱状图,盒须图, 以及数据聚类等技术。
诊断性分析
该类分析帮助我们理解为什么会发生以及其中的主要驱动因素。比如“为什么我们每个月失去越来越多的客户”。我们会用聚类,分类,决策树或者内容分析等技术,包括商业智能。
预测性分析
该类分析帮我们预测将来会发生什么,是对未来的不确定部分预测可能性。比如说它可以预测一笔信用卡交易是不是欺诈,客户是不是可能会升级手机使用计划等。统计和机器学习在预测分析中提供了重要的技术手段,包括神经网络,决策树,蒙特卡洛模拟,回归等等。
规定性分析
这类分析通常会结合业务规则和预测。比如发现欺诈的可能性高就拒绝交易,比如建议客户最好的手机计划。这类分析针对一些使用情景,比如渠道优化,组合优化,最优交通优化等特别有用。通常使用决策树,线性或非线性规划,蒙特卡洛模拟,博弈策略等统计和数据挖掘的技术。
数据科学处理的过程包含五个步骤:
- 定义业务问题。在创建模型之前,我们需要了解要解决的具体的业务问题。
- 获取和准备数据。这个步骤包含2类活动。第一是从不同的源系统中获取原始数据,比如数据库,CRM系统等。这里可能包括ETL过程。数据需要解析成合适的格式。第二是要对数据的建模做准备,比如要处理缺失,异常的部分和数据变换。比如对缺失的值,我们是补充平均值还是中位数。对于异常,我们可以通过盒须图等技术来进行检测。判断为异常通常是发现样本值大于或小于1.5倍的四分位距范围(interquartile range, IQR)。我们需要决定是否放弃这样的异常,如果要保留,还要找到对变量有用的变换,比如取对数就是经常使用的变换。相关性分析,主成分分析,或者因子分析等技术通常用来表示变量间的关系,特征选取是指建模时选取对的变量。这整个获取准备数据的步骤会花费大量的时间,我们不希望“垃圾进,垃圾出“的结果,所以这个步骤对于能否提高项目的成功率非常非常重要。
- 开发模型。这是整个项目中最有意思的部分。在这个步骤中,我们根据业务问题和数据决定最最合适的算法。比如对于二分类问题,我们可以使用逻辑回归,决策树,提高决策树,神经网络等等。如果最终的模型如果需要可解释性,那么提高决策树就不用考虑了。创建模型的过程是一个列举的过程,我们会试验不同的模型来找到最可预测的。
- 部署模型。模型建立以后,我们需要部署到生产环境,对于Azure Machine Learning来说,这部分就显得特别简单易用。模型将以Web Service的形式提供给各种应用,各种平台,包括移动设备。
- 检测模型的性能。部署完以后并不代表数据科学部分的介入就此结束。模型的准确性随着时间的变迁,数据的变化是会发生变化的。如果发现性能下降,可能需要重新训练甚至重新创建模型。
常用的数据科学的技术包含了下列几类算法:
- 分类算法。这类算法通常会用来对人或物分组,也常被用来做预测。比如,信用卡交易可以分成正常交易或者欺诈交易。信用卡发放方通常有大量的历史信用卡交易记录,并且能了解这些交易的状态是否正常。使用这些数据我们可以创建一个模型来预测一笔新的信用卡交易是不是盗刷,这是典型的分成2类的分类问题。统计和数据挖掘为我们提供了很多分类的工具,比如逻辑回归,神经网络,决策树,或者组合算法,例如提高决策树,随机森林。对于多分类,我们可以基于二分类的思路做多次分类来预测多个类型。分类问题通常使用有监督的学习算法,使用标签数据。
- 聚类算法。聚类使用无监督的学习来对数据进行分组。聚类和分类的区别在于聚类的结果是预先未知的。也就是说在聚类的训练之前,我们并不知道每个数据点属于哪里,而分类是知道历史数据所在的类型的。比如说我们为了市场目的对客户进行聚类,在一个好的数据模型里,每个划分里的数据是非常类似的,而不同的划分之间是比较有差别的。这类算法使用最广泛的是K-Means算法。另外还有Self-organizing maps以及adaptive resonance theory (ART)等算法。
- 回归算法。回归算法是为了预测应变量的数值结果。自变量可以是数值或分类,但是应变量通常是数值。经常使用的回归技术有线性回归,决策树,神经元网络,提高决策树回归等。线性回归是一种最古老的统计学中预测的技术。最简单的线性回归模型就是一个线性函数,如果有一个自变量,那么就是对数据点最合适的一条线,如果有多个自变量,那么就是对数据点最合适的一个超平面。人工神经网络是一组算法来模拟大脑的功能,最常用的是反向传播网络,又叫多层感知器。神经网络既可以用于回归又可以用于分类。决策树是根据统计条件列举分类的层级,目的是使不同节点之间的方差最大,而每个节点里的方差最小。
- 模拟。模拟是各行业广泛使用的。比如数学模拟飞行器机翼或者汽车来减少研发开支。统计学提供了很多强大的技术来模拟和优化,比如马尔可夫链分析,线性规划,蒙特卡洛模拟等。
- 内容分析。包括对文本,图像,视频等的内容挖掘。文本挖掘使用统计和语言学分析来了解文本的意思,比如在微博获取简单的关键词进行情感分析。通过模式识别,我们可以对人脸进行识别。神经网络算法可以用于视频中目标追踪和帮助分析X光片。
- 推荐引擎。对于电商来说,推荐引擎被广泛使用。目前主要有三种方式。第一种Collaborative filtering (CF)根据用户或者项目的近似程度进行推荐。第二种是根据文本挖掘或者语言处理来分析内容进行分组。第三种又叫购物篮分析方式,朴素贝叶斯或者微软关联规则算法是常用的算法。
现在在数据科学领域最前沿的是集成学习(Ensemble Learning)。集成学习是指使用一组算法来提高决策的精确度。它模拟人类寻求专家顾问的意见,进行专家会诊来提高准确率,减少方差。创建一个集成模型一般有三个步骤。第一步是选取数据。选取数据的时候要尽量最大化差异,这样可以提高准确率。第二部是对各个分类器进行训练。如何分配分类器呢?通常最流行的是Bagging和Boosting。Bagging算法使用不同的子集进行模型训练。随机森林就是用这种方式。而Boosting算法则是在训练中使得分类错误的例子变得更重要,这样模型在训练时更专注于分错的数据,提高决策树算法就是这种策略。最后一步就是吧这些结果整合起来来进行最终的预测,方式有简单的,或者带权重的投票方式等。对于分类问题来说,集成模型是机器学习中潜在的重要的突破。