算法构成
目前算法模型主要解决回归、分类、聚类问题。也可以通过训练数据集中有无标签分为,有监督学习和无监督学习。下面主要探讨下回归问题的一般数据表达。
【1】假设函数,即通过数学公式标准化模拟的参数与目标间的函数关系,可以理解为函数关系中的H(X)。
【2】参数,即认为会影响到目标的变量。可以理解为函数关系中的X。
【3】代价函数,即通过在相同参数下“假设函数”与“真实值”之间的差距计算得到。代价函数最小时,则拟合效果最好,但是存在过拟合问题。就是在训练集中能完全预测,但是在真实情况下预测失误率高。同时“假设函数”关系也是通过逐步缩小与代价函数的值,能逐步训练算法的。(也可以理解为求偏导,逐步梯度下降)。
【4】目标,回归问题中一般表现为缩短相同参数情况下,假设函数预测值与真实值之间的差。
算法目标
线性回归中,假设函数H(X)中X为变量,有真实世界中可以获取,所以只能通过改变H(X)中的参数来优化预测情况。如下图所示,简化为与两个变量相关的函数,通过不断改变和的值实现真实值与目标值之间的差值最小,即最小。
将上述的图片转化为下面的等高图,可以发现必然存在和使目标函数有最小值。那么到底何时能使预测值和真实值最接近呢?
梯度下降
在分析问题时,定义了目标函数、假设函数后,一定会给假设函数中参数和确定一个初始值,也即图上任意一点。我们期望改变初始值和,能前往途中的最低值的方法,类似下山的感觉,就是梯度下降,数学意义上就是导数或者偏导数。
上图4是一个非常理想情况的函数图像。对于比较复杂的函数,如图6所示,可能有一个全局最优解,多个局部最优解。而且参数初始值、参数学习效率改变的情况下,很可能只能取到局部最优解,而不是全局最优解。
学习效率与梯度下降
学习效率的值,如果值定的太小,学习次数会增加,算法时长会上升;如果学习效率定的太大可能永远无法学习到最优解。学习效率取值可以参考,在拟合初期定个较大的值,但是在拟合后期差距逐渐减小时,学习效率也逐步降低。
图像分类
图像分类问题,有较大的应用前景。比如内容的审核,疾病治疗,人脸识别等。本文将讲述较为简单的图像分类方法,K近邻与线性分类。
K近邻
数据有训练数据集和预测验证数据集,我们定义预测图片在训练集中取到的最近N张图片,取出占比最大的标签,即预测出图像的标签。这是一种仅仅只是记录数据就预测的方法。
图1:左侧为训练集,右侧为预测集
定义图像间距离
图像的分辨率,是指一个图片由多少个小方格组成的,分辨率越大,小方格越多,图片质量越好。
RGB,即一个小方格上的色彩,范围越大,表示每个小方格能取到的色彩越多。一般用uint8和unit16,表示的是单个像素的信息。uint8白色和黑色写成16进制是【白:0xFFFFFFFF】【黑:0xFF000000】。其他颜色举例,如【红色:0xFFFF0000】【绿色:0xFF00FF00】取值都在0-255之间。
定义图像间的距离,既然每一张图片由多个像素点构成。那么可以考虑所有像素点间的绝对值,相加即两张图片间的距离。
这种算法最大的问题时,训练时算法的复杂度为O(1),但是预测时算法的复杂度为O(n)
K值会影响分类结果,K值越大分类越平滑。
L1距离就是刚才说的,每个像素点间绝对值的和;而L2距离则是距离开平方。参数间有区别,需要选择L1,对距离有影响;参数间没啥区别选择L2,对距离无影响。
线性分类
参考之前的线性回归预测,线性分类的数学意义就是通过多个参数,通过线性分类器将图片分类,以下图片是二维解释,当参数更多时,可以拓展到更高维的解释。
线性分类是,将图片看成一维数组。每个标签有属于自己的函数表达式,然后计算出最高得分的标签,即预测的标签。
线性分类的问题
线性分类无法处理,标签间相互混合的情况,如下图所示。所以就有后续的神经网络算法。