机器学习面试题(转载)

原文链接:https://blog.csdn.net/sinat_30316741/article/details/79930604
原文链接:https://blog.csdn.net/Datawhale/article/details/81212235

以下大多数都是博主或者博主同事经历过的面试题哟~关于工作内容的就不写啦,一些基础面试题跟大家分享下

多看看面试题也能够让你快速了解自己的能力和短缺的地方哦~

本篇博客会持续更新,也希望大家多多提供一些面试题哦~

1、基础面试

(1) 自我介绍:emmm这个就不多讲啦,把大概背景讲清楚就可以

(2)自己做过的项目介绍:大家可以选择最能够体现自己能力的项目。可以从以下几个方面来讲:

a、简单介绍下项目

b、自己在项目中的职责及出色业绩(贡献)

c、遇到了哪些问题,如何解决的(如果问题还没解决,就还是不要说啦哈哈)

d、在这个项目中学到了什么,比如业务与分析相结合、编程能力、团队合作能力等

(3)解决问题最重要的能力是哪些?

(4)我在项目中总结了哪些技能点?

(5)你在数据挖掘中的优势?

(6)你理解什么是数据挖掘?

2、数据分析与挖掘相关问题(括号内表示被问到的次数哦,有些会提供参考答案,但还是希望大家自己多多研究喔)

以下序号是根据更新状态来的,所以每个板块的序号不对应

一、数据分析与挖掘方面:

(1)为什么会产生过拟合,有哪些方法可以预防或克服过拟合?(5次)

所谓过拟合(Overfit),是这样一种现象:一个假设在训练数据上能够获得比其他假设更好的拟合,但是在训练数据外的数据集上却不能很好的拟合数据。此时我们就叫这个假设出现了overfit的现象。
过拟合产生的原因:出现这种现象的主要原因是训练数据中存在噪音或者训练数据太少。
解决方法:
1、 增大数据量
2、 减少feature个数(人工定义留多少个feature或者算法选取这些feature)
3、 正则化(留下所有的feature,但对于部分feature定义其parameter非常小)
4、 交叉验证,重采样评价模型效能,K折交叉验证
5、保留一个验证数据集检验

注意:几乎所有的集成模型都是为了防止过拟合的,他们的思想都可以拿来说

(2)无监督和有监督算法的区别?

监督学习(supervised learning):通过已有的训练样本(即已知数据以及其对应的输出)来训练,从而得到一个最优模型,再利用这个模型将所有新的数据样本映射为相应的输出结果,对输出结果进行简单的判断从而实现分类的目的,那么这个最优模型也就具有了对未知数据进行分类的能力。包括所有的回归算法分类算法,比如线性回归、决策树、KNN、SVM等
无监督学习(unsupervised learning):我们事先没有任何训练数据样本,需要直接对数据进行建模。包括所有的聚类算法,比如k-means 、PCA、 GMM等

(3)tree-base模型是否了解,决策树和随机森林区别是什么,树节点的分裂都有哪些策略(即节点的选择)

直接说随机森林是很多棵决策树组成的,一定程度上能避免过拟合问题。
树节点分裂:ID3 : 以信息增益大小来建立。

  • C4.5 : 以信息增益率大小来建立。
  • CART : 以基尼系数大小来建立。
    决策树的数据最好是离散型的吧?
    ID3,只处理离散型的,C4.5可以直接处理连续值和离散值,CART是分类回归都可以做的决策树,支持所有类型

(4)tf-idf的公式

TFIDF实际上是:TF * IDF
词频(term frequency,TF)指的是某一个给定的词语在该文件中出现的频率。
逆向文件频率(inverse document frequency,IDF)是一个词语普遍重要性的度量。某一特定词语的IDF,可以由总文件数目除以包含该词语之文件的数目。
这边的例子以上述的数学公式来计算。词频 (TF) 是一词语出现的次数除以该文件的总词语数。假如一篇文件的总词语数是100个,而词语“母牛”出现了3次,那么“母牛”一词在该文件中的词频就是3/100=0.03。一个计算文件频率 (IDF) 的方法是文件集里包含的文件总数除以测定有多少份文件出现过“母牛”一词。所以,如果“母牛”一词在1,000份文件出现过,而文件总数是10,000,000份的话,其逆向文件频率就是 lg10,000,000 / 1,000)=4。最后的TF-IDF的分数为0.03 * 4=0.12。

(5)维度怎么扩展?

比如时间,那我可能取分段区间。可能单取年份,可能取距离当今多久

(6)特征怎么选择?

确定方差最大化,或者通过分类,寻找特征差异最大化。其他就是有具体看业务,要跟业务相结合,有统计性的(比如用tfidf转换行为轨迹),有直接性的(教育、性别等)

(7)随机森林里面用的哪种决策树?

参数可选gini或者entropy,不用c4.5,因为会剪枝,随机森林不需要剪枝
https://blog.csdn.net/zhixiongzhao/article/details/72487284

(8)对数据分析中关键指标的定义?

我回答:可解释的指标都是可以的。比如:用户网站点击率,可以定义为单天的点击次数,也可以定义为一个月的平均点击次数,关键看可解释业务性

(9)逻辑回归与线性回归的区别?

逻辑回归:迭代求解

线性回归:直接求解

(10)机器学习是方法,数据挖掘是应用

(11)最大似然估计和最小二乘法的区别

http://blog.csdn.net/lu597203933/article/details/45032607

(12)假设一个房间有5个婴儿,性别2男3女,现在加入一个性别未知的婴儿。此时从这6个婴儿中,随机抽取一个,发现是男孩子。问后来加入婴儿性别是男孩子的概率多大?0.6

(把题目换成,很容易想到贝叶斯–

 假设一个房间有5个婴儿,性别2男3女,现在加入一个性别未知的婴儿(性别分布为男p女1-p)。此时从这6个婴儿中,随机抽取一个,发现是男孩子。问后来加入婴儿性别是男孩子的概率多大?(用p表示)))

具体解题步骤:参考链接https://zhidao.baidu.com/question/264525694500522765.html

(13)例如:一座别墅在过去的 20 年里一共发生过 2 次被盗,别墅的主人有一条狗,狗平均每周晚上叫 3 次,在盗贼入侵时狗叫的概率被估计为 0.9,问题是:在狗叫的时候发生入侵的概率是多少?贝叶斯公式P(A∩B) = P(A)*P(B|A)=P(B)*P(A|B)。如上公式也可变形为:P(B|A) = P(A|B)*P(B) / P(A)。

我们假设 A 事件为狗在晚上叫,B 为盗贼入侵,则以天为单位统计,P(A) = 3/7,P(B) = 2/(20365) = 2/7300,P(A|B) = 0.9,按照公式很容易得出结果:P(B|A) = 0.9(2/7300) / (3/7) = 0.00058

(14)采用EM算法求解的模型有哪些?为什么不用牛顿法或者梯度下降法?

一般有混合高斯、协同过滤、k-means。算法一定会收敛,但是可能会收敛到局部最优。求和的项数会随着隐变量的数目指数上升,会给梯度计算带来麻烦。EM算法是一种非梯度优化算法。

(15)用EM算法推导解释K-means

k-means算法是高斯混合聚类在混合成分方差相等,且每个样本仅指派一个混合成分时候的特例。k-means算法与EM算法的关系是这样的:
· k-means是两个步骤交替进行:确定中心点,对每个样本选择最近中心点–> E步和M步。
· E步中将每个点选择最近的类优化目标函数,分给中心距它最近的类(硬分配),可以看成是EM算法中E步(软分配)的近似。
· M步中更新每个类的中心点,可以认为是在「各类分布均为单位方差的高斯分布」的假设下,最大化似然值;

(16)如何进行特征选择?

https://www.zhihu.com/question/28641663/answer/41653367

(17)SVM和LR的区别

http://blog.csdn.net/yan456jie/article/details/52524942

(18)逻辑回归为什么用sigmod,不用其他函数?

答:1、sigmod 本身的性质:

a、输出范围有限,数据在传递的过程中不容易发散。
b、输出范围为(0,1),所以可以用作输出层,输出表示概率。
c、抑制两头,对中间细微变化敏感,对分类有利。

2、之所以LR 用sigmod,不是因为LR 选择了 sigmod ,而是用 指数簇分布和 最大熵原理 推导出来的形式,就是这个样子,后来起名叫sigmod

(19):逻辑回归的系数想要都是正数,应该怎能做?

答:比如你训练好的模型是y = x1 - x2,这时候x2的系数是负数,然后你只要把样本x2这个维度的数字全取-j就好了,重新再次训练就全是正数了(大牛说这是一个sb操作)

(20):样本不平衡处理方法?(好多次)

答:

a、负样本少,就复制到一定比例

b、或者把正样本删除一部分

c、分段逐一训练(举例:正样本10000,负样本1000,将正样本随机分成10份,每份1000,然后拿着负样本的1000与正样本的每一份进行训练,最后进行融合选择)

d、模型参数调权重(模型里面有个参数可以调整样本权重)

e、交叉验证

f、根据样本随机构造新的样本

(21)连续值转换为离散值,有什么办法,比如年龄?(好多次)

答:

根据业务知识区分
根据pandas下面qcut和cut方法进行等频或等宽处理
风控中 可以根据woe和iv 或者卡方检验
用聚类来做最优化尺度(没试过)
(22)现金贷团伙作案,你有什么算法或方法去识别

答:从规则角度上讲:可以从ip,通讯录共同联系人,设备指纹等信息上分析

从模型角度讲:根据上面的特征,可以通过聚类来分群

(23)关于风控的指标?woe和iv公式,评分卡原理

(24)假如现在有一个数据分析需求,你会怎么做?先跟需求方确认需求(需要达成一致),然后确定元数据缺失情况,确定缺失原因和补救方法,然后进行数据提取,分析,分析过程中可跟需求方保持沟通,然后分析完后将结果呈现给需求方,再次与需求方沟通,增删改查。

(25)假如现在有一个项目需要你建模,你会怎么做?回答建模过程即可

(26)逻辑回归的结果 0.8表示什么?这个面试官是个傻逼吗,直接这么问,先问清楚是几分类,然后问这个0.8是在哪个index上的。

(27)你在建模过程中遇到过什么困难?(很多次)样本不平衡问题(然后回答解决办法),样本过拟合问题(然后回答解决办法),准确率不高(结合更换特征,模型调参,换模型等思路回答)

(28)Bagging和Boosting的区别:

参考链接:https://blog.csdn.net/shaiguchun9503/article/details/82700036

(29)某人对一目标进行射击,每次命中率都是0.25,若使至少命中1次的概率不小于0.75,至少应射击几次?

解:设应该射击n次,则在这n次射击中,命中的次数用X表示,则
X服从B(n,0.25)的二项分布,则至少一次命中的概率
P=1-都不中的概率=1-0.75^n
解1-0.75^n>=0.75 得n>=5.所以应该射击5次

二、数据分析方面:

(1)分析原因,某产品6月份的平均日活率比7月多很多,请问你会从哪几方面分析?

回答 思路+方法(以某个信用app为例)

答:1、活动原因

(1)分析参与活动的用户的后续行为

(2)分析未参与活动的用户的同一时间的行为

(3)对比以上两数据趋势,如果发现(1)和(2)有明显不同的趋势(如1骤降),那可能是活动的原因

2、功能改版

(1)与往期用量对比

3、当期贷款需求变化(不好定,需要专业分析)

4、历史同期趋势对比(多个因素组合,可能说服力不强,但是大致可以看下趋势)

(2)流失用户怎么定义的?如何用数据做正确定义?

答:第一种方法:拐点理论:根据用户留存判断,即到多少天之后,留存用户比例开始稳定,则这一段时间就是 流失用户周期。用户回访率拐点(用户回访率 = 回访用户数 ÷ 流失用户数 × 100%)

其他:

a、https://www.zhihu.com/question/68029067 此种方法可用于预测 一个用户是否即将成为流失用户

(3)用户生命周期怎么定义?

答:参考链接:https://blog.csdn.net/k7Jz78GeJJ/article/details/79434904

(4)资源位推荐,假如一个app首页,有一个九宫格,你知道每个九宫格的点击率,付费用户数,付费金额等相关指标,你会怎么做推荐?

答:首先需要关注评价指标,其次如果某一个九宫格的付费转化率显著高于其他的格子,则将用户往这个格子推。其他情况另议。(没有准确答案)

(5) 以淘宝为例,怎么分析一个店铺运营了2-3年,仍然没有很多流量(浏览量,成交量等指标都不高),前提是你可以拿到淘宝的所有数据?

答:1. 是否用了淘宝的运营手段(买流量、参与淘宝活动)

  1. 当前店铺的曝光量是多少,处于淘宝整个板块的哪一列

  2. 同类型店铺比较分析,包括款式,质量,店铺评价,好评率,价格,上新频率,客服响应速度等等

……

主要可以尝试控制变量,应该先罗列出全部的主要影响因素,控制住其他变量差不多的情况下,比入看看相似店铺的流量是否受价格影响比较大。

接下去延伸一下新的问题,刚刚提到了控制变量,假变量是 流量分发、价格、店铺外观、店铺年龄、好评率、店铺产品丰富程度 等。

在实际问题中控制变量会碰到以下问题——

  1. 外观、产品丰富程度 等主观因素如何量化评价;

  2. 这么多因素,一旦控制变量进行筛选,很可能与你店铺相似的一个也没有或者只有少量几个。这时候统计分析价值不大。

引申:

如何判断是不是价格问题导致别人不买你的商品?

答:控制变量:在保持同样品牌竞争力、功能、人工交流的情况下,观察顾客买什么。

面试官给的回答:同一个产品,如果一个用户在高价链接的页面看了又看,看了很久,结果去价格低的那个链接买了,基本说明是价格问题。

(6)数据组给定一批用户供运营做活动,结果是 这批用户的充值金额提升10%,请问如何判断是运营的功劳还是数据分析的功劳,怎么处理其他非特定用户(是不是 其他非特定用户 做相应活动,也能起到一定效果呢?是否需要一起做活动),(即在问需要控制哪些因素)

未想好怎么回答

三、数据库方面:

(1)有什么sql调优的手段,了解多少

索引、条件先后等等,具体可自行百度sql调优方法

(2)sql,多个班级,取不同班级的每个班级的前3名(3次)

sql是rownumber:

select * from

(select row_number() over (partition by class order by score desc) 排名,* from sc) t

where 排名<=3 order by class asc,score desc

mysql用定义变量的方式:

SELECT * from (

SELECT @x:=if(b.cla=@y,@x+1,1) rn,@y:= b.cla , b.* from
(SELECT @x:=0,@y:=‘’ )a
JOIN
(SELECT * from class order by cla,grade desc )b ) d where d.rn<4

(3)数据库时间转换函数

dataformat是时间转字符串 unix_timestamp字符串时间转时间戳 str_to_date字符串转时间

(4)当出现数据重复时,用最简单的方法查询出哪些数据重复

数据量小时,group by count(1)大于1的
数据量大时,用rownumber(针对sql)

(5)什么情况下索引会失效,假设字段A加了索引?或者 了解mysql的索引吗?(2次)

只要索引的字段A不是 A >,<,=之类的,都会失效。比如两个字段 A 和 B,A上有索引,查询条件如果是 where A = < > XXX就不会失效,即失效的意思是不用索引,不是异常等问题。当然,还有别的,,,比如索引不能这么写 where B = xxx and A = 0,因为索引字段要优先被查找。(只有 [><]?= 这种模式)
而且>和<也只能在树索引等有序索引上起作用,如果索引是hash索引,就只能用=

参考链接:https://www.cnblogs.com/shynshyn/p/7887742.html

(6)三张表,查询部门薪水最高的?

#方法一
SELECT dname,sum(salary) s from (
SELECT a.*,b.salary from (
SELECT n.id,n.name,d.dname from ntable n ,dtable d where n.dpid = d.did )a,stable b where a.id = b.id)c GROUP BY dname ORDER BY s desc
#方法二 left join
SELECT dname,sum(salary) s from (
SELECT n.id,n.name,d.dname,s.salary from ntable n LEFT JOIN dtable d on n.dpid = d.did LEFT JOIN stable s on n.id = s.id)
a GROUP BY dname ORDER BY s desc
或者
SELECT d.dname,sum(s.salary)s from ntable n LEFT JOIN dtable d on n.dpid = d.did LEFT JOIN stable s on n.id = s.id
GROUP BY d.dname ORDER BY s desc
#方法三 inner join
SELECT d.dname,sum(s.salary) s FROM (ntable n INNER JOIN dtable d ON n.dpid =d.did) INNER JOIN stable s ON n.id=s.id GROUP BY d.dname ORDER BY s desc
#方法四 join
SELECT d.dname,sum(s.salary) s FROM (ntable n JOIN dtable d ON n.dpid =d.did) JOIN stable s ON n.id=s.id GROUP BY d.dname ORDER BY s desc

(7)mysql 关于join的用法与区别(left join right join 等)

举个例子说明区别就可以

(8)主键重复插入更新

replace into 或者on duplicate key update

https://www.cnblogs.com/chenmh/p/5392540.html

(9)数据库的外建的作用是什么?

联表查询

(10)什么是左连接,右连接?

Left join right join,具体可自行百度

数仓方面:

(11)数仓的过程,了解数仓吗?数仓用什么搭建的?(2次)

关于数仓的问题,之后还会有个专题详解哦

(12)Etl的缓慢数据维

http://blog.csdn.net/ye1142262478/article/details/58589078

四、数据开发方面:

(1)有序数组查找用什么方法?

二分查找,时间复杂度log2n,(是以2为底,n的对数)

(2)list和tuple的区别

List是可变对象,tuple是不可变,tuple的性能好,效率高

(3)为什么要使用装饰器

http://python.jobbole.com/85393/

算法面试常见问题

1.模型融合方法有哪些
主要有以下几个:

  • Voting
  • Averaging
  • Bagging
  • Boosting
  • Stacking

2.特征选择方法
主要有:

  • 去掉取值变化小的特征
  • 递归特征消除法
  • 基于学习模型的特征排序
  • 线性模型和正则化

3.学习项目的一般步骤
主要包括:

  • 问题抽象,模型选择;
  • 数据获取;
  • 特征工程(数据清洗,预处理、采样等);
  • 模型训练,调优;
  • 模型验证、误差分析;
  • 模型融合;
  • 模型上线。

4.多参数调参方法

网格化搜索: 对于多个参数,首先根据经验确定大致的参数范围。然后选择较大的步长进行控制变量的方法进行搜索,找到最优解后;然后逐步缩小步长,使用同样的方法在更小的区间内寻找更精确的最优解。

5.如何解决数据不平衡问题

(1)训练集重新采样

有两种方法使不平衡的数据集来建立一个平衡的数据集——欠采样和过采样:

欠采样是通过减少丰富类的大小来平衡数据集,当数据量足够时就该使用此方法。通过保存所有稀有类样本,并在丰富类别中随机选择与稀有类别样本相等数量的样本,可以检索平衡的新数据集以进一步建模;

相反,当数据量不足时就应该使用过采样,它尝试通过增加稀有样本的数量来平衡数据集,而不是去除丰富类别的样本的数量。通过使用重复、自举或合成少数类过采样等方法(SMOTE)来生成新的稀有样本。

(2)设计适用于不平衡数据集的模型

通过设计一个代价函数来惩罚稀有类别的错误分类而不是分类丰富类别,可以设计出许多自然泛化为稀有类别的模型。如下图所示,加大稀有类别分类错误时的惩罚:

常见机器学习算法优缺点

决策树
一、 决策树优点
1、决策树易于理解和解释,可以可视化分析,容易提取出规则。

2、可以同时处理标称型和数值型数据。

3、测试数据集时,运行速度比较快。

4、决策树可以很好的扩展到大型数据库中,同时它的大小独立于数据库大小。

二、决策树缺点
1、对缺失数据处理比较困难。

2、容易出现过拟合问题。

3、忽略数据集中属性的相互关联。

4、ID3算法计算信息增益时结果偏向数值比较多的特征。

三、改进措施
1、对决策树进行剪枝。可以采用交叉验证法和加入正则化的方法。

2、使用基于决策树的combination算法,如bagging算法,randomforest算法,可以解决过拟合的问题

三、应用领域
企业管理实践,企业投资决策,由于决策树很好的分析能力,在决策过程应用较多。

KNN算法
一、KNN算法的优点

1、KNN是一种在线技术,新数据可以直接加入数据集而不必进行重新训练

2、KNN理论简单,容易实现

二、KNN算法的缺点
1、对于样本容量大的数据集计算量比较大。

2、样本不平衡时,预测偏差比较大。如:某一类的样本比较少,而其它类样本比较多。

3、KNN每一次分类都会重新进行一次全局运算。

4、k值大小的选择。

三、KNN算法应用领域
文本分类、模式识别、聚类分析,多分类领域

支持向量机(SVM)
一、 SVM优点
1、解决小样本下机器学习问题。

2、解决非线性问题。

3、无局部极小值问题。(相对于神经网络等算法)

4、可以很好的处理高维数据集。

5、泛化能力比较强。

二、SVM缺点
1、对于核函数的高维映射解释力不强,尤其是径向基函数。

2、对缺失数据敏感。

三、SVM应用领域
文本分类、图像识别、主要二分类领域

AdaBoost算法
一、 AdaBoost算法优点
1、很好的利用了弱分类器进行级联。

2、可以将不同的分类算法作为弱分类器。

3、AdaBoost具有很高的精度。

4、相对于bagging算法和Random Forest算法,AdaBoost充分考虑的每个分类器的权重。

二、Adaboost算法缺点
1、AdaBoost迭代次数也就是弱分类器数目不太好设定,可以使用交叉验证来进行确定。

2、数据不平衡导致分类精度下降。

3、训练比较耗时,每次重新选择当前分类器最好切分点。

三、AdaBoost应用领域
模式识别、计算机视觉领域,用于二分类和多分类场景

朴素贝叶斯算法
一、 朴素贝叶斯算法优点
1、对大数量训练和查询时具有较高的速度。即使使用超大规模的训练集,针对每个项目通常也只会有相对较少的特征数,并且对项目的训练和分类也仅仅是特征概率的数学运算而已。

2、支持增量式运算。即可以实时的对新增的样本进行训练。

3、朴素贝叶斯对结果解释容易理解。

二、朴素贝叶斯缺点
1、由于使用了样本属性独立性的假设,所以如果样本属性有关联时其效果不好。

三、朴素贝叶斯应用领域
文本分类、欺诈检测中使用较多

Logistic回归算法
一、logistic回归优点
1、计算代价不高,易于理解和实现

二、logistic回归缺点
1、容易产生欠拟合。

2、分类精度不高。

三、logistic回归应用领域
用于二分类领域,可以得出概率值,适用于根据分类概率排名的领域,如搜索排名等。

Logistic回归的扩展softmax可以应用于多分类领域,如手写字识别等。

人工神经网络
一、 神经网络优点
1、分类准确度高,学习能力极强。

2、对噪声数据鲁棒性和容错性较强。

3、有联想能力,能逼近任意非线性关系。

二、神经网络缺点
1、神经网络参数较多,权值和阈值。

2、黑盒过程,不能观察中间结果。

3、学习过程比较长,有可能陷入局部极小值。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值