回归算法( 三 )


无人驾驶
2. 难点与常规套路
计算机视觉:图像是三维数组的形式,三个颜色通道RGB,图像的大小?300*100大小的图像有300*100*3个数据
0-255,0暗/255亮
难点:照射角度、光照强度、形状改变、部分遮蔽、背景混入
常规套路:1. 收集数据给定标签 2.训练分类器 3.测试评估
3. k近邻分类(KNN算法)
不需要训练,是一种lazy-算法,但是KNN计算复杂度和训练集发小成正比!效率太低!
一个实例:
CIFAR-10经典数据集:
10类标签(50000训练数据+10000测试数据,大小均为32*32)
CIFAR-10里的10意思是有10类标签
用k近邻算的话,就是看谁更近,那么对应像素点相减,最后再累加,就是距离,选择最近的即可!
但是效果不好哦!
如果直接相减,只能看出整体来看像不像,这样的话背景就会对结果有影响,比如第一个,背景是蓝色,选出来背景都是蓝色,但是背景不重要!
所以说要忽略背景,使用前景!
4. 超参数与交叉验证
接上回KNN:
距离就是一个超参数,超参数就是训练模型时可以改变的一些参数,比如作为距离,我们可以用L1 的曼哈顿距离,也可以用L2欧式距离公式(常用的是欧式距离)
所谓"超参数",就是需要人为输入,算法不能通过直接计算得出的参数
KNN中的k代表的是距离需要分类的测试点x最近的k个样本点,如果不输入这个值,那么算法中重要部分“选出k个最近邻”就无法实现 。从KNN的原理中可见,是否能够确认合适的k值对算法有极大的影响 。
交叉验证:训练集、验证集、测试集
就是说,先拿1 2 3 4训练,用5来看看效果好不好并调节,用6来测试;下一次用1345训练 2验证;然后用1245训练 3测试...
交叉验证里的k一般取10,那么KNN里的k取多少呢?
使用交叉验证来确定k的值:
那我们怎样选择一个最佳的k呢? 在这里我们要使用机器学习中的神器:参数学习曲线 。参数学习曲线是一条以不同的参数取值为横坐标,不同参数取值下的模型结果为纵坐标的曲线,我们往往选择模型表现最佳点的参数取值作为这个参数的取值 。
在选取不同的k的时候,10折交叉验证的准确率如下,那我们要选择准确率最高的,此时k大概是9
KNN中K值大小选择对模型的影响:
k值过大:5. 线性分类(得分函数)
得分函数:
猫的得分甚至是负的,这个太离谱了,继续训练!
最后可以训练出合格的,那么就有很多条y=wx+b,就可以进行线性分类了
6. 损失函数
这里使用SVM损失函数,当然要换成别的损失函数也可以的,可以计算出损失值(+1也可以换成别的,这个1是对于分类的接受程度,如果想要更接受分类错误的情况,可以把1换大一点)
中间这一块delta就是1,就是在这一块虽然不太好但是我还是接受的损失
损失值和所有样本有关,但是又不能受到样本个数的影响,于是:
L就是f(x,W)的损失函数loss
7. 正则化惩罚项
如果按照本身损失函数的计算方法,没有加入正则化惩罚项,对于x=[1,0,0,0],不管用权重参数w1还是2,损失值都是0.25,那难道说损失值一样,不管用权重w1还是权重w2都是一样的吗?明显w1对于x0的关注度更高,而对都没有关注度,而w2关注得平均,那怎么样才能发现他们的不同呢?引入正则化惩罚项!
对于L2惩罚项,计算w1和w2的平方,发现w2的惩罚比较小,那说明他惩罚的少说明他好,于是用w2权重参数
惩罚项有L1和L2,也可以称之为正规化和范数,L2惩罚项就是L2范数,也就是二范数