秘诀 | 如何成功通过数据科学家面试?
数据科学领域范围广泛,包罗万象,所以很难精通所有事情。传统上意义上的数据科学包含了三个领域:数学,计算机科学,以及专业领域知识。
本文接下来除了简略介绍一些计算机科学的基本原理,会着重于介绍那些需要我们温习的数学基础知识(有些甚至可能需要学习相关的课程)。
软件工具
在大多数工作环境中,软件的使用是一项必备技能。但是我认为,本文的读者们都更注重数学。这很自然,事实上,数据科学中绝大多数(我敢说超过八成)的工作都是收集,清理以及加工数据,最终转化为可用的格式。
编程语言
Python 和 R是数据科学领域最为流行的语言。我也看到过C/C++, Java 和 Scala。不过我个人仍然推荐Python,因为它包含最完整的数学函数库和针对多种数据库查询的专用函数库。还有网页交互的维护界面。常用的Python函数库包括matplotlib, numpy, pandas 和 scikit-learn。
数据库管理
通常我们见到的大多数数据科学家,都分属于两大阵营中的其中一种:数学家或者数据库架构师。如果你是后者,本文并不能给你太多帮助(你已经非常厉害啦!)。如果你是属于前者中的一员(比如我),或许你会觉得写一个双重嵌套的SQL查询简直就是个噩梦。不过话虽这么说,学一些查询优化的知识(不管是SQL还是noSQL系统)还是非常重要的。
映射化简?
考虑到Apache项目一直持续添加各种新的工具,很难一直紧跟大数据的技术发展。不过我推荐大家学习Hadoop 或 Spark(虽然我个人更推崇Spark)。两者使用类似的Map Reduce算法(除了Hadoop 使用硬盘空间处理而Spark在内存中处理)。一般Spark用Scala封装,Python 和 Java。
数据收集与清理
现在我们已经介绍了需要的软件,让我们进入到数学领域的介绍。在这一环节,你需要一些解析技术的背景知识,比如,收集传感器的数据,解析网站数据,或者完成一次问卷调查。数据收集完成之后,需要将它们转换为可用的格式(例如:键值对,存储在JSON文件中)。一旦收集完数据并转换为可用格式,就必须实际对数据进行一些质量检查。如下是一些常见的数据质量检查项:
“NaN”处理
“NaNs”或者说“非数”是数据缺失时常用的占位符。当这个占位符所表示的数字相对于某个专项特征影响非常小的时候,它通常会被一个(来自整个资料组或窗口的)平均值或者0(如果资料组的数据点不足的话)替换。
一个资料组中的“非数”值通常表示:
- 数据不存在
- 数据存在,但是我们无法知道具体值
针对不同的场景,需要选择恰当的测量方式
类别不平衡
特别是在有监督的学习模型中,对类别(或目标)进行平衡十分重要。 然而,在欺诈检测案例中,通常存在严重的类别不平衡(例如,只有2%的数据集是实际存在的欺诈行为)。
这些信息在特征工程,建模和模型评估中决定合适的方法是非常重要。
单变量分析
独立的单变量分析特征(忽略其他特征)对于试图寻找单因素中的异常值和异常峰值时十分重要。 常见单变量分析方法选用直方图。
双变量分析 (二元变量分析?)
双变量分析是指,数据组中每一个特征都与其他特征进行对比,方法包括相关矩阵,协方差矩阵,以及我个人最爱的,散布矩阵。
散布矩阵可以让我们发现一些数据的隐藏模式,如
- 应该设计在一起的特征
- 可能需要消除的特征以避免多重性
多重共线性实际上是多重模型的一个问题,比如多个线性模型,因此需要仔细地采取相应的处理。
特征工程
当数据采集,清洗和分析后,就可以开始构建要在模型中使用的特征。 在本节中,我们将探讨一些常见的特征工程策略。
变换
有时候,特征本身可能无法提供有用的信息。 例如,想象一下应用互联网的使用数据。 你想要获取YouTube 用户使用高达千兆字节而Facebook Messenger用户仅使用几百兆字节这些使用数据。 这里最简单的解决方案是获取值的LOG资料。 另一个问题是使用分类值。 虽然分类值在数据科学领域很常见,只有运行计算机才能理解数字含义。 为了使分类值具有数学意义,需要将其数字化。 分类值的经典处理方式是,通常采用One Hot编码(又称一位有效编码)。 在One Hot编码中,将为每个分类值创建一个新特征,以表明它存在于给定的数据记录中。 一个One Hot编码的例子如下:
组合
某些特征独立存在是多余的,但组合在一起时非常有用。 例如,假设你有一个交通汽车密度的预测模型,每一种类型的汽车都作为一列。 当然,你并不关注汽车的类型是什么,而是关注每种类型的汽车在所有汽车类型总数的频率。 因此,要有一行来计算出所有汽车类型的总和并创建新的变量“all_cars”。
降维
有时,太多稀疏的维度会妨碍模型的性能。 对于这种情况(如通常在图像识别中所做的那样),使用降维算法。
通常用于降维的算法是主成分分析或PCA。 了解PCA的机制,因为它也是常见的面试问题中的主题之一!
特征选择
现在你已经设计了特征列表,现在可以选择有助于构建用例的最优模型的特征。 本节介绍常用类别及其子类别。
过滤式方法
过滤式方法通常用于预处理步骤。 特征选择是独立于任何机器学习算法。 但是,特征是基于他们在各种统计测试中的与结果变量的相关性的评分来选择的。相关性在这里是一个主观术语。 相关性程度评估的常用方法有Pearson相关系数,线性判别分析,方差分析和卡方检验等。
包裹式方法
在包裹式方法中,我们尝试使用特征子集并使用它们来训练模型。 基于我们从以前的模型中得出的推论,我们会添加或删除特征子集中的一些特征。 问题基本上归结为搜索问题。 这些方法通常在计算上的耗费十分昂贵。 这个类别下的常用方法有前向选择,后向消除和递归特征消除。
嵌入式方法
嵌入式方法结合了过滤式和包裹式方法的特性。 它由自己内置的特征选择方法的算法实现。 LASSO和RIDGE是常见的两种特征选择方法。 正则化在下面的公式中作为参考给出:
Lasso:
Ridge:
就是说, 为面试
机器学习模型
现在我们拥有最优的特征集合,是时候训练出我们的实际模型了! 机器学习模型落在两个阵营之一:监督学习和无监督学习。 监督学习是指样本带标记。 无监督学习是样本无标记。 理解了吗? 监督标记! 一语双关。 这就是说,不要混淆了监督学习和不监督学习之间的差异! 这个错误足以让面试官取消面试。 另外,另一个新手常犯错误是在运行模型之前不对特征进行归一化。 虽然有些模型对这个问题有抵抗力
线性和逻辑回归
在这里,线性和逻辑回归是最基本和最常用的机器学习算法。 在做任何分析之前,请确保你首先将线性/逻辑回归作为基准!
一个常见的面试正在开始他们的分析
,使用更复杂的模型,如神经网络。 毫无疑问,神经网络准确度很高。 但是,基准很重要。 如果你的简单回归模型已经具有98%的准确性并且真的接近过度拟合,那么采用更复杂的模型并不是一个明智之举。 也就是说,线性回归用于连续目标,而逻辑回归用于二元目标(主要是因为S形曲线强制要素输入朝向0或1)。我会推荐同时使用逻辑回归模型与线性回归模型进行推导(单变量与多变量)。除了为面试准备,线性回归模型也被用作其他机器学习模型的基础。 因此,这是长期投资学习。
决策树与随机森林
决策树是一个比线性回归模型稍微复杂的模型。 决策树算法是基于信息增益在不同的特征上分裂,直到它遇到一个纯粹的叶子(即只有一个标记的一组记录)。 决策树可以在分裂一定数量的子集后停止分裂,并不一定需要获得“纯”叶子(解决过度拟合问题的常用策略)。
计算分裂决策树的信息增益很重要。 这是常见面试问题! 确保你知道信息增益是如何计算的! 常见的信息增益计算功能是基尼和熵。
上述曲线中体现的重要信息是,与基尼相比,熵值为信息增益提供了更高的价值,从而获得比基尼更多的分裂信息。
当决策树不够复杂时,通常使用随机森林(这只不过是在数据的一个子集上增长多个决策树类别,将投票次数最多的类别指定为最终的输出)。 如果没有确认合适的决策树的数量,则随机森林算法可能会过度拟合。
K-Means 算法
K-Means算法是一种无监督学习模型,可将数据点分为多个聚类。 提供聚类的数量,使模型移动中心对象,迭代移动直到找到最佳聚类的中心对象。
聚类的数量使用肘形曲线确定。
聚类的数量可能很容易也可能不容易确认(尤其是如果曲线上没有明显的扭结)。 另外,要认识到K-Means算法在本地优化而不是全局优化。 这意味着你的聚类数量将取决于你的初始化值。 最常用的初始化值是在K-Means ++中计算的,其中初始值不同聚类尽可能远离彼此。
神经网络
神经网络是大家最近看到的流行词算法之一。
虽然我无法覆盖博客上提及的复杂细节,但了解基本机制以及反向传播法和梯度消失的概念是非常重要。 认识到神经网络本质上是一个黑匣子也很重要。 如果案例研究要求你创建一个解释模型,或者选择其他的模型或者解释你发现这些权重值如何对最终结果产生的影响(例如在图像识别过程中隐藏层的可视化)。
集成模型
最后,单一模型可能无法准确确定目标。 某些特征将需要特殊的模型。 对于这种情况,可以使用多个模型的集合。 下面给出一个例子:
在这里,模型是分层或堆叠的。 每层的输出是下一层的输入。
模型评估
分类评分
评估模型性能的最常用方法之一是计算准确预测记录占全部记录的百分比。
学习曲线
学习曲线也是评估模型的常用方法。 在这里,我们可以评估模型是否太复杂或不够复杂。
如果模型不够复杂(例如,当数据模式不是线性时而我们使用线性回归),那么我们最终会得到高偏差和低方差。 当我们的模型太复杂时(例如,我们使用深度神经网络来解决一个简单的问题),我们最终会得到低偏差和高方差。 高方差是因为随着我们对训练数据进行随机化,预测结果会随之变化(即模型现在非常稳定)。 不要在面试中混淆偏差和方差之间的差异! 现在,为了确定模型的复杂性,我们使用如下所示的学习曲线:
在学习曲线上,我们改变x轴上的训练测试数据集的分割,并计算训练数据集和验证数据集模型的准确性。 如果它们之间的间距太宽,则表明模型太复杂(即过度拟合)。 如果这两条曲线中没有一条曲线达到所需的精度,曲线之间的间距太小,则数据集的偏差很大。
ROC算法
在处理严重的类别失衡的欺诈数据集时,分类评分没有多大意义。 但是,Receiver Operating Characteristics或ROC曲线为这种情况提供了良好的解决方案。
45度线是一条随机线,落在学习曲线下的区域或AUC为0.5。 这条随机线离学习曲线越远,则AUC越高,表明模型越好。 模型可以得到的最高值是AUC等于1,与学习曲线形成直角三角形。 ROC曲线也可以帮助调试模型。 例如,如果曲线的左下角更接近随机线,则意味着该模型在Y = 0时被错误分类。 而如果是曲线右上角接近随机线,则意味着错误发生在Y = 1处。 另外,如果曲线上存在尖峰(而不是平滑),则意味着模型不稳定。 在处理欺诈模型时,ROC是你最好的朋友。
作者简介
Gurgaon
现居于印度,作为ValueFirst Digital Media Pvt. Ltd 数据分析部门的产品经理,拥有有5年以上的工程师和数据分析经验。
本文的原始链接请见:http://houseofbots.com/news-detail/2619-4- />
特点1、价值2000多的课程免费学、组长带队、全程监督
特点2、实战性强的学习的线路和体系,一对一指导学习路径选择
特点3、根据圈友学习和反馈,进行组内和外界大咖直播
以后还更多,还再不断完善和丰富
加入方式:
加我微信:
seedata转账 798
犹豫的、不懂的、咨询的不要加,加了也是僵尸,时间宝贵,你我都珍惜
另:无论何时进来,我们的课程都要预约,学习过程不加新人
- 如何提高信用卡申请通过率
- 2018肠道菌群与慢性疾病学术报告全国巡讲石家庄站成功举办
- eo图赏丨港口如何更绿色?
- 《炉石传说》炉石求婚成功了!
- 实力圈粉!这些原创热文是如何产生出来的?
- 【精选作品】如何通过Scratch让小猪跑起来?(内附火影粉丝巨献
- 太空垃圾如何“俄式”处理:用高能激光“加农炮”让它蒸发
- 理财投资如何甄别风险
- 一位成功交易员的投资感悟:读懂这篇文章,就等于读懂中国股市
- 85后寿司姐开店一年红红火火,秘诀是什么?