‘壹’ 九个成为数据科学家的必备技能
九个成为数据科学家的必备技能
Works详细列举了从雇主角度看来,数据科学家加强自身市场竞争力所必备的9个数据科学技能。
过去一年中人们对数据科学的兴趣骤然增长。Nate Silver这个名字已经家喻户晓,所有公司都在寻找独角兽,很多不同学科的专业人才都开始关注这份薪水丰厚的职业,并将其当作自己可能的职业选择。
在Burtch Works开展招聘工作时,我们与很多想要在数据科学这一成长性领域有所发展的分析学专家探讨过,对具体的实施方案提出了疑问。我从招聘者的角度列出了在数据科学方面对成功十分关键,并且是招聘经理首先考虑的一些技术类与非技术类技能。
各公司在技能与工具的价值评判上都不尽相同,因此这个列表绝对谈不上详尽,不过在这些领域有过经验的人会在数据科学上占有更大的优势。
技术技能:分析学
1、教育——数据科学家受教育程度都很高,其中88%至少拥有硕士学位,46%有博士学位。虽然有一些名人特例,不过通常来说成为一名数据科学家需要扎实的教育背景,才能掌握所需的深度知识。最常见的研究领域包括数学与统计学(32%),其次是计算机科学(19%)以及工程学(16%)。
2、SAS软件与/或R语言——对其中至少一种分析工具有深入的了解,一般对数据科学档饥来说R语言更好一些。
技术能力:计算机科学
3、都是公司在招聘数据科学类角色时最常提出的语言要求。
4、Hadoop平台——尽管不是总有这个需求,不过在很多情况下掌握它的人优势更大。熟悉Hive或Pig也是很有利的卖点。熟悉类似Amazon S3这样的云工具也会很有优势。
5、SQL数据库/编程——尽管NoSQL和Hadoop已经成为了数据科学很大的组成部分之一,招聘者还是希望能够找到可以编写与执行SQL复杂查询的候选人。
6、非结构化数据——数据科学家能够处理非结构化数据这一点非常重要,无论这些数据是来自社交媒体、视频源或者音频的。
非技术类技能
7、求知欲——毫无疑问最近到处都能看到这个词,尤其是在与数据科学家关联时。Frank Lo在几个月前的博文中描述了这个词的含义,并且讨论了其他必须的“软技能”。
8、商业智慧——想要成为数据科学家,需要充分了解自己工作的行业,并且知道公司想要解决的商业问题是哪些。能够根据数据科学分辨出解决哪些问题对公司来说更为重要,并且能够找出利用数据的新办法,这些是非常关键的。
9、通用技能——寻找优秀数据科学家的公司想要的是这样的人材:能够清楚顺畅地将自己的技术发现转化为非技术团队(比如市场部或者销售部)能够使用的内容。数据科学家必须能得出可用以决策的量化insight,同时了解非技术团队的需求,可以恰当地进行沟通以传达数据。想要了解定量专家在沟通技差哪巧方面的更多信息,请参见我们近期的调查。
一般接下来的问题都是:“怎样能够获得这些技能呢?”网上有很多资源,不过笔者不希望让读者产生这样的错觉——成为数据科学家非常简单,上几节MOOCs就够了。除非你有扎实的定量经验,否则成为数据科学家之路还是颇有挑战的——但也并非不可能。
不过只要你确实对数据有兴趣、有激情,并打算将生命投入到相关的学习上,那么就不要让经验背景成为你追求数据科学生涯的阻碍。下面是我们觉得有用的一些资源:
1、高等学位——为了满足目前的需求,如雨后春笋般出现了更多的数据科学专业的项目,不过数学、统计学与计算机科学专业的项目也有很多。
2、MOOCs——Coursera、Udacity还有codeacademy都是不错的入门方式。
3、证书——KDnuggets编写了一个很长的列表清单。
4、Bootcamps——想要了解这种方式与学历项目或MOOCs的对比情况。
5、Kaggle——Kaggle上有数据科学竞赛,可以进行演练,用杂乱的真实世界数据来磨练技巧,解决真实的商业问题。雇主对Kaggle排名很行庆返重视,该排名可以被看作是相关的、经过亲身实践的项目工作。
6、LinkedIn小组——加入相关的小组,与数据科学社区的其他成员互动。
7、数据科学中心与KDnuggets——数据科学中心与KDnuggets都是保持与数据科学行业趋势前沿同步的优秀资源。8、Burtch Works研究:关于数据科学家的薪金,如果想要了解更多信息与当前数据科学家人数统计的话,请下载我们的数据科学家薪金研究报告。
‘贰’ 数据科学的处理流程
数据科学的处理流程
数据科学家知道把不同的理论和工具有机地结合在一起并最终形成特定的流程,进而依据这个流程完成数据分析工作。
数据科学的整个流程包括这些环节:
数据准备
数据探索
数据表示
数据发现
数据学习
创造数据产品
洞见与结论
结果可视化
数据准备
数据准备虽耗时和无趣,但是至关重要,因为它决定了数据的质量。若是数据的质量得不到保证,后续所有的数据工作都会收到影响。
数据准备包括数据读入和数据清洗。
数据探索
数据探索用来查看数据内容,从数字化和可视化入手,帮助我们找出数据集中的潜在信息并且确定数据分析的大致方向。
数据表示
数据表示是指选择合适数据结构存储数据。这样做有两个作用唤让:
完成从原始数据到数据集的转化
为后续数据分析提供最优的内存消耗
数据发现
数据发现是提出假设,完成验证,从数据集中发现特定的规律和模式的步骤。
数据发现使用不同的统计方法来检验数据之间关联的显着性,通过分析同一数据集中的不同变量或者不同数据集中的交叉信息来得到确信可靠的信息。
数据学习
数据学习主要使用统计方法和机器学习算法来分析数据集。
无论一个工具有多么全能和有效,永远是使用这些分析工具的数据科学家自身的能力使它们发挥作用,才能最终得到有用的结果。
更好地了解这些工具,可以帮助科学家们更理智地选择学习方法与工具,从而得到更好的结果。
创造数据产品
数据产品是一个由数据和算法组合而成的产品。
——着名数据科学家Hilary Mason
一个数据产品是一个公司开发出来,可以用于销售给其他客户从而赚取回报的东西,这个东西几乎可以涉及方方面面。
数据产品为什么有价值?
因为数据产品给客户提供了非常有用的信息。
如今的数据产品通过高速数据处理,使用最新的算法以及并行计算等方式来获得之前人类无法获得的信息。
一个数据科学家需要挑选出结果中最有价值的相关数据(数据选择),然后把它包装成为最终的用户可以看明白的形式。
一个数据产品其实就好像是一个人人都能随身带咐森在身边的数据分析专家,如果你需要信息的话,可以付很少量的钱来购买一些信息。
如何创造数据产品?
你需要知道你最终的客户是谁?他们的需求是什么?
选择正确的数据和算法
选择合适的数据分析工具
有用信息(洞见)的呈现。(想象力很重要)
洞见与结论
洞见和结论是让分析结果能尽量地被更多的人理解,并且能适用于更多的情况。
结果可视化
结果可视化就是让更多的观衡链亩看者明白其中信息的意义。
数据探索可视化和结果可视化有很大不同,前者并不知道将会发现什么,因此需要不断尝试;后者对数据处理的目的和数据分析的结论有了深入理解和解读。
结果可视化,让数据讲故事。
‘叁’ 5种数据科学家必知的采样算法
原文链接:The 5 Sampling Algorithms every Data Scientist need to know
假设有1000名学生,其中300名是男生,700名是女生。如果从中抽取出100名,可以对1000名随机采样,也可以从男生中选30名,女生中选70名,这就是分层采样。
假设有一个未亩祥知长度的流数据,只能遍历一遍,如何从中等概率地选出n个元素
基本想法是维护一个n长的列表,在遍历流数据的过程中,以一定的概率将流数据中当前遍历到的元素添加到列表中,或者替换列表中已有的元素。
那么,问题就是,这个“一定的概率”需要是多少,才能保证每个选中的元素都是等概率的。
我们把问题简化一下,假设有一个长度为3的流数据,我们从中选择2个,那么每个元素被选中的概率都是2/3。采用如下的步骤:
第3个元素替换1的概率是1/3,替换2的概袭耐态率也是1/3,这样,每个元素被选中的概率都是2/3。
在处理高度不平衡的数据集的时候,经常会用户重采样方法,重采样有降采样和过采样两种。降采样是从样本多的类别中删除样本,过采样是向样本少的类别中添加样本。
imbalanced-learn(imblearn)是一个处理非平衡数据集的Python包。
Tomek Links 是一组从属于不同类别的相邻样本对。我们可以将这些相邻的样本对都删除,来为分类器提供一个更清晰的分类边界。
SMOTE (Synthetic Minority Oversampling Technique) 对样本少的类别合成样本,这些合成的样本位于已有样本的临近位置上。
在 imblearn 包中还有其他拍源的算法,比如:
‘肆’ Pandas 必知必会的18个实用技巧,值得收藏!
干净整洁的数据是后续进行研究和分析的基础。数据科学家们会花费大量的时间来清理数据集,毫不夸张地说,数据清洗会占据他们80%的工作时间,而真正用来分析数据的时间只占到20%左右。
所以,数据清洗到底是在清陆梁洗些什么?
通常来说,你所获取到的原始数据不能直接用来分析,因为它们会有各种各样的问题,如包含无效信息,列名不规范、格式不一致,存在重复值,缺失值,异常值等.....
本文会给大家介绍一些Python中自带的Pandas和NumPy库进行数据清洗的实用技巧。
这是读取数据的入门级命令,在分析一个数据集的时候,很多信息其实是用不到的,因此,需要去除不必要的行或列。这里以csv文件为例,在导入的时候就可以通过设置pd.read_csv()里面的参数来实现这个目的。
先来感受一下官方文档中给出的详细解释,里面的参数是相当的多,本文只介绍比较常用的几个,感兴趣的话,可以好好研究一下文档,这些参数还是非常好用的,能省去很多导入后整理的工作。
当原始数据的列名不好理解,或者不够简洁时,可以用.rename()方法进行修改。这里我们把英文的列名改成中文,先创建一个字典,把要修改的列名定义好,然后调用rename()方法。
数据默认的索引是从0开始的有序整数,但如果想把某一列设置为新的索引,除了可以用read_csv()里的参数index_col,还可以用.set_index()方法实现。
另外补充,如果数据经过删除或结构调整后,我们可以重置索引,让索引从0开始,依次排序。
字符串str操作是非常实用的,因为列中总是会包含不必要的字符,常用的方法如下:
str.lower() 是把大写转换成小写,同理,str.upper()是把小写转换成大写,将示例中用大写字母表示的索引转换成小写。
设置首字母大写
str.replace("a", "") 替换特定字符。这里把列中的a去掉,替换成空字符。
去除字符串中的头尾空格、以及\n \t。
str.split('x') 使用字符串中的'x'字符作为分隔符,将字符串分隔成列表。这里将列中的值以'.'进行分割。
str.get() 选取列表中某个位置的值。接着上面分割后的结果,我们用str.get(0)取出列表中前一个位置的数值,生成新的一列。
str.contains() 判断是否存在某个字符,返回的是布尔值。
str.find("-")检测字符串中是否包含"-",如果包含,则返回该子字符串开始位置的索引值;如果不包含,则返回-1。
学完基本的字符串操作方法,我们来看一下如何结合NumPy来提高字符串操作的效率。
我们可以将Pandas中的.str()方法与NumPy的np.where函数相结合,np.where函数是Excel的IF()宏的矢量化形式,它的语法如下:
如果condition条件为真,则执行then,否则早备运执行else。这里的condition条件可以是一个类数组的对象,也可以是一个布尔表达式,我们也可以利用np.where函数嵌套多个条件进行矢量化计算和判断。
接下来就要对列中的字符串进行整理,除了利用循环和.str()方法相结合的方式进行操作,我们还可以选择用applymap()方法,它会将传入的函数作用于整个DataFrame所有行列中的每个元素。
先定义函数get_citystate(item),功能是只提取元素中的有效信息。然后,我们将这个函数传入applymap(),并应用于df3,滚悄看起来是不是干净多了,结果如下:
如果你没听说过它的话,我不得强调它的重要性。输入下面的命令:
你会发现df1已经发生了改变。这是因为df2 = df1并不是生成一个df1的复制品并把它赋值给df2,而是设定一个指向df1的指针。所以只要是针对df2的改变,也会相应地作用在df1上。为了解决这个问题,你既可以这样做:
也可以这样做:
这个命令用于检查值的分布。你想要检查下“c”列中出现的值以及每个值所出现的频率,可以使用:
下面是一些有用的小技巧/参数:
lsin () 用于过滤数据帧。Isin () 有助于选择特定列中具有特定(或多个)值的行。
在SQL中我们可以使用 SELECT * FROM … WHERE ID in (‘A001’,‘C022’, …)来获取含有指定ID的记录。如果你也想在Pandas中做类似的事情,你可以使用:
select_dtypes() 的作用是,基于 dtypes 的列返回数据帧列的一个子集。这个函数的参数可设置为包含所有拥有特定数据类型的列,亦或者设置为排除具有特定数据类型的列。
pivot_table( ) 也是 Pandas 中一个非常有用的函数。如果对 pivot_table( ) 在 excel 中的使用有所了解,那么就非常容易上手了。
如果需要计算样本的缺失率分布,只要加上参数axis=1
分为分组中有重复值和无重复值两种。无重复值的情况。
先按Mt列进行分组,然后对分组之后的数据框使用idxmax函数取出Count最大值所在的列,再用iloc位置索引将行取出。有重复值的情况
对ID进行分组之后再对分数应用rank函数,分数相同的情况会赋予相同的排名,然后取出排名为1的数据。
介绍两种高效地组内排序的方法。
用这种方式转换第三列会出错,因为这列里包含一个代表 0 的下划线,pandas 无法自动判断这个下划线。为了解决这个问题,可以使用 to_numeric() 函数来处理第三列,让 pandas 把任意无效输入转为 NaN。
df = df.apply(pd.to_numeric, errors='coerce').fillna(0)
方法一:只读取切实所需的列,使用usecols参数
方法二:把包含类别型数据的 object 列转换为 Category 数据类型,通过指定 dtype 参数实现。
希望本文的内容对大家的学习或者工作能带来一定的帮助,每天进步一点点,加油~
‘伍’ 数据科学家常用的工具有哪些
1、学科知识:从数据分析涉及到的专业知识点上看,主要是这些:
(1)统计学:参数检验、非参检验、回归分析等
(2)数学:线性代数、微积分等铅禅
(3)社会学:主要是一些社会学量化统计的知识,如问卷调查与统计分析;还有就是一些社会学的知识镇森,这些对于从事营销类的数据分析人员比较有帮助
(4)经济金融:如果是从事这个行业的数据分析人员,经济金融知识是必须的,这里就不多说了
(5)计算机:从事数据分析工作的人必须了解你使用的数据是怎么处理出来的,要了解数据库的结构和基本原理,同时如果条件充足的话,你还能有足够的能力从数据库里提取你需要的数据(比如使用SQL进行查询),这种提取数据分析原材料的能力是每个数据从业者必备的。此外,如果要想走的更远,还要能掌握一些编程能力,从而借住一些专业的数据分析工具,帮助你完成工作。
2、软件相关:从事数据分析方面的工作必备的工具是什么
(1)数据分析报告类:Microsoft Office软件等,如果连excel表格基本的处理操作都不会,连PPT报告都不会做,那我只好说离数据分析的岗位还差的很远。现在的数据呈现不再单单只是表格的形式,而是更多需要以可视化图表去展示你的数据结果,因为数据可视化软件就不能少,BDP个人版、TABLUEA等这些必备的,就看你自己怎么选了。
(2)专业数据分析软件:Office并不是全部,要从在数据分析方面做的比较好,你必须会用(至少要了解)一些比较常用的专业数据分析软件工具,比如SPSS、SAS、Matlab等等,这些软件可以很好地帮助我们完成专业性的算法或模型分析,还有高级的python、R等。
(3)数据库:hive、hadoop、impala等数据库相关的知识可以学习;
(4)辅助工具:比如思维导图软件(如MindManager、MindNode Pro等)也可以很好地帮助我们整理分析思路。
最重要的是:理论知识+软件工具=数据分析基础,最后要把这些数据分析基础运御激亩用到实际的工作业务中,好好理解业务逻辑,真正用数据分析驱动网站运营、业务管理,真正发挥数据的价值。
‘陆’ 数据科学家需要掌握的10个基本统计技术
数据科学家需要掌握的10个基本统计技术
无论您在数据的科学性问题上持哪种看法,都无法忽视数据的持续重要性,也不能轻视分析、组织和情境化数据的能力。 根据大量的就业数据和员工反馈信息统计,在“25个最佳美国就业机会”排行榜中,数据科学家排名第一。毫无疑问,数据科学家所做的具体工作内容将会进一步拓展。随着机器学习等技术变得越来越普遍,深度学习等新兴领域对研究人员和工程师的需求得到了巨大的推动,数据科学家们在创新和技术进步的浪潮中再次崭露头角。
编码能力强大是很重要的,但数据科学并不专职于软件工程(事实上,对Python很熟悉就足够了)。数据科学家生活在编码、统计学和批判性思维的交叉点上。正如乔希·威尔斯(JoshWills)所说的那样:“数据科学家是一个比任何程序员都要好的统计学家,而且比任何统计学家都更擅长编程。”笔者个人知道有太多的软件工程师希望转向数据科学家,并盲目利用机器学习框架TensorFlow或Apache Spark,而不透彻理解背后的统计理论。因此出现了“统计学习”,一个与机器学习有关的理论框架,包含统计到功能分析的一系列专业领域。
为什么学习统计学习?了解各种技术背后的想法是非常重要的,可以让你知道如何以及何时使用它们。由简入繁,首先要理解更简单的方法,才好把握更复杂的方法。准确地评估一种方法的性能,了解它的工作效果多好或者多糟,这一点很重要。此外,这是一个令人兴奋的研究领域,在科学,工业和金融领域有着重要的应用。最终,统计学习是培养现代数据科学家的基本要素。统计学习问题的例子有:
确定前列腺癌的危险因素。
根据记录周期图对录制的音素进行分类。
根据人口统计、饮食和临床测量,预测是否有人会发生心脏病。
自定义垃圾邮件检测系统。
识别手写邮政编码中的数字。
将组织样本分为几个癌症类别之一。
建立人口调查数据中工资与人口变量之间的关系。
统计学习和机器学习之间的差异在于:
机器学习是人工智能的一个子领域。
统计学习是统计学的一个分支。
机器学习更强调大规模应用和预测的准确性。
统计学习强调模型及其可解释性,精确性和不确定性。
1 - 线性回归:
在统计学中,线性回归是一种通过拟合自变量与自变量之间最佳线性关系来预测目标变量的方法。最好的做法是确保每个点的形状和实际观测之间的所有距离之和尽可能小。形状的适合性是“最好的”,因为在形状的选择上没有其他位置会产生较少的误差。线性回归的2种主要类型是简单线性回归和多元线性回归。简单线性回归使用一个独立变量来通过拟合最佳线性关系来预测因变量。多重线性回归使用多个独立变量来通过拟合最佳线性关系来预测因变量。
选择你在日常生活中使用的任何两件相关的东西。如每月支出,月收入和过去三年每月的旅行次数的数据。就需要回答以下问题:
我明年的每月开支是多少?
哪个因素(每月收入或每月旅行次数)在决定我的每月支出时更重要?
月收入和每月旅行如何与每月支出相关联?
2 - 分类:
分类是一种数据挖掘技术,它将类别分配给数据集合,以助进行更准确的预测和分析。有时也称为决策树,分类是用于对非常大的数据集进行分析的几种方法之一。眼下有2大分类技术脱颖而出:Logistic回归和判别分析。
Logistic回归分析是当因变量是二分(二元)时进行的适当的回归分析。像所有回归分析一样,Logistic回归是预测分析。 Logistic回归用于描述数据并解释一个相关二元变量与一个或多个标称、序数、区间或比例级别的独立变量之间的关系。逻辑回归可以检查的问题类型:
每增加一磅的超重和每天吸一包香烟,肺癌的可能性(是vs否)会发生怎样的变化?
体重卡路里摄入量,脂肪摄入量和参与者年龄对心脏病发作是否有影响(有vs无)?
在判别分析中,先验已知2个或更多个组或群或群,并基于所测量的特征将1个或更多个新观察分类到1个已知群中。判别分析在每个响应类别中分别对预测因子X的分布进行建模,然后使用贝叶斯定理将它们翻转为给定X的值的响应类别概率的估计。这样的模型可以是线性的或二次的。
线性判别分析为每个观测值计算“判别分数”,以便对它所处的响应变量类别进行分类。这些分数是通过寻找自变量的线性组合得到的。它假设每个类别内的观察值都来自多变量高斯分布,预测因子的协方差在响应变量Y的所有k水平上是共同的。
二次判别分析提供了一种替代方法。和LDA一样,QDA假定每个Y类的观测值都是从高斯分布中得到的。但是,与LDA不同的是,QDA假定每个类都有其自己的协方差矩阵。换句话说,预测因子不被假定在Y中的每个k水平上具有共同的方差。
3 - 重采样方法:
重采样是从原始数据样本中绘制重复样本的方法。这是统计推断的非参数方法。换句话说,重采样方法不涉及使用通用分布表来计算近似p概率值。
重采样根据实际数据生成唯一的采样分布。它使用实验方法而不是分析方法来生成独特的抽样分布。它产生无偏估计,因为它是基于研究者所研究数据的所有可能结果的无偏样本。为了理解重采样的概念,您应该理解术语Bootstrapping和交叉验证:
Bootstrapping是一种技术,可以帮助您在很多情况下验证预测模型的性能、集成方法、估计模型的偏差和方差。它通过对原始数据进行替换来进行采样,并将“未选择”的数据点作为测试用例。我们可以做这几次,并计算平均分作为我们的模型性能的估计。
另一方面,交叉验证是验证模型性能的一种技术,它是通过将训练数据分成k个部分来完成的。我们以k - 1部分作为训练集,并使用“伸出部分”作为我们的测试集。我们重复k次不同的方式。最后,我们将k分数的平均值作为我们的业绩估计。
通常对于线性模型,普通最小二乘法是考虑将它们适合于数据的主要标准。接下来的3种方法是可以为线性模型的拟合提供更好的预测精度和模型可解释性的替代方法。
4 - 子集选择:
这种方法确定了我们认为与响应相关的p预测因子的一个子集。然后,我们使用子集特征的最小二乘拟合模型。
最佳子集选择:这里我们对每个可能的p预测因子组合进行单独的OLS回归,然后查看最终的模型拟合。算法分为2个阶段:(1)拟合所有包含k预测因子的模型,其中k是模型的最大长度;(2)使用交叉验证的预测误差选择单个模型。使用测试或验证错误非常重要,而不是训练错误来评估模型拟合,因为RSS和R 2单调增加更多的变量。最好的方法是在测试误差估计值上交叉验证并选择具有最高R 2和最低RSS的模型。
向前逐步选择考虑预测因子的一个小得多的子集。它从不含预测因子的模型开始,然后在模型中添加预测因子,直到所有预测因子都在模型中。被添加变量的顺序是变量,其给出对拟合的最大的加法改进,直到没有更多的变量使用交叉验证的预测误差来改进模型拟合。
向后逐步选择开始将模型中的所有预测因子,然后迭代去除最不有用的预测因子。
混合方法遵循向前逐步回归方法,但是,在添加每个新变量之后,该方法还可以去除对模型拟合没有贡献的变量。
5 - 收缩:
这种方法适合一个涉及所有p预测因子的模型,然而,估计系数相对于最小二乘估计向零收缩。这种缩水,又称正规化,具有减少方差的作用。取决于执行什么类型的收缩,其中一些系数可能恰好被估计为零。因此这个方法也执行变量选择。将系数估计收缩为零的两个最着名的技术是岭回归和Lasso。
岭回归类似于最小二乘,通过最小化一个稍微不同的数量估计系数。像OLS一样,岭回归寻求降低RSS的系数估计值,但是当系数接近于零时,它们也会有收缩惩罚。这个惩罚的作用是将系数估计收缩到零。不用进入数学计算,知道岭回归缩小列空间方差最小的特征是有用的。像在主成分分析中一样,岭回归将数据投影到双向空间,然后比高方差分量收缩低方差分量的系数,这相当于最大和最小主分量。
岭回归至少有一个缺点:它包括最终模型中的所有p预测值。犯规条款将使它们中的许多接近于零,但不完全为零。这对于预测准确性来说通常不是问题,但它可能使模型更难以解释结果。 Lasso克服了这个缺点,并且能够迫使一些系数归零,只要s足够小。由于s = 1导致有规律的OLS回归,当s接近0时,系数收缩为零。因此,Lasso回归也执行变量选择。
6 - 维度降低:
维数减少将估计p + 1个系数的问题简化为M + 1个系数的简单问题,其中M
可以将主成分回归描述为从大量变量中导出低维特征集合的方法。数据的第一个主要组成方向是观测值变化最大的。换句话说,第一台PC是尽可能接近数据的一条线。人们可以适应不同的主要组成部分。第二个PC是与第一个PC不相关的变量的线性组合,并且受这个约束的变化最大。这个想法是主要的组成部分使用随后正交方向的数据的线性组合捕获数据中最大的变化。通过这种方式,我们也可以结合相关变量的效果,从可用数据中获取更多信息,而在正则最小二乘中,我们将不得不放弃其中一个相关变量。
我们上面描述的PCR方法包括确定最能代表预测因子的X的线性组合。这些组合(方向)以无监督的方式被识别,因为响应Y不用于帮助确定主要组件方向。也就是说,响应Y不监督主成分的识别,因此不能保证最能解释预测因子的方向对于预测响应(即使经常假设)也是最好的。偏最小二乘法(PLS)是一个监督的替代PCR。与PCR一样,PLS是一种降维方法,它首先识别一组新的较小的特征,这些特征是原始特征的线性组合,然后通过最小二乘法拟合一个线性模型到新的M特征。然而,与PCR不同的是,PLS利用响应变量来识别新的特征。
7 - 非线性模型:
在统计学中,非线性回归是回归分析的一种形式,其中观测数据是由一个函数建模的,该函数是模型参数的非线性组合,并取决于一个或多个自变量。数据通过逐次逼近的方法进行拟合。以下是一些处理非线性模型的重要技巧:
如果实数的函数可以写成区间指示函数的有限线性组合,则称实数为函数。非正式地说,一个阶梯函数是一个只有很多片段的分段常量函数。
分段函数是由多个子函数定义的函数,每个子函数应用于主函数域的一定间隔。分段实际上是表达函数的一种方式,而不是函数本身的一个特征,但是具有额外的限定,可以描述函数的性质。例如,分段多项式函数是在其每个子域上是多项式的函数,但是每个子域上可能是不同的。
样条函数是由多项式分段定义的特殊函数。在计算机图形学中,样条是指分段多项式参数曲线。由于其结构简单,评估方便和准确,以及通过曲线拟合和交互式曲线设计逼近复杂形状的能力,样条曲线是流行的曲线。
广义加性模型是一种线性预测模型,其中线性预测变量线性依赖于某些预测变量的未知光滑函数,兴趣集中在对这些光滑函数的推理上。
8 - 基于树的方法:
基于树的方法可以用于回归和分类问题。这些涉及将预测空间分层或分割成若干简单区域。由于用于分割预测变量空间的分裂规则集合可以在树中进行概括,所以这些类型的方法被称为决策树方法。下面的方法生成多个树,然后结合在一起产生一个单一的共识预测。
套袋(Bagging)是减少预测方差的方法,通过使用重复组合来生成原始数据集中的训练数据,从而生成与原始数据相同的多样性。通过增加你的训练集的大小,你不能提高模型的预测力,只是减少方差,勉强把预测调整到预期的结果。
提升(Boosting)是一种使用几种不同的模型计算产出的方法,然后使用加权平均方法对结果进行平均。通过改变你的加权公式,结合这些方法的优点和缺陷,你可以使用不同的狭义调整模型,为更广泛的输入数据提供一个很好的预测力。
随机森林(random forest )算法实际上非常类似于套袋。你也可以绘制训练集的随机bootstrap样本。但是,除了自举样本之外,还可以绘制随机子集来训练单个树;在套袋中,你给每个树一套完整功能。由于随机特征选择,与常规套袋相比,树木之间的相互独立性更高,这通常会带来更好的预测性能(由于更好的方差偏差权衡),而且速度更快,因为每棵树只能从功能的一个子集。
9 - 支持向量机:
SVM是机器学习中监督学习模型中的一种分类技术。通俗地说,它涉及于找到超平面(2D中的线,3D中的平面和更高维中的超平面,更正式地说,超平面是n维空间中的n维空间)最大保证金从本质上讲,它是一个约束优化问题,其边界被最大化,受限于它对数据进行了完美的分类(硬边缘)。
这种“支持”这个超平面的数据点被称为“支持向量”。对于两类数据不能线性分离的情况,这些点被投影到可能线性分离的分解(高维)空间。涉及多个类的问题可以分解为多个一对一或者一对二的分类问题。
10 - 无监督学习:
到目前为止,我们只讨论了监督学习技术,其中组是已知的,提供给算法的经验是实际实体和它们所属的组之间的关系。当数据的组(类别)未知时,可以使用另一组技术。它们被称为无监督的,因为它会留在学习算法中以找出所提供的数据中的模式。聚类是无监督学习的一个例子,其中不同的数据集被聚类为密切相关的项目组。下面是最广泛使用的无监督学习算法的列表:
主成分分析通过识别一组具有最大方差和相互不相关的特征的线性组合来帮助产生数据集的低维表示。这种线性维度技术有助于理解变量在无监督环境下的潜在相互作用。
k-Means聚类:根据到群集质心的距离将数据分为k个不同的集群。
分层集群:通过创建集群树来构建集群的多级分层结构。
以上是一些基本的统计技术的简单解释与说明,可以帮助数据科学项目经理和主管人员更好地理解他们的数据科学小组背后隐藏的内容。实际上,一些数据科学小组纯粹通过python和R库运行算法。他们中的大多数甚至不必考虑潜在的数学问题。但是,能够理解统计分析的基础知识可以为您的团队提供更好的方法。
‘柒’ 攻克大数据 数据科学家的八种技能
攻克大数据:数据科学家的八种技能
随着大数据渗透进各行各业,负责淘洗数据、从中精炼价值的数据科学家无疑是这几年最炙手可热的职位,《哈佛商业评论》将之誉为21 世纪最性感工作。
1,因为优异的数据科学家就像独角兽一样珍贵难寻,而且可不是只有科技公司在抢人,传统金融界、零售商、广告、教育,几乎所有产业都需要数据科学家从大量数据中萃取精华。根据去年七月 Indeed.com 的调查,美国数据科学家每年均薪 12.3 万美金。
2,比起整体均薪多出 113%——当然,还是比每年平均可以领 74 万美金的 CEO 还少,但也够让 99.99% 的上班族望尘莫及。
能领这么惊人的薪资,数据科学家的本领真的不是三言两语就能讲完。但是到底什么是数据科学家?
顶尖的数据科学家最好统计、数学、程式能力最好都要掌握,而且要能从中洞察意义,并且拥有非凡的直觉,用数据数据发声,帮助公司制定重大决策。但是,其实就算同样都是寻找“数据科学家”,Google 跟沃尔玛超市要的人才,可能非常不一样。别因你好像缺了哪个专长而打退堂鼓,如果仔细阅读每家公司张贴的职缺叙述,你会发现说不定现有的技能就能进入数据科学的殿堂。Airbnb 数据科学家 Dave Holtz 把市场上所需的数据科学家概括成以下四类:
四种数据科学家
菜鸟数据科学家说穿了就是数据分析师
有些公司需要的数据科学家,说白话就是数据分析师(data analyst),而数据分析师就是菜鸟数据科学家。你的工作包括从 MySQL 萃取数据或是一名 Excel 专家,也许要能绘制基础的数据视觉图表、分析 A/B 测试的结果或者管理公司的 Google Analytics 帐号。这种公司对抱负远大的数据科学家来说,是很不错的练功场所,当你变成老手了,也能开始尝试新事物,扩充技能组合。
来清理我们乱糟糟的数据!
公司发展到了一定规模之后,累积一堆尚未理清的数据,而且持续大幅增加,因此他们会需要一个能够建立数据基本设施(data infrastrucure)的人,以让他们在这个基础上继续成长。由于你是第一个或第一批获聘的数据相关人员,工作通常不会太难,不求统计学家或机器学习专家才能胜任。在这种公司里面,带有软体工程背景的数据科学家就很吃香了,重点任务是提供数据到 proction code,关于数据的洞见与分析倒是其次。就像前面说的,你是这家公司的第一个数据探勘者,通常你不会获得太多上层的支援,虽然反而更有机会大放异彩,不过因为比较缺乏真正的挑战,冲哗也有可能面临停滞不前的窘境。
我们就是数据,数据就是我们
也有很多公司,主要的产品就是数据(或数据分析平台)。如果你想族吵进入这种公司,那你势必要具备很高深的数据分析或机器学习功力。完美的人选应该是有正规的数学、统计、物理背景,而且有意继续朝学术面钻研。这些数据科学家的主要职责在于研发出色的数据产品,而非解答公司的营运问题。拥有大量消费者数据也以此作为主要营利来源的公司、或者提供基于数据的服务的公司,都归属此类。
产品并非数据、却以数据驱动产品的公司
很多公司都属这种类型。你可能会加入一组已经建立的数据科学家团队,这家公司很重视数据,但称不上一家数据公司。你既要能够进行数据分析、接触 proction code、也能将数据视觉化散穗行。一般来说,这种公司要的人才要不是通才,就是他们团队缺乏的某种特殊专才,比如数据视觉化或机器学习。想要通过这类公司的考验,端看你对“大数据(比如 Hive 或 Pig)”工具的熟稔程度,以及过往处理杂乱无章数据的经验。
现在,你了解“数据科学家”的定义很浮动,即使公司开缺都以数据科学家为名,但是他们要找的人其实不太一样,不一样的技能组合、不一样专长、不一样的经验层级,却都能够称之数据科学家,因此找工作时,务必详读职位描述,搞清楚你会进入什么样的团队、发展什么样的技能。
基本工具
无论哪一类公司,统计程式语言如 R 或 Python,以及数据库查询工具像 SQL 大概都是数据科学家必备的常识。
基础统计学
对统计起码要有基本认识,才称得上及格的数据科学家,一名拥有许多面试经验的人资说,很多他曾面试的人连 p-value 的定义都讲得不清不楚。你应该熟悉统计测试、分布、最大似然法则(maximum likelihood estimators)等等。机器学习也很重要,但更关键的能力,是你能否判断不同状况该用什么不同的技术。统计学适用于所有类型的公司,但对那些主要产品并非数据、却大幅依赖数据的公司来说尤为必备能力,老板需要的是你能不能利用数据帮助他们进行决策,以及设计、评估实验与结果。
机器学习
假如你是在握有大量数据的大型企业,或是产品本身就是以数据为卖点的公司工作,机器学习就是你用来吃饭的家伙。虽然 KNN 算法(k-nearest neighbors)、随机森林(random forest)、集成学习(ensemble methods)这类机器学习的流行术语好像不懂不行,不过因为事实上很多技术都可以用 R、Python 程式库解决,所以即使你不是算法的世界顶尖专家,并不代表就毫无希望。比较重要的是,能够纵观全局,每种状况出现都能找出最契合的技术。
多变量微积分、线性代数
就算你即将面试的公司并未要求机器学习或统计学知识,基础多变量微积分与线性代数问题十之八九都是逃避不了的必考题,因为数据科学就是由这些技术型塑而成。尽管很多事情可以交给 sklearn 或 R 自动执行,但是未来如果公司想要建立自有的方案,这些基本知识就变得很重要了。如果你置身于“数据就是产品”,或者预测绩效仅因小小进步或算法优化就能带来惊人效益的公司里面,微积分、线性代数等数学概念都需了解通透。
清理数据
Data Munging 是最容易令人不耐的过程,你面对的是乱七八糟的数据。这些数据包含消失的数值、不一致的字串格式(比如“New York”与“new york”与“ny”)、数据格式(“2015-03-26”、“03/26/2015”,“unix time”、“timestamps”等等),必须劳心费神梳理这些庞杂的数据。虽然这工作吃力不讨好,但只要是数据科学家,大概都避免不了,而如果你是某家小公司的先遣数据科学家,或是在一家产品非与数据相关,但是数据却扮演重要角色的公司里工作,清理数据的任务格外重要。
数据视觉化与沟通
把枯燥繁琐的数据转成图像,以及向外界沟通的技能愈来愈重要,尤其是在年轻的公司制定由数据驱动的决策,或者协助其他组织进行数据决策的公司。“沟通”二字的真谛在于,面对技术人或一般人,你都能准确的传达研究发现,并能让他们轻易理解。至于视觉化,如果可以熟悉 ggplot、d3.js 等软体的运用,会有很大的助益,当然工具只是表象,能否参透数据视觉化的原则,才是最需费心的地方。
软件工程
如果你是公司数据科学团队的草创元老,拥有强悍的软体工程背景十分重要,你会负责处理很多数据登录(data logging),也有可能需要参与开发以数据为本的产品。
像个数据科学家般思考
所谓数据科学家,就是你解决问题的方法奠基于数据数据。在面试过程中,主考官可能会出一些比较艰涩的问题,比如公司想要执行的某个测试,或者计划开发的数据产品。判断事情的轻重缓急、作为数据科学家如何与工程师和产品经理互动、知道该用什么方式解决问题,都是你该培养的能力。
以上是小编为大家分享的关于攻克大数据 数据科学家的八种技能的相关内容,更多信息可以关注环球青藤分享更多干货
‘捌’ 大数据科学家需要掌握的几种异常值检测方法
引言
异常值检测与告警一直是工业界非常关注的问题,自动准确地检测出系统的异常值,不仅可以节约大量的人力物力,还能尽早发现系统的异常情况,挽回不必要的损失。个推也非常重视大数据中的异常值检测,例如在运维部门的流量管理业务中,个推很早便展开了对异常值检测的实践,也因此积累了较为丰富的经验。本文将从以下几个方面介绍异常值检测。
1、异常值检测研究背景
2、异常值检测方法原理
3、异常值检测应用实践
异常值检测研究背景
异常值,故名思议就是不同于正常值的值。 在数学上,可以用离群点来表述,这样便可以将异常值检测问题转化为数学问题来求解。
异常值检测在很多场景都有广泛的应用,比如:
1、流量监测
互联网上某些服务器的访问量,可能具有周期性或趋势性:一般情况下都是相对平稳的,但是当受到某些黑客攻击后,其访问量可能发生显着的变化,及早发现这些异常变化对企业而言有着很好的预防告警作用。
2、金融风控
正常账户中,用户的转账行为一般属于低频事件,但在某些金融诈骗案中,一些嫌犯的账户就可能会出现高频的转账行为,异常检测系统如果能发现这些异常行为,及时采取相关措施,则会规避不少损失。
3、机器故障检测
一个运行中的流水线,可能会装有不同的传感器用来监测运行中的机器,这些传感器数据就反应了机器运行的状态,这些实时的监测数据具有数据量大、维度广的特点,用人工盯着看的话成本会非常高,高效的自动异常检测算法将能很好地解决这一问题。
异常值检测方法原理
本文主要将异常值检测方法分为两大类:一类是基于统计的异常值检测,另一类是基于模型的异常值检测。
基于统计的方法
基于模型的方法
1、基于统计的异常值检测方法
常见的基于统计的异常值检测方法有以下2种,一种是基于3σ法则,一种是基于箱体图。
3σ法则
箱体图
3σ法则是指在样本服从正态分布时,一般可认为小于μ-3σ或者大于μ+3σ的样本值为异常样本,其中μ为样本均值,σ为样本标准差。在实际使用中,我们虽然不知道样本的真实分布,但只要真实分布与正太分布相差不是太大,该经验法则在大部分情况下便是适用的。
箱体图也是一种比较常见的异常值检测方法,一般取所有样本的25%分位点Q1和75%分位点Q3,两者之间的距离为箱体的长度IQR,可认为小于Q1-1.5IQR或者大于Q3+1.5IQR的样本值为异常样本。
基于统计的异常检测往往具有计算简单、有坚实的统计学基础等特点,但缺点也非常明显,例如需要大量的样本数据进行统计,难以对高维样本数据进行异常值检测等。
2、基于模型的异常值检测
通常可将异常值检测看作是一个二分类问题,即将所有样本分为正常样本和异常样本,但这和常规的二分类问题又有所区别,常规的二分类一般要求正负样本是均衡的,如果正负样本不均匀的话,训练结果往往会不太好。但在异常值检测问题中,往往面临着正(正常值)负(异常值)样本不均匀的问题,异常值通常比正常值要少得多,因此需要对常规的二分类模型做一些改进。
基于模型的异常值检测一般可分为有监督模型异常值检测和无监督模型异常值检测,比较典型的有监督模型如oneclassSVM、基于神经网络的自编码器等。 oneclassSVM就是在经典的SVM基础上改进而来,它用一个超球面替代了超平面,超球面以内的值为正常值,超球面以外的值为异常值。
经典的SVM
1
基于模型的方法
2
基于神经网络的自编码器结构如下图所示。
自编码器(AE)
将正常样本用于模型训练,输入与输出之间的损失函数可采用常见的均方误差,因此检测过程中,当正常样本输入时,均方误差会较小,当异常样本输入时,均方误差会较大,设置合适的阈值便可将异常样本检测出来。但该方法也有缺点,就是对于训练样本比较相近的正常样本判别较好,但若正常样本与训练样本相差较大,则可能会导致模型误判。
无监督模型的异常值检测是异常值检测中的主流方法,因为异常值的标注成本往往较高,另外异常值的产生往往无法预料,因此有些异常值可能在过去的样本中根本没有出现过, 这将导致某些异常样本无法标注,这也是有监督模型的局限性所在。 较为常见的无监督异常值检测模型有密度聚类(DBSCAN)、IsolationForest(IF)、RadomCutForest(RCF)等,其中DBSCAN是一种典型的无监督聚类方法,对某些类型的异常值检测也能起到不错的效果。该算法原理网上资料较多,本文不作详细介绍。
IF算法最早由南京大学人工智能学院院长周志华的团队提出,是一种非常高效的异常值检测方法,该方法不需要对样本数据做任何先验的假设,只需基于这样一个事实——异常值只是少数,并且它们具有与正常值非常不同的属性值。与随机森林由大量决策树组成一样,IsolationForest也由大量的树组成。IsolationForest中的树叫isolation tree,简称iTree。iTree树和决策树不太一样,其构建过程也比决策树简单,因为其中就是一个完全随机的过程。
假设数据集有N条数据,构建一颗iTree时,从N条数据中均匀抽样(一般是无放回抽样)出n个样本出来,作为这颗树的训练样本。
在样本中,随机选一个特征,并在这个特征的所有值范围内(最小值与最大值之间)随机选一个值,对样本进行二叉划分,将样本中小于该值的划分到节点的左边,大于等于该值的划分到节点的右边。
这样得到了一个分裂条件和左、右两边的数据集,然后分别在左右两边的数据集上重复上面的过程,直至达到终止条件。 终止条件有两个,一个是数据本身不可再分(只包括一个样本,或者全部样本相同),另外一个是树的高度达到log2(n)。 不同于决策树,iTree在算法里面已经限制了树的高度。不限制虽然也可行,但出于效率考虑,算法一般要求高度达到log2(n)深度即可。
把所有的iTree树构建好了,就可以对测试数据进行预测了。预测的过程就是把测试数据在iTree树上沿对应的条件分支往下走,直到达到叶子节点,并记录这过程中经过的路径长度h(x),即从根节点,穿过中间的节点,最后到达叶子节点,所走过的边的数量(path length)。最后,将h(x)带入公式,其中E(.)表示计算期望,c(n)表示当样本数量为n时,路径长度的平均值,从而便可计算出每条待测数据的异常分数s(Anomaly Score)。异常分数s具有如下性质:
1)如果分数s越接近1,则该样本是异常值的可能性越高;
2)如果分数s越接近0,则该样本是正常值的可能性越高;
RCF算法与IF算法思想上是比较类似的,前者可以看成是在IF算法上做了一些改进。针对IF算法中没有考虑到的时间序列因素,RCF算法考虑了该因素,并且在数据样本采样策略上作出了一些改进,使得异常值检测相对IF算法变得更加准确和高效,并能更好地应用于流式数据检测。
IF算法
RCF算法
上图展示了IF算法和RCF算法对于异常值检测的异同。我们可以看出原始数据中有两个突变异常数据值,对于后一个较大的突变异常值,IF算法和RCF算法都检测了出来,但对于前一个较小的突变异常值,IF算法没有检测出来,而RCF算法依然检测了出来,这意味着RCF有更好的异常值检测性能。
异常值检测应用实践
理论还需结合实践,下面我们将以某应用从2016.08.16至2019.09.21的日活变化情况为例,对异常值检测的实际应用场景予以介绍:
从上图中可以看出该应用的日活存在着一些显着的异常值(比如红色圆圈部分),这些异常值可能由于活动促销或者更新迭代出现bug导致日活出现了比较明显的波动。下面分别用基于统计的方法和基于模型的方法对该日活序列数据进行异常值检测。
基于3σ法则(基于统计)
RCF算法(基于模型)
从图中可以看出,对于较大的突变异常值,3σ法则和RCF算法都能较好地检测出来, 但对于较小的突变异常值,RCF算法则要表现得更好。
总结
上文为大家讲解了异常值检测的方法原理以及应用实践。综合来看,异常值检测算法多种多样 ,每一种都有自己的优缺点和适用范围,很难直接判断哪一种异常检测算法是最佳的, 具体在实战中,我们需要根据自身业务的特点,比如对计算量的要求、对异常值的容忍度等,选择合适的异常值检测算法。
接下来,个推也会结合自身实践,在大数据异常检测方面不断深耕,继续优化算法模型在不同业务场景中的性能,持续为开发者们分享前沿的理念与最新的实践方案。
‘玖’ 数据科学的基本过程是什么
在描述数据科学是什么的时候,每个人给你的答案多少有些不同,但大多数人都会同意数据科学包含一个重要的环节激弯,即数据分析。数据分析并不是什么新事物,新的是从各种各样的来源获得的大量数据:日志文件、电子邮件、社交媒体、销售数据、患者信息文件、运动表现数据、传感器数据、安全摄像头等。在数据比以往任何时候都要多的同时,我们也拥有了进行有用分析和获取新知识的计算能力。
数据科学能帮助企业了解其所处环境,分析存在的问题,并且展现以往隐藏的机会。数据科学家通过调查数据、使用数据分析来丰富机构的知识库,从而探索并利用最佳方式为业务增值。
‘拾’ 数据科学家需要掌握哪些技能
想要成为一名数据科学家,需要掌握的知识是非常多的。其中主要有:编程和数据库、数学和统计、交流和可视化、领导力和软技术技能四个方面。那么这四个方面具体包含哪些内容呢?下面南邵电脑培训为大家具体介绍。
一、编程和数据库
一般情况下,数据科学家需要拥有程序设计、计算机科学相关的专业背景,处理大数据所需的Hadhop。需要掌握Mahour等大规模的并行处理技术和与机器学习相关的技侍氏能。南邵IT培训建议一般利用python来获取数据,整理数据,使用matplotlib进行数据显示。
二、数学统计和数据挖掘
除了数学和统计知识,你还需要掌握更多的技能,使用主流统计分析软件,如SPSS,SAS。其中,用于统计分析的开源编程语言及其运行环境“R”近年来备受关注。R的优点不仅在于它包含了丰富的统计分析库,而且还具有可视化、高质量的图形生成功能,并且还可以通过简单的命令运行。此外指谈悔唯正,南邵IT培训发现它还有一个名为cran的包扩展机制,它可以通过导入扩展包来使用在标准状态下不受支持的函数和数据集。
三、数据可视化
信息的质量在很大程度上取决于信息的表达。通过分析数字列表数据的含义,开发了Web原型,利用外部API对图表、地图、仪表板等服务进行统一,使分析结果可视化。这是数据科学家需要掌握的非常重要的技能之一。
四、领导力和软技能
数据科学家不仅有黑客的头脑,还需要对数据好奇,而且南邵电脑培训认为还需要对商业有热情,有影响力,有创造性,这样才能够解决问题。