记录一些学习随笔,作为数据挖掘知识的整理
我们所学的首个神经网络
类是实现定义好的点所组成的组
分类(classification)可以猜测某一个点所在的类
在学习分类时我们需要解决的2个问题:
1、分类(classifying):判断出点在decision boundary的哪一边
2、learning:找到分隔出两个类的decision boundary。
在learning完成后,classifier可以对未知点做正确分类。
引入超平面(hyperplane)作分隔用。
向量加一个origin point可以表示一个hyperplane P
若点X属于法向量V和超平面上一点C组成的平面,则有V和X-C的点积为0的性质,类似三维平面。
V是超平面的法向量,C是超平面的原点。
对于点到P的符号距离(signed distance)y,可以表示为y=V(X-C)(两个向量的点积)
因此可以用此来将一个点归类,若距离y大于零归为一类,y小于零归为另一类
引入step函数,将y作为参数,当y为负时step函数输出-1,y为正时step函数输出1。再以该输出z作为分类判断依据。
上述就是一个人工神经元(artificial neuron)的例子。xi作为输入,vi作为偏置权值(bias weight),step函数是传递函数(transfer function)的例子,也可以有其他传递函数如linear和tanh等。
至此,我们已经解决classification的第一个问题classifying。
下面是neuron learning,即找到合理的v0,v1,...,vn。找到法向量和初始点后可构造出hyperplane。
将由hyperplane分类时产生的错误归类称为Error,
t是点X的应该归到的类,取值为1或-1,z是神经元输出。
以E为准我们找到neuron learning的方法:逐步减小error。
1、随机取数据集里的一点
2、计算该点的error
3、调整v0,...,vn使error降低
4、重复上述步骤
我们用E关于vi的偏导数来表示它们之间的变化关系
取一阶偏导数,再将一阶偏导数乘上经验系数(fudge factor,learning rate),则有
得到完整的Delta rule(一种学习法则)
1、在数据集中随机取点
2、计算该点的E
3、计算
4、更新vi
5、重复执行上述步骤,将更多的点进行正确分类
所取的经验系数足够小,算法可以收敛到期望状态,但不唯一。