数据挖掘分析相关面试题(亲身经历),持续更新中(最新一次为20210209)

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

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

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

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/(20*365) = 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)连续值转换为离散值,有什么办法,比如年龄?(好多次)

答:

  1. 根据业务知识区分
  2. 根据pandas下面qcutcut方法进行等频或等宽处理
  3. 风控中 可以根据woeiv 或者卡方检验
  4. 用聚类来做最优化尺度(没试过)

(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次

(30)KS指标、混淆矩阵、roc曲线、AUC的定义。

参考链接:https://blog.csdn.net/sinat_30316741/article/details/105491746

(31)申请评分卡原理和开发,包括计算公式等。

见 自己整理好的评分卡相关文档

二、数据分析方面:

(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. 是否用了淘宝的运营手段(买流量、参与淘宝活动)

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

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

……

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

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

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

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

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

引申:

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

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

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

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

可以通过做A/Btest来判断,一组是运营根据经验获取的名单,一组是根据模型跑出来的名单,然后分别做相同的营销活动,分析活动结果。

(7)如何做A/Btest,需要注意哪些东西?

(8)增长黑客模型(AARRR)、AIPLA模型、RFM模型

(9)如果老板需要你针对现在平台(高铁app)的数据区分 不同层级的用户,做不同的营销,你会怎么做(其实可以转换为用户画像)?

第一种方法:结合RFM模型(最近一次购买的时间、购买频率、金额)和聚类计算得出不同族群的用户特征,然后根据不同客户群体做不同的营销。

参考链接:https://blog.csdn.net/wanglingli95/article/details/79444432

第二种:根据用户基础信息、购票记录、金额、频次以及其他版块的交易情况特征制作用户画像

(10)指标体系建立过程中遇到的问题:

回答:(1)业务比较复杂,指标难以统一(2)业务部门经常会比较数据,但由于数据口径不一致,经常会出现数据不一致的情况,然后业务部门就拿着2份数据找分析人员找原因。(3)推进比较困难

(11)某个端口某渠道的Roi异常怎么判断?整体的步骤。

回答:由于roi由收入和成本组成,在保障成本无异常的情况下,我们主要分析收入差异,根据业务特性,而收入由人数和报名单收入造成,首先从用户登陆情况发现用户的登陆率跟往常比下降幅度比较大。收入主要由岗位类目单价和报名人数决定,为了确认当天的岗位是否也带来一定影响,分析当天的老用户报名和收入情况,发现无异常,于是可以判断为roi主要由用户的质量引起。

(12)如果两个业务部门的指标不一样,但是只能统一一套,应该怎么做?

回答:首先沟通是否能能统一指标,尝试说服其中一方,如果确定无法统一,则统一指标做一套,再分别用各自的指标做一套。

三、数据库方面:

(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)hive数据倾斜有哪几种原因造成,解决方法是什么?

参考链接:https://blog.csdn.net/qq_36330643/article/details/82320194

数仓方面:

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

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

(12)Etl的缓慢数据维

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

(13)hive有哪些udf函数,作用:

UDF(user-defined function)作用于单个数据行,产生一个数据行作为输出。(数学函数,字符串函数)

UDAF(用户定义聚集函数 User- Defined Aggregation Funcation):接收多个输入数据行,并产生一个输出数据行。(count,max)

UDTF(表格生成函数 User-Defined Table Functions):接收一行输入,输出(explode)

UDF:返回对应值,一对一   | UDAF:返回聚类值,多对一 | UDTF:返回拆分值,一对多

(14)数据倾斜的原理

回答:在进行shuffle的时候,必须将各个节点上相同的Key拉取到某个节点上的一个task来进行处理,比如按照key进行聚合或者join操作。如果某个key对应的数据量特别大的话,会发生数据倾斜。比如大部分key对应的10条数据,但个别key却对应了100万条数据,那么大部分task会只分配到10条数据,而个别task可能会分配了100万数据。整个spark作业的运行进度是由运行时间最长的那个task决定的。
因此出现数据倾斜的时候,spark作业看起来会运行得非常缓慢,甚至可能因为某个task处理的数据量过大导致OOM。(其他博客看的)

四、数据开发方面:

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

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

(2)list和tuple的区别

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

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

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页