关于机器学习在数据分析面试中可能遇到的具体内容我们会在后面的章节中介绍,这一节中更加侧重于如何表达机器学习项目或者在业务面试中如何回答机器学习问题。    在面试中会怎么提问呢?     如果简历中有机器学习相关的项目或者比赛,面试官可能会问:你来介绍下这个项目?     如果是面试金融类的企业,可能会说:让你来做模型,对借贷人进行风控,该怎么去做?     如果是电商类的企业,可能会问:你会怎样识别出羊毛党用户呢?具体的流程如何?     如果是内容类企业,问题可以是:你会根据哪些数据向用户推荐合适的内容,具体的方案流程是什么?     这些问题都可以看成是机器学习在业务面试中的应用,这一步一般不会涉及到算法原理的考察,更加重视候选人能够依据“数据预处理-特征工程-模型训练-测试上线”等流程,清楚的表达自己的项目内容。在回答完这个问题后,针对你所选择的模型,面试官还可能进行更加深入的算法提问(当然不会像算法岗一样难)。     我们以“构建风控模型,判断是否能够借款”为例,简单介绍一下回答这种问题整个流程。注意:在本文中,不会对统计学以及算法的原理性知识进行具体的介绍,相关内容可以等待后续的数理统计以及机器学习模型专题。本文的主要目的是帮助同学们梳理思路,解决“在面试中按照什么流程表达自己的模型项目”以及“遇到有关机器学习的场景题时回答顺序是什么”的问题。          在风控模型中判断是否能够向客户放款,就是对借款人的违约率进行预测,如果违约率高于某一概率,则不会对此人放款,违约率低于某一概率,会进行放款操作。           【一、数据预处理】     这里说的数据预处理主要是数据的清洗和转化。我们重点说下面试中最常遇到的缺失值、异常值、数据转化、数据规范化等处理。     1.缺失值     在样本数据中,总会因为各种原因导致数据的缺失,主要处理方法包括删除和填充。             (1)一般来说,若缺失率高达50%以上,且重要性较低,可以考虑删除变量。比如在这样一个风控数据中,有一个变量为“距最高学历毕业时长”,缺失值高达70%,且现有的变量和用户是否有违约行为之间并不存在显著的相关关系,可以考虑删除变量。     (2)如果缺失率比较低,可以通过各种方式进行缺失值的填充,常见方法包括:     ①均值填充,中位数填充,众数填充等——如果变量分布较均匀可以用均值填充,如果存在偏态分布可以用中位数填充,如果是离散变量可以用众数填充;比如针对“信用卡数量”这一变量,可能会优先考虑中位数填充,因为绝大多数的人信用卡数量集中在1-3张的区间里,这个变量很可能是偏态分布的。     ②模型预测填充,可以采用回归,随机森林等模型对缺失值进行预测,利用模型结果填充数据。     ③哑变量填充,又叫虚拟变量填充,主要用于离散数据的处理。例如有一列sex(性别),利用哑变量转化时,可以拆分为3列:sex_is_male, sex_is_female, sex_is_na。若该样本为男性用户,则sex_is_male=1, sex_is_female=0, sex_is_na=0。           2.异常值     在样本中,处于特定分布区域之外的数据可能会被我们认为是异常或者噪声。异常值可以有两种,其一是“假异常值”,这是业务在某种特定背景下产生的数据,反映了一种真实的状态,比如P2P平台活动期间的投资额与日常投资额相比存在较大的差异。其二才是“真异常值”,不由业务引起,而是数据本身的问题。主要可以用以下方式来检验异常点:             (1)3倍标准差原则,比如数据与均值的差异大于3倍标准差,可以粗略的定义为离群点;     (2)根据聚类算法,远离主要簇的小簇或者个别样本点可以视为异常值;     (3)基于分位数判断离群点,这里可以利用python或者R快速的计算判断。在这里,异常值被定义为小于Q1-K(Q3-Q1)或大于Q3+K(Q3-Q1)。Q1和Q3分别代表下四分位数和上四分位数,K一般取值1.5,代表中度异常,若K=3,可代表极度异常。     针对异常值,可以选择和缺失值一样的处理方法进行填充。     3.数据转化     对于非数值型的数据我们需要进行简单的转化,将其变为数值型,方便建模处理。主要分为定序型数据和定类型数据。             (1)针对定序型的数据,可以用序号进行编码,如客户对风险的理解层次,分为Good,Average,Bad三档,在进行序号编码时,可以根据大小关系进行赋值,如Good标记为3,Average标记为2,Bad标记为1。     (2)对于定类型的数据,可以采用one-hot编码,比如学历数据为高中,本科,硕士,那么高中表示为(1,0,0),本科表示为(0,1,0),硕士表示为(0,0,1)。     4.数据分箱     数据分箱是一种将连续值进行“分组”的方法。比如我有年龄变量连续数据,在构建模型时,发现将0-18岁归为1,19到55岁归为2,56岁以上归为3,会有更稳定的效果。一方面能够剔除掉极端数据的影响,比如年龄中若出现150的数值,也能够划分到第三个分箱;另一方面这种特征离散化的处理,能够简化模型,避免过拟合。             常用的分箱方法有:     (1)卡方分箱,卡方分                        
点赞 1
评论 0
全部评论

相关推荐

06-02 15:53
阳光学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务