如何出彩地回答面试中基础的机器学习算法

//2015年5月1日

//摘自http://blog.csdn.net/u013599826/article/details/45418707

//还有一个模块是关注机器学习在工业界运用时所做的优化算法;特别是协同过滤、关联规则


四、逻辑斯蒂回归

和普通线性回归相比,在类别变量的使用上有了突破。

实际上是一层人工神经网络,训练方式等同最大熵

广义线性模型:因变量不同分布:多重线性,逻辑斯蒂,泊松回归

优点:实现简单;分类时速度快;输出的是一个概率值(重要)

输出的是一个概率值:实际使用时往往不是取P>0.5的去做预测,可能是取top100等等。

缺点:线性模型不咋样;容易欠拟合;只处理二分类问题;需要大样本量;

问题是很多人不会用逻辑斯蒂回归,类别变量要处理成多个dummy变量就不说了。对连续变量该算法是有假设的。

假设了x与logit(P)呈线性关系。往往不符合此假设,实践中应考虑使用dummy变量,可获得非线性特性。

注意:往往考到最优化算法,梯度下降等等。对大数据量用随机梯度下降。还会考到逻辑回归算法的推导


五、朴素贝叶斯:

注意一:朴素贝叶斯如何处理连续特征?

假设服从高斯分布

注意二:如果中的某一项为0,则其联合概率的乘积也可能为0,即2中公式的分子为0,为了避免这种现象出现,一般情况下会将这一项初始化为1,当然为了保证概率相等,分母应对应初始化为2(这里因为是2类,所以加2,如果是k类就需要加k,术语上叫做laplace光滑, 分母加k的原因是使之满足全概率公式)。

朴素贝叶斯的优点:对小规模的数据表现很好;适合多分类任务;适合增量式训练(重要)。

适合增量式训练:数据流;一个算法不一定有权限访问之前的样本来进行训练,如处理spam。

缺点:对数据稀疏问题过于敏感(laplace光滑);假设特征间独立不相关(决策树可稍微解决一下)

其实朴素贝叶斯的缺点其他算法也解决不了,朴素贝叶斯的真正缺点是作为一个生成模型,它的准确率不高。

 

六、决策树:

搞清楚ID3,C4.5,随机森林的区别

ID3 :多叉树;递归过程;子集含有单个特征后返回调用处

C4.5:用信息增益率而不是信息增益选择特征,克服了选择偏向取值多的特征;剪枝;连续属性离散化;对缺失值的处理

决策树的优点:

计算量简单;可解释性强(指出树的深度往往过大,已经失去了可解释性);比较适合处理有缺失属性值的样本;能够处理不相关的特征;

缺点:

预测还是比较慢;容易过拟合(后续出现了随机森林,减小了过拟合现象);

 

七、KNN算法:

会要求写出算法步骤;KNN在实际使用上使用KD Tree

如何选择一个好的K值:如何选择一个最佳的K值,这取决于数据。一般情况下,在分类时较大的K值能够减小噪声的影响。但会使类别之间的界限变得模糊。一个较好的K值可通过各种启发式技术来获取,比如,交叉验证。另外噪声和非相关性特征向量的存在会使K近邻算法的准确性减小。

近邻算法具有较强的一致性结果。随着数据趋于无限,算法保证错误率不会超过贝叶斯算法错误率的两倍。对于一些好的K值,K近邻保证错误率不会超过贝叶斯理论误差率。

KNN算法的优点:

1. 思想简单,理论成熟,既可以用来做分类也可以用来做回归;

2. 可用于非线性分类;

3. 训练时间复杂度为O(n);

4. 准确度高,对数据没有假设,对outlier不敏感;

缺点:

1. 计算量大;

2. 样本不平衡问题(即有些类别的样本数量很多,而其它样本的数量很少);

3. 需要大量的内存;

重点是指出:

KNN最大的优点是,其特殊的算法思想,对某些问题特别适用。

维度灾难在KNN中的完美体现,不相关特征会严重影响KNN的准确性;

KNN中各种距离计算方式,非欧空间的距离计算公式。

SVM和KNN一起用,SVM得到的是数据全局的规律,而KNN关注数据local的规律


八、SVM:(肯定会考kernel)

要学会如何使用libsvm以及一些参数的调节经验(重要),另外需要理清楚svm算法的一些思路

按照道理,svm简单理论应该到此结束。不过还是要补充一点,即在预测时有:

那个尖括号我们可以用核函数代替,这也是svm经常和核函数扯在一起的原因。

SVM算法优点:

可用于线性/非线性分类,也可以用于回归;

正确率高,低泛化误差;

缺点:

对参数和核函数的选择比较敏感;

不能给出一个概率值;

原始的SVM只比较擅长处理二分类问题;

计算复杂度不高,但其实还是比较困难;

SVM如何选择kernel:线性核,径向基核,多项式核;多核学习;


九、Boosting:

主要以Adaboost为例,首先来看看Adaboost的流程图,如下:

Boosting算法的优点:

低泛化误差;

容易实现,分类准确率较高,没有太多参数可以调;

缺点:

对outlier比较敏感;

重点是当别人只能说出bagging,adaboosting时,你要提到 gradient boosting 算法

gradient boosting运用之GDBT:

GBDT(Gradient Boosting Decision Tree) 又叫 MART(Multiple Additive Regression Tree),好像在阿里内部用得比较多(所以阿里算法岗位面试时可能会问到),它是一种迭代的决策树算法,该算法由多棵决策树组成,所有树的输出结果累加起来就是最终答案。它在被提出之初就和SVM一起被认为是泛化能力(generalization)较强的算法。近些年更因为被用于搜索排序的机器学习模型而引起大家关注。

GBDT是回归树,不是分类树。其核心就在于,每一棵树是从之前所有树的残差中来学习的。

关于GDBT的介绍可以可以参考:GBDT(MART) 迭代决策树入门教程 | 简介


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值