1. 贝叶斯算法
先验概率的利用,比如拼写检测器的例子,足够说明
2. 决策树(Decision Trees)
熵比较高,内部混乱程度高,随机变量不确定性的度量
熵减少,信息增益大的分类方法,是我们追求的,根节点由此确定。至于熵为什么这么定义,为什么这样确定原则,需要深入学习下,这里不谈。
id3用信息增益,c4.5改良用了信息增益率,cart不用信息增益,用基尼系数
3.人工神经网络
没啥好说的,把输出值通过softmax,引入sigmoid转化成概率,然后就能得到分类结果。反向传播,https://blog.csdn.net/BlockheadLS/article/details/54293714
4. KNN算法
训练容易,分类难,离自己最近的k个里什么类多,就是什么,简单粗暴
5. 支持向量机(SVM)
记得这个决策边界的细节写法就ok
离边界距离最小点的这个距离的最大值,有点拗口喝喝!
其实支持向量机这个数学推导还是有点东西的,如果说笔试或者面试考数学细节,基本就是这个了,看仔细点有用的。
α等于零的就是非边界上(两个边界中间夹着决策边界)的点,而边界上的点才叫支持向量,对结果是没影响的。
soft margin就是考虑有些噪点,决策边界就比较怪
所以这样搞一下
用核函数的时候,先做内积,再做映射,会非常easy,实际上根本没有映射,高斯函数做的话,有时会有比较好的效果,核函数的选取就看先验知识如何。
据说公认svm是机器学习比较难的算法,好好理解下数学原理和推导,比较有意义。
说起softmargin,基本是必须要用到,因为不用到的话,明显有一大部分数据点的先验知识没有用到,这样是有问题的。还有没有别的利用方式呢?其实光softmargin也还是比较看个人经验感觉
6. xgboost
就不单独说boosting了,把集成算法的几个一起分析一下,boosting(平均)bagging(加权弱到强) stacking(多个模型聚合),ensemble learning 。
bagging并行,典型算法随机森林,并行训练决策树n个,随机方式为数据采样随机,特征选择随机,不然出来的树一样就没什么意思了,这样才能有更好的泛化能力。所以能处理高纬度数据,且不用特征选择。用knn集成没啥意思,不会提升泛化能力,还是树模型适合.
Boosting串行,弱学习器开始,后续的强学习器对前面预测的残差进行学习,之后求和。adaboosting调整权重,xgboosting后续再说
Stacking 第一阶段N个分类器,输出各自算法的结果第二阶段用第一阶段的结果做输入。对分类结果再分类,嵌套的感觉
Xgboost比较正常,看下api文档熟悉下,
AdaBoost即自适应增强。会用不同的分类器,然后加权,根据各个分类器的表现。同时在第一个分类器里错了的样本,赋予更大的样本权重(http://blog.sina.com.cn/s/blog_9784ae1d0101b6vd.html),在2分类器中看看。
Bagging与Boosting的区别:取样方式不同。Bagging采用均匀取样,而Boosting根据错误率取样。Bagging的各个预测函数没有权重,而Boosting是有权重的,Bagging的各个预测函数可以并行生成,而Boosing的各个预测函数只能顺序生成。