mysql索引抽密度_数据分析面经总结(持续更新中)

0.我们的公众号:扶摇就业,欢迎前往,更多面经内推,祝您早日拿到offer奥~

1.dbscan1)属于密度聚类方法

2)基于邻域来描述样本集的紧密程度,由密度可达关系导出最大密度相连的集合

3)过程: a. 定义距离和最小子样本集大小minPts b. 根据距离和minPts找到核心对象 c. 随机选择一个核心对象,找到核心可达的核心对象集合,形成聚类 d. 重复c过程,直到遍历所有核心对象

4)优点: a. 可用于任意形状的稠密数据 b. 对异常点不敏感(不属于任何核心对象的,一般认为噪声点) c. 对初始值不敏感(除了一个点同时属于两个核心对象的情况,这种情况下会采用先来后到进行点的归类)

5)缺点: a. 密度不均匀、聚类间距差距大,效果差 b. 相对于kmeans调k,dbscan需要调disntance和minPts,调参难度会大一些 c. 样本集大时,收敛慢,因为要做距离计算,可以建立kd tree改进

2.数据清理1)缺失值处理 a. 删(横删、竖删、成对删) b. 均值、中位数、众数填充 c. 建模填充 d. 映射到高维空间(如onehot)

2)异常值/噪声处理 a. 删 b. 上下截取(winsorzion) c. 转为缺失值,用缺失值处理的方法处理 d. 分箱 e. PCA等降维方法,去噪声字段 f. 聚类去噪声点 3)唯一性处理 a. 去重 b. 对于数据不一致情况,判断数据来源的权威性

4)量纲不一致 a. 标准化(最大最小、z标准化) b. 归一化(对文本、评分类数据)

5)格式异常

3.数据预处理过程有哪些1)缺失值处理:删、插​

2)异常值处理

3)特征转换:时间特征sin化表示

4)标准化:最大最小标准化、z标准化等

5)归一化:对于文本或评分特征,不同样本之间可能有整体上的差异,如a文本共20个词,b文本30000个词,b文本中各个维度上的频次都很可能远远高于a文本

6)离散化:onehot、分箱等

4.Linux基本命令1)目录操作:ls、cd、mkdir、find、locate、whereis等

2)文件操作:mv、cp、rm、touch、cat、more、less

3)权限操作:chmod+rwx421

4)账号操作:su、whoami、last、who、w、id、groups等

5)查看系统:history、top

6)关机重启:shutdown、reboot

7)vim操作:i、w、w!、q、q!、wq等

5.sql中null与‘ ’的区别1)null表示空,用is null判断

2)''表示空字符串,用=''判断

6.数据库与数据仓库的区别1)简单理解下数据仓库是多个数据库以一种方式组织起来

2)数据库强调范式,尽可能减少冗余

3)数据仓库强调查询分析的速度,优化读取操作,主要目的是快速做大量数据的查询 4)数据仓库定期写入新数据,但不覆盖原有数据,而是给数据加上时间戳标签

5)数据库采用行存储,数据仓库一般采用列存储

6)数据仓库的特征是面向主题、集成、相对稳定、反映历史变化,存储数历史数据;数据库是面向事务的,存储在线交易数据

7)数据仓库的两个基本元素是维表和事实表,维是看待问题的角度,比如时间、部门等,事实表放着要查询的数据

7.怎么向小孩子解释正态分布1)拿出小朋友班级的成绩表,每隔2分统计一下人数(因为小学一年级大家成绩很接近),画出钟形。然后说这就是正态分布,大多数的人都集中在中间,只有少数特别好和不够好

2)拿出隔壁班的成绩表,让小朋友自己画画看,发现也是这样的现象

3)然后拿出班级的身高表,发现也是这个样子的

4)大部分人之间是没有太大差别的,只有少数人特别好和不够好,这是生活里普遍看到的现象,这就是正态分布

8.男生点击率增加,女生点击率增加,总体为何减少?因为男女的点击率可能有较大差异,同时低点击率群体的占比增大。

如原来男性20人,点击1人;女性100人,点击99人,总点击率100/120。

现在男性100人,点击6人;女性20人,点击20人,总点击率26/120。

即那个段子“A系中智商最低的人去读B,同时提高了A系和B系的平均智商。”

9.并发事务带来的问题脏读:dirty read

一个事务修改来了数据未提交,另一个数据读取了未提交的数据。

丢失修改:lost to modify

两个事务都修改了数据之后,第一个数据修改就会丢失。如数据A=10,事务1:A=A-1;事务2:A=A-1,最后结果发现为19;

不可重复读:Unrepeatable ReadA事务在多次修改数据之间,B事务读取了数据,但是B在A事务执行之间读取的时候,可能会发现读取同一个数据的时候两次读到的不一样;

幻读:Phantom Read

幻读与不可重复读相同,但是是一个事务多次插入或者删除数据,另一个事务读取的时候会发现多了或者少了数据。

10.mysql联合索引联合索引是两个或更多个列上的索引。对于联合索引:Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分。例如索引是key index(a,b,c). 可以支持a 、 a,b 、 a,b,c 3种组合进行查找,但不支持 b,c进行查找 .当最左侧字段是常量引用时,索引就十分有效。

利用索引中的附加列,您可以缩小搜索的范围,但使用一个具有两列的索引 不同于使用两个单独的索引。复合索引的结构与电话簿类似,人名由姓和名构成,电话簿首先按姓氏对进行排序,然后按名字对有相同姓氏的人进行排序。如果您知 道姓,电话簿将非常有用;如果您知道姓和名,电话簿则更为有用,但如果您只知道名不姓,电话簿将没有用处。

11.假设检验参数估计和假设检验是统计推断的两个组成部分,它们都是利用样本对总体进行某种推断,但推断的角度不同。

参数估计讨论的是用样本估计总体参数的方法,总体参数μ在估计前是未知的。

而在假设检验中,则是先对μ的值提出一个假设,然后利用样本信息去检验这个假设是否成立。

12.置信度、置信区间置信区间是我们所计算出的变量存在的范围,之心水平就是我们对于这个数值存在于我们计算出的这个范围的可信程度。

举例来讲,有95%的把握,真正的数值在我们所计算的范围里。

在这里,95%是置信水平,而计算出的范围,就是置信区间。

如果置信度为95%, 则抽取100个样本来估计总体的均值,由100个样本所构造的100个区间中,约有95个区间包含总体均值。

13.协方差与相关系数的区别和联系协方差:

协方差表示的是两个变量的总体的误差,这与只表示一个变量误差的方差不同。如果两个变量的变化趋势一致,也就是说如果其中一个大于自身的期望值,另外一个也大于自身的期望值,那么两个变量之间的协方差就是正值。如果两个变量的变化趋势相反,即其中一个大于自身的期望值,另外一个却小于自身的期望值,那么两个变量之间的协方差就是负值。

相关系数:

研究变量之间线性相关程度的量,取值范围是[-1,1]。相关系数也可以看成协方差:一种剔除了两个变量量纲影响、标准化后的特殊协方差。

14.中心极限定理中心极限定理定义:

(1)任何一个样本的平均值将会约等于其所在总体的平均值。

(2)不管总体是什么分布,任意一个总体的样本平均值都会围绕在总体的平均值周围,并且呈正态分布。

中心极限定理作用:

(1)在没有办法得到总体全部数据的情况下,我们可以用样本来估计总体。

(2)根据总体的平均值和标准差,判断某个样本是否属于总体。

15.PCA为什么要中心化?PCA的主成分是什么?因为要算协方差。

单纯的线性变换只是产生了倍数缩放,无法消除量纲对协方差的影响,而协方差是为了让投影后方差最大。

在统计学中,主成分分析(PCA)是一种简化数据集的技术。它是一个线性变换。这个变换把数据变换到一个新的坐标系统中,使得任何数据投影的第一大方差在第一个坐标(称为第一主成分)上,第二大方差在第二个坐标(第二主成分)上,依次类推。主成分分析经常用减少数据集的维数,同时保持数据集的对方差贡献最大的特征。这是通过保留低阶主成分,忽略高阶主成分做到的。这样低阶成分往往能够保留住数据的最重要方面。但是,这也不是一定的,要视具体应用而定。

主成分分析的原理是设法将原来变量重新组合成一组新的相互无关的几个综合变量,同时根据实际需要从中可以取出几个较少的综合变量尽可能多地反映原来变量的信息的统计方法叫做主成分分析或称主分量分析,也是数学上处理降维的一种方法。主成分分析是设法将原来众多具有一定相关性(比如P个指标),重新组合成一组新的互相无关的综合指标来代替原来的指标。通常数学上的处理就是将原来P个指标作线性组合,作为新的综合指标。最经典的做法就是用F1(选取的第一个线性组合,即第一个综合指标)的方差来表达,即Va(rF1)越大,表示F1包含的信息越多。因此在所有的线性组合中选取的F1应该是方差最大的,故称F1为第一主成分。如果第一主成分不足以代表原来P个指标的信息,再考虑选取F2即选第二个线性组合,为了有效地反映原来信息,F1已有的信息就不需要再出现再F2中,用数学语言表达就是要求Cov(F1,F2)=0,则称F2为第二主成分,依此类推可以构造出第三、第四,……,第P个主成分。

16.数据分析的一般流程是什么基本流程

提出问题(明确分析目的)

准备数据

分析数据

洞察结论

详细流程

需求层

目标确定

数据层

数据获取

数据规整(清洗)

分析层

建模分析

模型验证

迭代优化

指标计算

数据可视化

描述性分析

探索性分析

输出层

数据分析报告

总结结论

提出建议并实施

17.什么叫数据分析?数据分析是指的是通过统计学方法对采集来的数据进行整理分析,从中提取有用信息并最终得出结论的过程。

某些学者认为,数据分析分为三类,入门级的描述性数据分析,其方法主要有对比、平均、交叉分析法。高级的探索、和验证数据分析,分析方法有主要有相关分析,回归分析,因子分析。这样的提法有它自己的道理。在我看来,实际上就两类:描述性统计分析和计算性数据分析。

18.spark用过吗?那你觉得和MR这两个计算框架中间产生的数据倾斜怎么处理1)数据倾斜指的是key的分布严重不均,如wordCount中,有80%的数据都是('aaa',1),这样大部分数据交给一个reduce,剩下的20%数据分散到不同的reduce处理 2)造成数据倾斜的原因: a. group by维度小,某值数量多 b. distinct 遇见某较多的特殊值 c. join 某个表比较小,导致key集中 d. join 两个大表,但是分桶的判断字段0值或空值过多,这些0值和控制都由一个reduce处理 3)mapreduce处理数据倾斜: a. 调优参数 i:set hive.map.aggr=true:在map中做部分聚集操作,效率更高但需要更多内存 ii:set hive.groupby.skewindata=true:生成查询会有两个MRjob,第一个job中map的输出结果会随机分布到reduce中,相同group by key可能分到不同reduce中;第二个job再根据预处理的结果按照groupby key分布到reduce中 b. 将倾斜的key分成多组,如'aaa'分成'aaa1'、'aaa2'等 c. 能先进行 group 操作的时候先进行 group 操作,把 key 先进行一次 reduce,之后再进行 count 或者 distinct count 操作 d. join 操作中,使用 map join 在 map 端就先进行 join ,免得到reduce 时卡住 e. 加个combiner函数,加上combiner相当于提前进行reduce,就会把一个mapper中的相同key进行了聚合,减少shuffle过程中数据量,以及reduce端的计算量 f. 大小表join:使用map join让小的维度表(1000条以下的记录条数) 先进内存。在map端完成reduce g. 大表join大表:把空值的key变成一个字符串加上随机数,把倾斜的数据分到不同的reduce上,由于null值关联不上,处理后并不影响最终结果 h. 空值情况:count distinct时,将值为空的情况单独处理,如果是计算count distinct,可以不用处理,直接过滤,在最后结果中加1。如果还有其他计算,需要进行group by,可以先将值为空的记录单独处理,再和其他计算结果进行union i. groupby 维度过小:采用sum() group by的方式来替换count(distinct)完成计算

19.随机森林1)随机森林原理:通过构造多个决策树,做bagging以提高泛化能力

2)随机方法包括:subsample(有放回抽样)、subfeature、低维空间投影(特征做组合,参考林轩田的《机器学习基石》)

3)有放回抽样,可以用包外样本做检验

4)也可以用OOB做特征选择,思路:

a. 如果一个特征有效,那么这个特征引入杂质会明显影响模型效果

b. 引入杂质会影响分布,所以更好的方式是对特征中的取值进行洗牌,然后计算前后模型的差异

c. 但是我们不想训练两个模型,可以利用OOB进行偷懒。把OOB中的数据该特征取值洗牌,然后扔进训练好的模型中,用输出的结果进行误差检验

20.在2.5亿个整数中找出不重复的整数,注,内存不足以容纳这2.5亿个整数。方案1:采用2-Bitmap(每个数分配2bit,00表示不存在,01表示出现一次,10表示多次,11无意义)进行,共需内存内存,还可以接受。然后扫描这2.5亿个整数,查看Bitmap中相对应位,如果是00变01,01变10,10保持不变。所描完事后,查看bitmap,把对应位是01的整数输出即可。

方案2:也可采用与第1题类似的方法,进行划分小文件的方法。然后在小文件中找出不重复的整数,并排序。然后再进行归并,注意去除重复的元素。

21.贝叶斯公式复述并解释应用场景1)P(A|B) = P(B|A)*P(A) / P(B)

2)如搜索query纠错,设A为正确的词,B为输入的词,那么: a. P(A|B)表示输入词B实际为A的概率 b. P(B|A)表示词A错输为B的概率,可以根据AB的相似度计算(如编辑距离) c. P(A)是词A出现的频率,统计获得 d. P(B)对于所有候选的A都一样,所以可以省去

22.一个网站销售额变低,你从哪几个方面去考量?1)首先要定位到现象真正发生的位置,到底是谁的销售额变低了?这里划分的维度有:

a. 用户(画像、来源地区、新老、渠道等)

b. 产品或栏目

c. 访问时段

2)定位到发生未知后,进行问题拆解,关注目标群体中哪个指标下降导致网站销售额下降:

a. 销售额=入站流量 * 下单率 * 客单价

b. 入站流量 = Σ各来源流量 * 转化率

c. 下单率 = 页面访问量 * 转化率

d. 客单价 = 商品数量 * 商品价格

3)确定问题源头后,对问题原因进行分析,如采用内外部框架:

a. 内部:网站改版、产品更新、广告投放

b. 外部:用户偏好变化、媒体新闻、经济坏境、竞品行为等

23.数据挖掘和数据分析之间的区别是什么?数据分析:针对个别属性的实例分析。提供有关属性的各种信息,如值范围,离散值及其频率,空值的发生,数据类型,长度等。

数据挖掘:重点关注聚类分析,异常记录检测,依赖关系,序列发现,多个属性之间的关系控制等。

24.根据要求写出SQL

表A结构如下:

Member_ID(用户的ID,字符型)

Log_time(用户访问页面时间,日期型(只有一天的数据))

URL(访问的页面地址,字符型)

要求:提取出每个用户访问的第一个URL(按时间最早),形成一个新表(新表名为B,表结构和表A一致)create table B as select Member_ID, min(Log_time), URL from Agroup byMember_ID

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值