数据科学指南-阿里云开发者社区

开发者社区> 人工智能> 正文

数据科学指南

简介: 本文为学习数据科学的指南,从编程语言、数据库管理、数据收集和整理方法、特征工程、机器学习模型、模型评估方面进行讲述。

4d248fedf544e3fad6ce1c0b6c5069ade8d78abd

数据科学是一个相当庞大且具有多样化的领域,侧重于数学、计算机科学和领域专业知识。但是在本文中大部分内容将涉及到数学基础知识,当然也会介绍一些计算机科学的基本原理。

编程语言

在数据科学领域,最受欢迎的编程语言是Python和R语言。然而我也遇到过使用C/c++、Java和Scala的。而我个人推荐使用Python,因为它可使用所有现存数据库,并且拥有可以查询各种数据库和维护交互式Web UI的专用库。常用的Python库有matplotlib,numpy,pandas和scikit-learn。

c59c57386c86f9d1c87a11ea534168a0217151d2 

数据库管理

大多数的数据科学家都属于数学家或数据库设计师两个阵营中的一个。如果你是第二个,那么本文对你不会有太大帮助,因为你已经足够厉害了。如果你和我一样属于第一个,并且觉得编写一个双重嵌套的SQL查询非常困难。那么对我们来说,了解查询优化(SQL和noSQL系统)非常重要了。

9d85feb1aed53b268cfa47f132c9a84bb034385e 

Map Reduce

考虑到Apache项目一直在不断的添加新工具,想要完全掌握大数据技术非常困难。对于大数据技术,我个人推荐学习Hadoop或Spark,二者都使用类似的Map Reduce算法,除了Hadoop使用磁盘,而Spark使用内存。常见的Spark包装器包括Scala、Python和Java。

7f0f0af16f8bd5b6f76aa30c95b04ddd551f51a8 

数据收集和清理

既然我们已经讲解了所需要的软件,那么现在要开始过渡到数学领域了。在这部分过程中通常需要有一些解析背景,可能是收集传感器数据,分析网站或者进行调查。收集完数据后还需要将其转换为可用的表单(例如JSON行文件中的键值存储),之后这些数据还必须要进行一些数据质量检查。下面将介绍一些常见的质量检查:

NaN的处理

NaN或者叫“Not A Number”是常用于表示丢失的数据。如果特定要素的NaNs数量很少,那么通常可以用(整个数据集或一个窗口的)平均值或(对于稀疏数据集)0来填充NaN。数据集中的NaN通常表示:

6c42271b6d11b2a776b2ea6ff666d46ebcc2e7f4 

类不平衡

尤其是对有监督的学习模型来说,平衡类或目标是非常重要的。然而在欺诈的情况下,严重的阶级不平衡很常见(例如数据集中只有2%是真正的欺诈)。这些信息对于决定特征工程、建模和模型评估非常重要。

f80e39519b733c741c0a4299b4f9dd2d004e90de 

单变量分析

在寻找异常值和异常峰值时,对单个特征的单变量分析(忽略协变量eeects)非常重要。通常选择的单变量分析是直方图。

262d273ccbe75315564f6186de5c5fa924176c77

双变量分析

在双变量分析中,每个特征都会与数据集中的其他特征相比较。其中包括相关矩阵,协方差矩阵或者我个人最喜欢的散点矩阵。

9bdab584706813bcea712d89fe9a9faa77e52d48 

散点矩阵可以让我们发现隐藏的模式,例如:

-应该一起设计的模型。

-为避免多重性需要消除的特性。

多重共线性实际上是多个模型(线性回归等)的问题,因此需要相应的处理。

特征工程

一旦完成了数据的收集、清理和分析工作,就该开始创建模型中使用的特性了。在这一节中,我们将介绍一些常见的特征工程策略。

转换

有时候特性本身并不能提供有用的信息。例如,想象一下使用互联网数据。你会得知YouTube Messenger用户使用几百兆字节,而YouTube用户使用千兆字节。对此最简单的解决方法是获取值得对数。另一个问题是使用分类值。虽然分类值在数学世界很常见,但计算机只能识别数字,为了使其在计算机中具有数学意义,需要先转换为数值。分类值执行独热编码(One Hot Encoding)非常常见,如果在给定的记录中存在独热编码,则为每个分类值创建一个新特性。下面给出独热编码的例子:

e2071cde2dec5c9509fbe6b266d9dda897731925 

降维

有时过多的稀疏维会妨碍模型的性能。对于这种情况需要使用降维算法。一种常用的降维算法是主分量分析(PCA)。

edfa5e067087e933fc52871929843eb348ea193a 

特征选择

你已经设计了特征列表,现在是时候选择特征来帮助你构建用例最佳模型了。这一节解释了常见的类别及其子类别:

过滤方法

604f0d5173509bdb16e8822ff200534771512085 

筛选方法通常用来作为预处理步骤。特征的选择与任何机器学习算法无关,而是根据它们在各种统计测试中的分数和结果变量的相关性来选择的。相关性是一个很主观的术语,这类的常用方法是皮尔逊相关系数、线性判别分析、方差分析和卡方检验。

包装方法

7d2f9f133eafe9caa61e212ef457d7b044e504ce

在包装方法中,我们尝试使用特性的子集来训练模型。基于在之前的模型中得出的推论,我们决定添加或删除子集中的特性。这个问题本质上是一个搜索问题。然而这些方法通常计算成本昂贵。常用方法是正向选择、反向消除和递归特性消除。

嵌入式方法

95316ddb2fa1fb61422c4be162c0b5d22556ede4 

嵌入式方法结合了过滤器方法和包装方法的特性。该方法是由具有内置特性选择方法的算法实现的。常见的嵌入式方法包括LASSORIDGE。下面给出了方程中的正则化表达式:

LASSO

7161ff8b87d3e279133a8bd8014b820fc60bc3d8 

RIDGE:

c9a7a8584bf4cca21636f53e1e93a55fc71b1296 

这就是说,为了访谈了解LASSORIDGE背后的机制非常重要。

机器学习模型

机器学习模型分为两大类:监督和无监督。当标签可用时为监督学习,不可用时为无监督学习。注意,监督标签!不要混淆监督和非监督学习的区别。另外,在运行模型之前,人们常犯的一个错误是没有对特性进行规范。虽然有些模型能自动纠正该错误,但是很多模型(如线性回归)对缩放非常敏感。因此使用前一定要使特性正常。

线性和逻辑回归

e7597d6da9330fe8c9a912fc4e39a7568ccb8ea7 

线性和逻辑回归是最基本也是最常用的机器学习算法。在做任何分析之前,确保首先将线性/逻辑回归作为了基准!一个普通的访谈者通常使用更复杂的模型(如神经网络)来开始他们的分析。毫无疑问,神经网络是非常精确的。然而,基准是也很重要。如果简单的回归模型已经有98%的精度并且非常接近过度拟合,那么就不需要得到一个更复杂的模型了。也就是说,线性回归用于连续目标,而逻辑回归则用于二进制目(主要是因为sigmoid曲线将特征输入输出为0或1)。

48c581f345a1419ac02cf665473f424137c22f95 

决策树和随机森林

决策树是一个比线性回归模型稍微复杂的模型。决策树算法根据信息增益在不同的特征上进行分割,直到它遇到一个纯粹的叶子(即一组只有1个标签的记录)。决策树可以在一定数量的分裂后停止以阻止获得纯叶子(解决过度拟合问题的常用策略)。

535b5f2a009ccae1e634b7d0748888da3b41b05d 

计算出来的信息增益非常重要,是常见的面试问题,所以要确保你知道如何计算。常用的信息增益计算函数是基尼系数和熵。

1a4f991ff3e143653919ebb7fc2683748e98af9d 

从上图可知,与基尼系数相比,熵为信息增益提供了更高的价值但也造成了更多的分裂

f6377b17fad3cfa72db0512b0acab7dac57f727b 

当决策树不够复杂时,通常会使用随机森林:只不过是在数据的子集上增加了多个决策树,并完成了最后的多数投票。但是如果无法正确确定树的数量,随机森林算法就会过度拟合。

K-Means

K-Means是一种将数据点分类成簇的无监督学习模型。该模型根据提供的簇数量迭代的找到最优的集群中心,并将矩心移动到中心。

2c065c7466de47ef4b16ebe5558286f944f991ca 

f9cbe8134071cd0adfed0bf080b04cc7b4098692 

簇的数目可能会很容易找到,尤其是如果曲线上没有kink。另外,要认识到K-Means算法是在本地优化的而不是全局优化。所以簇的数量取决于初始化值,而最常用的初始化值是在K-Means++中计算出来的,它可以使初始值尽可能不同。

神经网络

神经网络是目前每个人都在关注的热门算法之一。

ebadd7a6315e3563d1f56b08101471062b0539e0 

本文重要的是让你了解基本的机制以及反向传播和消失梯度的概念。同时还要认识到神经网络本质上是一个黑盒子。如果案例研究要求创建解释模型,那么只能选择不同的模型或准备解释如何找到权重对最终结果的贡献(例如,图像识别过程中隐藏层的可视化)。

集成模型

最后,单个模型可能不能准确地确定目标,某些特性需要特殊的模型。在这种情况下,需要使用多个模型的集成。请看下面的举例:

3005532dc3b27890fc3607112d2abfdf5d9a3dcb 

由上图可得,模型是分层或在堆栈中,每一层的输出是下一层的输入。

模型评估

分类得分

713fcf929424572ad7c4cb636de00639a3765003 

评估模型性能最常见的方法之一是:计算正确预测的记录的百分比。

学习曲线

学习曲线也是评价模型的常用方法,通过该方法可以评估我们的模型是否太复杂或太简单。

4e3cb7334f0a43783198d01d1b170840aba03443 

如果模型不够复杂,最终会得到高偏差和低方差。而当模型过于复杂,则会得到低偏差和高方差。但是在现在模型非常稳定的前提下,随着训练数据的随机化,结果也会有很大变化,所以不要混淆方差和偏差的区别!为了确定模型的复杂性,我们使用以下学习曲线来查看:

84e9433314a9ba0556b6a50a27d8d09d5f1a0460 

在学习曲线上,我们改变了X轴上的训练测试分割点,并计算了训练和验证数据集上模型的准确性。如果两者之间的差距太大,说明模型太过复杂即过度拟合了。如果两条曲线都没有达到预期的精度,而且曲线之间的距离很小,那么就说明数据集有很大的偏差。

受试者工作特征ROC

在处理带有严重类别失衡的欺诈数据集时,分类分数就没有多大意义了。相反,接收器的工作特性或ROC曲线是个更好的选择。

647536950d63650295bc0f88baef6ade495920c4 

45度线是随机线,曲线下的面积或AUC为0.5。曲线离45度线越远,AUC越高,模型就越好。模型所能得到的最高值是AUC值等于1,即曲线与轴形成直角三角形。ROC曲线还可以帮助调试模型。例如,如果曲线的左下角更接近于随机线,则意味着模型在Y=0处分类错误。而如果它在右上角是随机的,则意味着错误发生在Y=1处。同样,如果曲线上有波峰,则说明模型不稳定。因此,在处理欺诈模型时,ROC是你最好的朋友。

数十款阿里云产品限时折扣中,赶紧点击领劵开始云上实践吧!

本文由北邮@爱可可-爱生活 老师推荐,阿里云云栖社区组织翻译。

文章原标题《Data Science Interview Guide》

作者:Syed Sadat Nazrul

译者:奥特曼,审校:袁虎。

文章为简译,更为详细的内容,请查看原文

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
人工智能
使用钉钉扫一扫加入圈子
+ 订阅

了解行业+人工智能最先进的技术和实践,参与行业+人工智能实践项目

其他文章