All About Interview - Day 1

新开一个面试专题,争取在面试中不要掉链子~

今日份知识点串讲:

置信度、置信区间

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

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

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

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

假设检验

又称统计假设检验,是用来判断样本与样本、样本与总体的差异是由抽样误差引起还是本质差别造成的统计推断方法。常用的假设检验方法有Z检验、t检验、卡方检验、F检验等 。假设检验的基本思想是“小概率事件”原理,其统计推断方法是带有某种概率性质的反证法。

假设检验的两类错误:一般地,假设检验可能犯的错误有如下两类 :

①当假设H0正确时,小概率事件也有可能发生,此时我们会拒绝假设H0。因而犯了“弃真”的错误,称此为第一类错误。

②当假设H0不正确,但一次抽样检验未发生不合理结果时,这时我们会接受H0,因而犯了“取伪”的错误,称此为第二类错误,记β为犯第二类错误的概率。在实际应用中,一般原则是:控制犯第一类错误的概率,即给定α,然后通过增大样本容量n来减小B。这种着重对第一类错误的概率α加以控制的假设检验称为显著性检验 。

l1 l2的区别

L1是模型各个参数的绝对值之和

L2是模型各个参数的平方和的开方值

连续型变量特征工程:

1)特征归一化:线性放缩到[-1,1],放缩到均值0,方差1.按照特征的行处理数据。目的是在于样本向量在点乘运算或者其他核函数计算相似性时,拥有统一的标准。

2)  特征标准化:

0-1 标准化:

x(标准化)=(x-最小值)/(最大值-最小值)

按照列处理,通过求Z-score的方法,将样本的特征值转化到同一量纲下。

x(标准化)=(x-均值)/标准差

3)连续变量离散化(有监督离散方法:决策树):二值化处理 : 将细粒度的度量转化为粗粒度的度量,使得特征的差异化更大。取整: 

4) 特征多项式的交互:捕获特征之间的相关性

5) 数据分布的倾斜处理:

log变化: log 变化倾向与拉高那些落在较低范围内的自变量取值,压缩那些落在较高的幅度范围内的自变量的取值,log 变化能给稳定数据的方差,使得数据的分布接近正太分布并使得数据与分布的均值无关。Box_Cox 也有相似的效果,出现负数,使用常数进行偏移。

6) 缺失值处理

数据补全(用0替换 ,平均数替换 ,众数替换 ,预测模型替换),删除缺失行,不处理


离散型变量特征工程:

1) onehot 编码: 可以将离散特征扩展到欧式空间,离散特征的某个取值就对应欧式空间的某个点。特征之间的距离计算或相似度计算是非常重要的,常用的距离或者相似性计算都是在欧式空间的相似度计算,计算余弦相似性,基于的是欧式空间。onehot 会让距离的计算更加合理。

2 )dummy encoding哑变量编码

3 )label-encoding标签编码 ordinal-encoding

4 )count-Encoding频数编码 (可以去量纲化,秩序,归一化)

将分类变量替换为训练集中的计数,对线性和非线性算法都很有用,可以对异常值敏感,可以添加对数转化,适用于计数,用1替换看不见的变量,可能会发生冲突: 相同的编码,不同的变量。

5 )Target encoding二分类 用目标变量中的某一类的比例来编码

为每个分类变量提供唯一的数字ID,适用于非线性基于树的算法,不增加维度,

6 )Hash encoding :

避免及其稀疏的数据

基于书的方法不需要进行特征的归一化,例如随机深林,bagging和boosting等,基于参数或距离的模型,都需要归一化。

计算precision,recall,accuracy

Bias Vs Variance

RandomForest 与 GBDT 的异同:

相同点:

1)都由很多棵树组成

2)最终的结果是由多棵树一起决定的

不同点:

1)RandomForest中的树可以是分类树,也可以是回归树,而GBDT只能由回归树(CART)组成,这也说明GBDT各个树相加是有意义的

2)RandomForest中的树是并行生成的,而GBDT是串行生成的,GBDT中下一颗树要去拟合前一颗树的残差,所以GBDT中的树是有相关关系的,而RandomForest中的树的相关性依赖于Boostrap生成的样本子集的相关性

3)RandomForest 对异常值不敏感,GBDT敏感

4)RandomForest是通过降低模型方差来提高性能的,而GBDT是通过降低偏差来提高性能

GBDT 与 XGBOOST的比较:

1)传统的GBDT以CART树作为基分类器,而XGBOOST还支持线性分类器,此时的线性分类器自带正则项

2)传统的GBDT在优化时,只用到了loss function的一阶导信息,而XGBOOST对loss function做了Taylor展开,用到了二阶导信息

3)XGBOOST在loss function中引入了正则项,防止过拟合,正则项里包含叶节点数以及每个叶节点上的score的L2的平方和在计算划分增益时,如果gain < gamma, 不划分,gain> gamma,划分,这相当于决策树的预剪枝。 gamma是叶节点个数的参数

4)XGBOOST还借用了RandomForest中的列抽样思想,也支持在划分节点时,只考虑部分属性(现状sklearn中的GBDT也实现了列抽样)

5)XGBOOST可以自动学习出缺失值的分裂方向,论文中的default direction

(具体做法时,遍历的尝试将所有的缺失值分裂到所有方向{left or right},split and default directions with max gain)

6)XGBOOST实现了并行化,这个并行化是特征粒度上的并行化:划分节点时,每个特征并行计算,同时每个特征的划分节点也是并行计算(这是加速最猛的处理)

7)XGBOOST提出了block的概念,简单的说将排序后的特征值放在block中,以后划分特征的时候,只需要遍历一次即可,因为决策树在处理属性值时,需要将属性值先排序,这是最耗时的步骤,而block预先存储了排序的特征值,在后续过程中可以重复利用这个结构中的数据,同时,计算每个特征的划分增益可以并行处理了

ROC的横轴竖轴是什么

横轴:FPR 纵轴:TPR

交叉验证

CV是用来验证分类器的性能一种统计分析方法,基本思想是把在某种意义下将原始数据(dataset)进行分组,一部分做为训练集(train set),另一部分做为验证集(validation set),首先用训练集对分类器进行训练,在利用验证集来测试训练得到的模型(model),以此来做为评价分类器的性能指标.

SQL

union和union all均基于列合并多张表的数据,所合并的列格式必须完全一致。union的过程中会去重并降低效率,union all直接追加数据。union前后是两段select 语句而非结果集。

rank()排序相同时会重复,总数不会变 ,意思是会出现1、1、3这样的排序结果;

dense_rank() 排序相同时会重复,总数会减少,意思是会出现1、1、2这样的排序结果。

row_number() 则在排序相同时不重复,会根据顺序排序

hive和sql的区别

1.查询语言不同:hive是hql语言,mysql是sql语句;

2.数据存储位置不同:hive是把数据存储在hdfs上,而mysql数据是存储在自己的系统中;

3.数据格式:hive数据格式可以用户自定义,mysql有自己的系统定义格式;

4.数据更新:hive不支持数据更新,只可以读,不可以写,而sql支持数据更新;

5.索引:hive没有索引,因此查询数据的时候是通过mapreduce很暴力的把数据都查询一遍,也造成了hive查询数据速度很慢的原因,而mysql有索引;

6.延迟性:hive延迟性高,原因就是上边一点所说的,而mysql延迟性低;

7.数据规模:hive存储的数据量超级大,而mysql只是存储一些少量的业务数据;

8.底层执行原理:hive底层是用的mapreduce,而mysql是excutor执行器

随机森林的优缺点

优点:

a)随机森林算法能解决分类与回归两种类型的问题,表现良好,由于是集成学习,方差和偏差都比较低,泛化性能优越;

b)随机森林对于高维数据集的处理能力很好,它可以处理成千上万的输入变量,并确定最重要的变量,因此被认为是一个不错的降维方法。此外,该模型能够输出特征的重要性程度,这是一个非常实用的功能。

c) 可以应对缺失数据;

d)当存在分类不平衡的情况时,随机森林能够提供平衡数据集误差的有效方法;

e ) 高度并行化,易于分布式实现

f) 由于是树模型 ,不需要归一化即可之间使用

缺点:

a)随机森林在解决回归问题时并没有像它在分类中表现的那么好,这是因为它并不能给出一个连续型的输出。当进行回归时,随机森林不能够作出超越训练集数据范围的预测,这可能导致在对某些还有特定噪声的数据进行建模时出现过度拟合。

b)对于许多统计建模者来说,随机森林给人的感觉像是一个黑盒子——你几乎无法控制模型内部的运行,只能在不同的参数和随机种子之间进行尝试。

c) 忽略属性之间的相关性

RF的调参

通用的调参方法:

grid search 网格搜索。 sklearn 提供了相应的方GridSearchCV。即使用cross validation,对模型迭代的选用候选参数进行交叉验证,取结果最好的参数,优点:效果好,相当于穷举的思想,调参得到了候选参数里全局最优化结果。 缺点:计算复杂。 一般做竞赛的小项目选这个啦。

基于贪心的坐标下降搜索。即固定其他参数,把某个参数取得最好。这样迭代一遍得到最终结果。优点:计算量少,缺点:可能不是全局最优值、陷入局部最优解。

随机网格搜索:防止 网格搜索间隔过大而跳过最优值,而随机可以相对单个参数取到更多的值。

n_estimators越多结果更稳定(方差越小),所以只要允许内,数目越大越好, 但计算量会大增。只有这个参数对结果的影响是越大越好,其他参数都是中间取得最优值。

“分裂条件”(criterion)对模型的准确度的影响也不一样,该参数需要在实际运用时灵活调整,可取gini或者信息增益比?。

每棵树最大特征数(max_features) 一般用sqrt(总特征数)。

调整“最大叶节点数”(max_leaf_nodes)以及“最大树深度”(max_depth)之一,可以粗粒度地调整树的结构:叶节点越多或者树越深,意味着子模型的偏差越低,方差越高;同时,调整“分裂所需最小样本数”(min_samples_split)、“叶节点最小样本数”(min_samples_leaf)及“叶节点最小权重总值”(min_weight_fraction_leaf),可以更细粒度地调整树的结构:分裂所需样本数越少或者叶节点所需样本越少,也意味着子模型越复杂。

GBDT的核心就在于:每一棵树学的是之前所有树结论和的残差

Xgboost相比于GBDT来说,更加有效应用了数值优化,最重要是对损失函数(预测值和真实值的误差)变得更复杂。目标函数依然是所有树的预测值相加等于预测值。

损失函数如下,引入了一阶导数,二阶导数。

综合以上的解说,我们可以得到xgboost相比于GBDT的创新之处:

传统GBDT以CART作为基分类器,xgboost还支持线性分类器,这个时候xgboost相当于带L1和L2正则化项的逻辑斯蒂回归(分类问题)或者线性回归(回归问题)


numpy题目:Numpy 百题大冲关 【51-100】 - ucas_python - 博客园 (cnblogs.com)

机器学习基础知识点②:决策树、随机森林、GBDT与xgboost - 程序员大本营 (pianshen.com)

你可能感兴趣的:(All About Interview - Day 1)