数据科学指南

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


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

编程语言

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

 

数据库管理

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

 

Map Reduce

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

 

数据收集和清理

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

NaN的处理

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

 

类不平衡

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

 

单变量分析

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


双变量分析

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

 

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

-应该一起设计的模型。

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

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

特征工程

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

转换

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

 

降维

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

 

特征选择

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

过滤方法

 

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

包装方法


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

嵌入式方法

 

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

LASSO

 

RIDGE:

 

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

机器学习模型

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

线性和逻辑回归

 

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

 

决策树和随机森林

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

 

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

 

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

 

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

K-Means

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

 

 

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

神经网络

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

 

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

集成模型

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

 

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

模型评估

分类得分

 

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

学习曲线

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

 

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

 

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

受试者工作特征(ROC)

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

 

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

本文由阿里云云栖社区组织翻译。

文章原标题《Data Science Interview Guide》

作者:Syed Sadat Nazrul

原文链接

干货好文,请关注扫描以下二维码:



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/521903.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

乐高ev3搭建图_乐高EV3机械爪合集

点击上方蓝字关注我!乐高EV3机械爪合集哈喽小伙伴们!新的一周我们又见面啦。这周给大家带来的是EV3的机械爪合集,5种不同结构类型的机械爪来自五十川老师的作品,可以应用于各种比赛或者任务场景中,下面我们先来看一下这…

马云卸任,张勇宣布未来五年目标:消费规模10万亿;华为发布基于5G和AI解决方案;新iPhone不支持5G 库克:市场不成熟……...

戳蓝字“CSDN云计算”关注我们哦!嗨,大家好,重磅君带来的【云重磅】特别栏目,如期而至,每周五第一时间为大家带来重磅新闻。把握技术风向标,了解行业应用与实践,就交给我重磅君吧!重…

望京“黑客”图鉴

摘要: 不是所有黑客可以登顶望京阿里中心 A 座 34 楼。本文转载自雷锋网宅客频道。最近《北京女子图鉴》很火。不过看这篇文章之前,你要做好几个心理准备:1.这篇文章不是讲黑客男主如何在北京遇上12个女主“打怪升级”的故事。2.因为我们的采…

解决:'webpack-dev-server' 不是内部或外部命令,也不是可运行的程序 或批处理文件。

webpack-dev-server错误法则: 前往项目根目录删除node_modules文件夹,然后在项目根目录路径下的终端运行"npm install"等待安装完之后,再次运行“npm run dev”,有些人的是马上就可以了,然而往往还会有人&am…

GPU云服务器深度学习性能模型初探

摘要: 本文根据实测数据,初步探讨了在弹性GPU云服务器上深度学习的性能模型,可帮助科学选择GPU实例的规格。1 背景得益于GPU强大的计算能力,深度学习近年来在图像处理、语音识别、自然语言处理等领域取得了重大突破,GP…

HDC.2019后再发力,AppGallery Connect服务新升级

不久前,华为2019开发者大会在东莞松山湖圆满落,来自全球的1500多个合作伙伴、5000多名开发者汇聚一堂,共同探讨未来科技发展,其中华为应用市场AppGallery Connect服务也在大会上重磅亮相,引起了广大开发者的关注。如今…

idea 利用vue.js插件创建vue初始化项目

IDEA 构建出的 Vue 项目是不含 node_modules 的,所以要先调出终端,执行 npm install 运行完成后,输入 npm run dev 即可。 vue初始化项目完成!!! 另外 IDE 嘛,总是在 UI 上下了很多功夫&am…

Tensorflow快餐教程(4) - 矩阵

摘要: Tensorflow矩阵基础运算矩阵矩阵的初始化矩阵因为元素更多,所以初始化函数更多了。光靠tf.linspace,tf.range之类的线性生成函数已经不够用了。可以通过先生成一个线性序列,然后再reshape成一个矩阵的方式来初始化。例&…

为什么阿里程序猿纷纷在内网晒代码?

摘要: 大家知道,阿里有两万多名可爱的程序员。 他们也没什么别的爱好,就是多才多艺了一点:这帮阿里程序猿在改变世界前 要先撼动歌坛 就是热心肠了一点:阿里有个程序员,因为闯红灯上新闻了 虽然怕老婆但也能…

从七个方面,面试大厂高级工程师

戳蓝字“CSDN云计算”关注我们哦!在上周,我密集面试了若干位Java后端的候选人,工作经验在3到5年间。我的标准其实不复杂:第一能干活;第二Java基础要好;第三最好熟悉些分布式框架。我相信其它公司招开发时&a…

Java需要掌握的底层知识_Java程序员应该掌握的底层知识

缓存缓存行:缓存行越大,局部性空间效率越高,但读取时间慢缓存行越小,局部性空间效率越低,但读取时间快取一个折中值,目前多用:64字节public class CacheLinePadding { //执行时间在4s左右public…

(vue基础试炼_01)使用vue.js 快速入门hello world

文章目录一、需求案例二、案例实现2.1. 原始js写法2.2. 怎样使用vue.js &#xff1f;2.3. 使用vue.js 写法三、案例vue简述&#xff1f;四、案例趣味延伸五、表达值作用及嘱咐语一、需求案例 在页面显示hello world 二、案例实现 2.1. 原始js写法 <!DOCTYPE html> &l…

如何让机器理解汉字一笔一画的奥秘?

摘要&#xff1a;从智能客服到机器翻译&#xff0c;从文本摘要生成到用户评论分析&#xff0c;从文本安全风控到商品描述建模&#xff0c;无不用到自然语言技术&#xff0c;作为人工智能领域的一个重要分支&#xff0c;如何让机器更懂得人类的语言&#xff0c;尤其是汉字这种强…

Logtail从入门到精通(三):机器分组配置

摘要&#xff1a; 基于集团内数年来的Agent运维经验总结&#xff0c;我们设计了一种灵活性更高、使用更加便捷、耦合度更低的配置&机器管理方式&#xff1a;自定义标识机器分组。此种方式对于动态环境非常适用&#xff0c;尤其适用于弹性伸缩服务和swarm、pouch(阿里docker…

(vue基础试炼_02)使用vue.js实现隔2秒显示不同内容

接上一篇&#xff1a;&#xff08;vue基础试炼_01&#xff09;使用vue.js 快速入门hello worldhttps://gblfy.blog.csdn.net/article/details/103841156 文章目录一、原始js写法① 效果图② 2秒之后二、使用vue实现① 思考② vue写法③ 效果图三、vue总结一、原始js写法 <!…

适合小团队作战,奖金+招聘绿色通道,这一届算法大赛关注下?

大赛背景伴随着5G、物联网与大数据形成的后互联网格局的逐步形成&#xff0c;日益多样化的用户触点、庞杂的行为数据和沉重的业务体量也给我们的数据资产管理带来了不容忽视的挑战。为了建立更加精准的数据挖掘形式和更加智能的机器学习算法&#xff0c;对不断生成的用户行为事…

银行业AI:炒作背后的现实——“尽管对新技术感到兴奋,但银行业态度非常谨慎”

摘要&#xff1a; 在人工智能火热的今天&#xff0c;银行业是如何看待人工智能对其的影响呢&#xff1f;答案可能出人意料。随着人工智能的发展&#xff0c;越来越多的行业都或多或少会受到该技术的影响。在博主之前的文章中&#xff0c;分析了人工智能、大数据以及VR对教育行业…

tcp分包传图片 如何还原_技术控丨超详细解析TCP重传机制

作者&#xff1a;Zhang_Jiawen &#xff1b; 来自&#xff1a;Dell技术社区TCP 的主要任务是很简单&#xff1a;打包和发送数据。TCP 与其他协议的不同之处在于使用滑动窗口来管理基本数据收发过程&#xff0c;同时确保数据流的有效及可靠传输&#xff0c;从而不致发送速率明显…

超详细!上线一个机器学习项目你需要哪些准备?

摘要&#xff1a; Canvas是用于设计和记录机器学习系统的模板。它比简单的文本文档具有优势&#xff0c;因为Canvas用简单的部件通过部件之间的相关性来寻找机器学习系统的关键组件。这个工具已经很流行&#xff0c;因为它对复杂项目进行了可视化操作。 在本文中&#xff0c;我…

漫画:什么是插入排序?

戳蓝字“CSDN云计算”关注我们哦&#xff01;————— 第二天 —————————————————人们如何进行扑克牌的排序呢&#xff1f;举个例子&#xff0c;比如我手中有红桃6,7,9,10这四张牌&#xff0c;已经处于升序排列&#xff1a;这时候&#xff0c;我又抓到了一…