前一篇文章阐述了决策树分类算法不足的根本原因,可是我写得这么乱,想必比较难看明白吧。归结到一点,我觉得,就是不能把属性看成一个整体去处理,属性是属性值的一个集合,应当把集合中每个元素当成最终要处理对象。不管他了,有空再去整理下。
分类的算法有很多,较好的贝叶斯,朴素贝叶斯算法虽说大家都说他的那个属性之间独立性的假设,限制了其应用范围,降低了在特定情况下的准确率,但他确实是一个非常不错的算法,简单、高效,用于互联网最好。属性之间是否独立的影响到底是大还是小,有谁知道呢? 但这一点不足就足够研究者们在上面做文章了,有人提出将属性分组,组之间形成独立,有人提出找出属性之间的依赖关系,消除属性之间的冗余 等等。但似乎有一点忽略了:如果A属性的a1值与B属性的b1值相关,A的a2值却与B的值不相关,这怎么办呢?我觉得啊还是要将属性值作为一个独立的元素来处理。 朴素贝叶斯算法对每一个属性值对应都会有一个概率值,并没有把单个属性当成一个整体来计算。
knn算法:
人人都说knn ,也就是最近邻算法比较慢,需要搜索N个空间,要一个个去比,难道就不能这样?
给整个训练样本找一个标准的样本,然后计算出每个训练样本与标准样本的距离,然后把这些距离进行排序,那么在测试时,只要计算出测试样本与标准样本的距离,然后用折半查找,不就可以找到它的最近邻吗? 这样做应当在测试时不会很慢吧,O(logN)。N是训练样本的个数,这个数一般都不大的。
看似上面说法是对的,仔细一想,存在很大的错误:两点