分类算法可以用最基本的中学数学的求值问题这样表示:
已知:一个数据集合Data,一个类别集合Class,对每一个data属于Data,存在标签class属于Class
求:一个新的数据data2,求最佳的class2
1,最直接的算法是看看data2是否在Data中,如果在,就直接可以求出class2了。
然而机器学习的关键并不是总结,而是预测,大量出现的data2是不存在于已知集合Data中的。
2,那就蒙一个,从Class中随便选一个
这是一种很不错的办法,但是也很有问题,因为它没有利用到已知数据集合Data的信息,所以这种算法也很弱智了。
3,利用已知集合Data中的一些信息,因为Data中每一个数据都有一个标签,我们可以求出出现数目最多的标签类别,赋值给data2。
这是一个很大的进步,因为已经意识到利用已知信息了,但是这还不够,我们只利用了Data的标签类别,但是没有用到Data数据本身。
要用到Data数据本身,需要做一些假设,如果不做任何假设的话,我们想象不到Data数据本身会有什么用。
4,假设相近的数据会有相近的类别,也就是说相近的数据类别相同的可能性更大。
这种想法很直观。由此,我们要首先定义一个类别的度量,然后在Data中只要找到与data2最相近的data,类别赋值即可。这就是最近邻算法。
可是最近的会不会具有代表性?也许这个最近的只是一次偶然的标识此类别呢?虽然这种可能性很小。
5,一样的假设,相近的数据会有相近的类别,选取k个最相近的data,看看哪个类别最多,赋值即可。
这就是k近邻,从概率论的角度来说,k个数均值的方差要小于1个数的方差。选用适当的k值,可以提高预测的稳定性。
然而,是不是可以增加一些新的假设呢?
6,假设数据时线性可分的,即可用一个超平面把数据分成两份,一边是类C,一边不时类C
这就是线性判别分析,后来提出的感知器算法,就可以很好解决这个问题。
然而假设为线性可分很多时候并不合适,虽然线性的算法简单也利于理解。
我们是不是可以采用更高次数的分类算法。
7,反馈神经网络
假设数据可以非线性可分,可设计一些非线性函数,神经网络有很好的BP算法。
然而如果数据即可能属于类c1,也可能属于类c2呢,要怎么办才能求出属于某个类的概率呢?
8,贝叶斯分类
贝叶斯分类充分利用了我们早先已知的一些信息,比如我们知道c1的类别会有多少,c2的类别会有多少,但是贝叶斯有多了一些假设:
a,数据是有一个混合模型产生的,即一个数据既可能由类c1产生,也可能由类c2产生
b,一个真实的数据只可能有一个类c产生,他的标签类别就是类c。例如,一份报告要不是由国防部拟定的,要不是由财政部拟定的,不可能是两者一起拟定的。
贝叶斯算法可以利用贝叶斯数学公式,精度也很高,大概是最近邻算法的两倍。至于两倍是一个什么概念?莫非最近邻达不到50%?现在不是很清楚。
先写这么多吧,以后有了思考再写。
1805

被折叠的 条评论
为什么被折叠?



