机器学习练习笔记(二)

题目2.1 - 连结主义神经元

该练习用到的数据集Apples Oranges,数据存储两个分类,有200组数据,有两列属性以及一列分类。用简单的神经元对样本进行分类,每个样本,其中预测结果

第一题是画散点图,因为只有x.1x.2两个属性,并且只是一个二分类问题,笔者用R画出散点图(源码):

可以看到,还是比较容易分类的。

然后第二题就是设置10°为间隔以及,让开始设置的两个权值,输出这些对应的分类正确率,并画图。

因为刚好只有两个属性,在二维直角坐标系中,刚好有:

将每个应用到属性集上得出,与原本的标签对比得出正确率,最后得到正确率-角度的图(源码):

注意

笔者在第二问就尝试输出时最佳的的图像,发现直线并不是所期待一般近似划分两个类:

在开始探究原因之前,先回想清楚法向量的定义。

定义是没有问题的,那是因为刚好导致直线方程,即所得的直线刚好是法向量所在的直线,于是划分类的超平面恰好垂直于该直线,根据两直线垂直其斜率之积为可以得到最终划分超平面的超平面方程为,根据方程作出直线:

这样才有点像划分的样子,但是要注意这仅仅是时的特例,一般情况所得超平面便是划分点集的超平面。

接下来一问是根据上一问得出的最佳的,组合,得出正确率最高的源码):

运行得到:

接下来是根据前两问得出来的画图(源码):

然后就是尝试不同的组合,并画出热度图

运行代码画图:

可以肉眼看出正确率较高时的组合在哪个部分。

笔者额外求得最高正确率时的

1
2
angle theta        w1        w2 correctness
40 0.35 0.6427876 0.7660444 0.915

并作图:

根据方程所转化成的是没问题的,但是肉眼判断这个决策面明显达不到以上的正确率。

原因是在笔者画线是所用的方程,注意仅仅用了来生成直线,该超平面应该经过相关的点,于是便造成这样的错误,笔者并未打算在此解决这个错误,因为在以后学习LDASVMPCA等问题时会解决这个问题。

题目2.2 - 多层感知机

该题目是简单地体验一下多层感知机,假设其中一层隐藏层,该层有10个感知机,通过随机生成(分别为输出权重,计算时的权重以及偏差)50次,生成50条曲线,观察现象。

第一问设置

对于

第二问改成:

得到:

显然比第一问生成的曲线群平滑一些了,第三问当然是问观察到了什么,画一条的曲线,然后再画出平方误差最小的那条(上述两幅图用蓝色标记曲线以及误差最小的曲线)。

可以观察到误差最小时的曲线与曲线呈轴对称。