这个系列是为了应对找工作面试时面试官问的算法问题,所以只是也谢算法的简要介绍,后期会陆续补充关于此
算法的常见面问题。
分类的概念就说了,分类一般分为两个阶段:学习阶段以及分类阶段;
常用的分类方法有:
1、决策树
决策树不需要任何领域的知识或者参数的设置,其可以处理高维数据,简单快速。
若分类的数据是连续的,则需要插入分裂点将数据离散化;树建立的过程中,需要按照一定的
规则选择分裂的属性,可以有信息的增益、增益率、基尼指数等等,不同的规则对应的决策树,
如前面三种分别对应ID3、C4.5、CART。
树的建立过程中或则建立后可能需要对树进行剪枝;树的剪枝分为先剪枝和后剪枝,先剪枝是
提前停止书的构造,而后剪枝是将完全生长的树减去子树。
以上的几种方法都只能适用于能贮存于内存的数据,若是数据量过大,这几种方法都不行
(可以考虑RainForest)!具体关于决策树可以见前面的博文。
http://blog.csdn.net/xwchao2014/article/details/47979167
2、贝叶斯方法(朴素贝叶斯以及贝叶斯信念网络)
这个方法前面博文中已经写得很详细了,可以参考下。其实也就是一个贝叶斯公式。。。
http://blog.csdn.net/xwchao2014/article/details/47977283
3、组合分类方法
两种常用的组合分类方法:装袋与提升
装袋:比如投票,每一票的权重都是相同的;
提升:与装袋不同的是其每一票的权重是不同的,比如AdaBoost;
当然还有就是也比较出名的随机森林(这个还没看,这个之后补上)!
关于AdaBoost可以看前面的博文,下面会给出链接:
http://blog.csdn.net/xwchao2014/article/details/47953353
4、基于规则的分类
使用IF-THEN规则分类
使用顺序覆盖算法的规则归纳
模型的评估与选择
交叉验证
自助法
5、后向传播分类
前馈网络
后向传播
6、SVM(支持向量机)
这个可以参考前面的博文http://blog.csdn.net/xwchao2014/article/details/47948063
或则网上有个SVM的三重境界写的蛮详细,可以看看;
7、使用频繁模式分类
以上的这些方法都是急切学习法,也就是说在分类数据前,已经建立好了模型,主要的工作
是在模型的建立上面;下面说一下惰性学习法;
惰性学习法——给定一个训练元祖,知识简单的存储它,并一直等待,知道给定一个
检验元组时才进行泛化;
1、基于K-近邻
计算所有数据与给定标号点的距离,离哪个近则归于哪一类(计算量太大);
2、基于案例的推理
其他的分类方法
1、遗传算法
交叉、变异、最合适的规则及后代
2、粗糙集算法
上近似以及下近似的概念;
3、模糊集的方法
允许处理模糊的、不精确的事实,是一种软分类
对于多分类的问题可以组合几个二分类!
半监督分类
1、自我训练
2、协同训练
3、主动学习
4、迁移学习