面工程师岗位,第一次面,只想着能够去多准备一些,体验面这个岗位的感觉,虽然最好心有不甘告终,不过继续加油。 不过总的来看,面试前有准备永远比你没有准备要强好几倍。 因为面试过程看重的不仅是你的实习经历多久怎样,更多的是看重你对基础知识的掌握(即学习能力和逻辑),实际项目中解决问题的能力(做了什么贡献)。 先提一下奥卡姆剃刀:给定两个具有相同泛化误差的模型,较简单的模型比较复杂的模型更可取。以免模型过于复杂,出现过拟合的问题。 如果你想面数据挖掘岗必须先了解下面这部分的基本算法理论: 我们知道,在做数学题的时候,解未知数的方法,是给定自变量和函数,通过函数处理自变量,以获得解。而机器学习就相当于,给定自变量和函数的解,求函数。 类似于:这样:function(x)=y 求函数的方法,基于理论上来说,大部分函数都能找到一个近似的泰勒展开式。而机器学习,就是用数据去拟合这个所谓的“近似的泰勒展开式”。 实际面试时很看重和考察你的理论基础,所以一定一定要重视各个算法推导过程中的细节问题。这里主要介绍:logistic回归,随机森林,GBDT和Adaboost 1.逻辑回归逻辑回归从统计学的角度看属于非线性回归中的一种,它实际上是一种分类方法,主要用于两分类问题 Regression问题的常规步骤为: 1)利用了Logistic函数(或称为Sigmoid函数),函数形式为最常见的 1.png 2)代价函数J 2.png 3.png 4.png 5.png 3)使得J函数最小并求得回归参数(θ)
6.png 4)数据的拟合问题 欠拟合的解决方法是增加特征量。 但是一般情况下我们又不能确定哪些特征量该去掉,所以我们就选择正则化的方式解决过拟合。 7.png 2.决策树决策树这种算法有着很多良好的特性,比如说训练时间复杂度较低,预测的过程比较快速,模型容易展示。单决策树又有一些不好的地方,比如说容易over-fitting 这里首先介绍如何构造决策树: 但实际中我们通常对不纯度进行度量,即不纯度越小,则认为该特征的区分度越高。 8.png
9.png 10.png 上图10中得到多个子结点M1,M2的GINI或者熵后,一般通过加权平均的方法求M12; 那么增益就可以用M0-M12来表示 在决策树算法中,通过比较划分前后的不纯度值,来确定如何**。ID3使用信息增益作为不纯度,C4.5使用信息增益比作为不纯度,CART使用基尼指数作为不纯度。
(3)何时停止划分。 11.png 3.随机森林随机森林是一个包含多个决策树的分类器,构建过程如下: 2)那随机森林具体如何构建呢?有两个方面:数据的随机性选取,以及待选特征的随机选取。
12.png
此外,以决策树为基函数的提升方法称为提升树(boosting tree),包括GBDT,xgboost,adaboost,这里只主要介绍GBDT和xgboost。 先说说bootstrap, bagging,boosting 的含义。 该思想的应用有两方面:bagging和boosting 4.GBDT(Gradient Boost Decision Tree 梯度提升决策树)GBDT是以决策树(CART)为基学习器的GB算法,是迭代树,而不是分类树。 GBDT的核心就在于:每一棵树学的是之前所有树结论和的残差,这个残差就是一个加预测值后能得真实值的累加量。比如A的真实年龄是18岁,但第一棵树的预测年龄是12岁,差了6岁,即残差为6岁。那么在第二棵树里我们把A的年龄设为6岁去学习,如果第二棵树真的能把A分到6岁的叶子节点,那累加两棵树的结论就是A的真实年龄;如果第二棵树的结论是5岁,则A仍然存在1岁的残差,第三棵树里A的年龄就变成1岁,继续学习。 13.png 14.png 5.xgboostxgboos也是以(CART)为基学习器的GB算法**,但是扩展和改进了GDBT。相比GBDT的优点有: (1)xgboost在代价函数里自带加入了正则项,用于控制模型的复杂度。 (2)xgboost在进行节点的**时,支持各个特征多线程进行增益计算,因此算法更快,准确率也相对高一些。 |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|