Hi,大家好,我是半亩花海。学完回归算法原理的知识,我们进入分类算法原理的学习,继续更新《白话机器学习的数学》这本书的学习笔记,在此分享内积这一分类算法原理。本章的分类算法原理基于《基于图像大小进行分类》项目,欢迎大家交流学习!
目录
一、内积概述
内积(根据翻译)又叫标量积、点积,还叫数量积。是指接受在实数 R 上的两个向量并返回一个实数值标量的二元运算。它是欧几里得空间的标准内积。
设二维空间内有两个向量, 和 。定义它们的数量积(又叫内积、点积)为以下实数:
使用矩阵乘法并把(纵列)向量当作 n × 1 矩阵,点积还可以写为:
其中, 表示为矩阵 的转置。
二、案例分析
1. 设置“二分类”案例
在介绍内积这个算法基础之前,我们先设置一个场景,本文主要是提出一个“二分类”的案例:根据图片尺寸把它分类为纵向图像和横向图像,分别如下图所示。
我们现在有了两个这样的训练数据,高和宽的部分是数据,形状的部分是标签,如下表所示。
设 x 轴为图像的宽、y 轴为图像的高,那么我们将训练数据展现在图上,白色的点是纵向图像,黑色的点是横向图像,如下所示:
不过,只有两个训练数据确实太少了,再增加一些数据吧:
这些数据在图上展示,如下所示。
如果只用一条线将图中白色的点和黑色的点分开,我们可以尝试着画出来这条线,如下所示。
分类的目的就是找到这条线,只要找到这条线,就可以根据点在线的哪一边来判断图像是横向还是纵向的了。
2. 内积及其应用
找到一条线,并不是意味着我们要像学习回归时那样,求出这条线即一次函数的斜率和截距。这次的目的是找出向量。
分类用图形来解释更容易理解,所以把它想象为有大小和方向的、 带箭头的向量比较好。比如,刚才画的那条线,是使权重向量成为法线向量的直线。设权重向量为 ,那么那条直线的表达式则如下所示:
权重向量就是我们想要知道的未知参数, 是权重一词的英文——weight 的首字母。上次学习回归时,我们为了求未知参数 做了很多事情,而 和 是一样的。所以它们都是参数,只是叫法不同。
上述表达式 是两个向量的内积,实向量空间的内积是各相应元素乘积的和,所以刚才的表达式也可以写成如下式子:
现在要考虑的是有宽和高的二维情况, 所以考虑 n = 2 即可。下面具体地展开 符号:
比如我们设权重向量为 ,那么刚才的内积表达式会变成:
移项变形之后,表达式变成 了。这就是斜率为 −1 的直线。
在这张图上再画上刚才确定的权重向量 就更容易理解了,如下所示。
可以看到,权重向量 和这条分类的直线是垂直的,这就是“使权重向量成为法线向量的直线”在图形上的解释。我们还可以用向量之间的夹角 和 计算内积的表达式:
式中, 和 是向量的长,因此必定是正数。所以要想使内积为 0,只能使 。要想使 ,也就意味着 或 ,这两种情况也是直角。当然,像这样与 成直角的向量有很多,它们连成了一条直线。
这样看来,我们需要找到与画的直线成直角的权重向量即可。当然,一开始并不存在你画的那种直线,而是要通过训练找到权重向量 ,然后才能得到与这个向量垂直的直线,最后根据这条直线就可以对数据进行分类了。