001_KNN与线性分类器

KNN

Machine Learning: Data-Driven Approach

机器学习 : 数据驱动法

  1. Collect a dataset(数据集) of images and laberls (收集一个数据集,包含 图片和标签)
  2. Use Machine Learning to train a classifier(分类器) (使用机器学习去训练一个分类器)
  3. Evaluate the classifier on new images (评估此分类器,使用全新的图片)

第三步,就是为了防止过拟合,过拟合,就是指当前的神经网络和训练数据集过度拟合,导致其在输入其他的数据集时,出现 远远达不到 训练数据集 时,理论上的精确程度。

分类器1:最近邻算法(惰性算法)

L1(Manhattan distance 曼哈顿距离,因为曼哈顿的街道规划都是方格形的,每到一个路口,进行左右判定,其最终到达目的地时的距离都是一样的) 距离衡量: 就是把两张图片的每一个对应像素点值求差后求和

ksn2lf8a.png
所以,当进行图像分类时,我们把 输入图像 和 输出层的所有图像,做比较,选择其 L1 值 最小的图像,作为 我们的最终结果。
因为,这是一种,惰性算法,其 算法的 时间复杂度为一个常数
Train O(1)
predict O(N)
显然,这个算法不太好

二维直观的去看,就是 下图所示,不同颜色的点,就是不同的 输出层图片,两个图片之间做,垂直平分线, 不同点之间的垂直平分线相连,最终实现对整个 坐标系 的分割。
ksn31iux.png
这样的话,就会导致中心,出现一个疑惑的黄色区域。

k-Nearest Neighbors (KNN)

K最近邻算法
ksn3cqt8.png
之前是 K = 1 时的算法,但是,现在的话,我们令 K = 3, K = 5 也就是说,对 测试图像,选取 L1 距离最近的K个输出层图像,按照少数服从多数的原则,进行分类,这样会一定程度 提高 数据的 精确度。 但是,当 K 值过大时,比如说,包括了 所有的输出层图像,此时,KNN 算法,不再具有任何的辨别能力,所有输入层的图像,都会是一种 噪音。
白色部分,我们称之为 噪音。

L2(Euclidean 欧几里得)distance

ksn475si.png
将 I1 看作输出层,I2 看作输入层的图像, 当 I1 I2 均为 二维时,即:I1 = [xI1,yI1], I2 = [xI2,yI2] , 此时 : dI1 = | xI1 - xI2 | + | yI1 - yI2 | 以 I1 为 原点,此时:
ksn50ity.png
dI2 = 根号下{|xI1-xI2|^2 + |yI1-yI2|^2} 此时,以 I1 为 原点,d2 为半径的图像,就是一个圆。
ksn546p9.png

L1 距离,相对而言更适用于 坐标系 是相对明确的,也就是 I2,I1 对象的 维数对应的元素,当其发生变化时,就会导致 整个 d1 图像的改变。
L2 距离,则更多的,对 坐标系 有着更小的依赖,当 I2 I1 维数对应的含义变化时,L2 的距离 不会有 一个 很大的改变。

斯坦福的直观感受 demo
http://vision.stanford.edu/teaching/cs231n-demos/knn/

Hyperparameters 超参数

在机器学习的上下文中,超参数是在开始学习过程之前设置值的参数,而不是通过训练得到的参数数据。通常情况下,需要对超参数进行优化,给学习机选择一组最优超参数,以提高学习的性能和效果。
(These are hyperparameters : choices about the algorithm that we set rather than learn) algorithm 算法
我们称 KNN 中的 K 为 超参数,L1 与 L2 也是超参数
ksn5cazy.png

BAD (bad 缺点) Split 分离,拆分 evaluate 评估测试
ksn66l0a.png
最后,我们交叉验证,使用 Cross-Validation (交叉-验证)
fold 折叠,弯曲,包
average 平均
一般常用 五折交叉验证,十折交叉验证,二十折交叉验证
五折交叉验证.png
在小型数据集中,很有用,但是不要在深度学习中过于频繁的使用。

例子 :
ksn6ktgm.png
single outcome 单一结果,我理解就是 相互独立
accuracy n. 准确性,精密
The line goes through the mean, 线条穿过的是 平均值,mean v. 意义,意图,意味着等, n. 平均值
bars indicated standard deviation. indicate v. 表明,指出,表示 standard deviation 标准差, deviation n. 偏差,偏向

KNN 在图像处理上从不使用
  1. 非常缓慢的训练速度(他是一种惰性的算法,它在计算的过程中,要对所有像素点进行计算,比对 o(N) )
  2. 距离度量标准在像素上是没有信息量的 (metrics 度量标准,metric 公制, pixel 像素)
    ksn73il1.png
    问:为什么L2的距离是一样的,原因是我们在处理的时候故意这样做成原图和这些图计算L2距离相同,这样就可以显示L2距离甚至KNN都不适合图像之间的计算。。。。。。。。 笑死
  3. Curse of dimensionality (Curse 诅咒, dimensionality 维度) 随着维度的增加,数据集的点数是指数增加的,计算的时间和数据集的点数是线性的。
    ksn7mbqf.png

总结

ksn7t3s6.png

  1. 在图像分类中,我们开始于 带有图片和标签的训练集,并且 一定要在 测试集 上进行预测标签。
  2. 这个 KNN 分类器 预测标签基于最近的训练例子 (这个 KNN 基于最近的 K 个 训练的例子中,可以通过加权平均,加权求和等的方式,可以增加更近的对象的权重等,去优化最后的 预测)
  3. 距离函数 [ (Distance metric) ](https://en.wikipedia.org/wiki/Metric_(mathematics) 和 K 是超参数
  4. 选择超参数使用 验证集去选择,划分
  5. 仅仅在最最后使用测试集!

所以说,近邻算法训练上,是很快的,基本上不需要训练,但是,在使用时,要进行大量的计算。

线性分类器

在一维空间中,线性分类器就是一个点呗
在二维空间中,线性分类器不必多言,是一个我们都很常见的直线,y = kx + b
在三维空间中,线性分类器是一个平面。
ksn8e0n1.png

线性分离器在 神经网络 中 是非常常用,其往往是第一个处理模块。

ksn8opsa.png
我们把一个图像展开,然后将其中的像素值展开成 一个一维的长向量,向量 传入 神经网络中,按照不同的权重去计算每一个向量值,我们还可以加上一个偏置(b,截距,+ 一个常数),最后所得的值,来判断图像的类别。
ksn8rp6c.png
ksn8v65n.png

b 的话,可以理解为,在青蛙的识别中,因为 往往是中央出现一片绿色等,所以神经网络应该对中间有绿色的部分较为关注,所以我们就可以增加中间部分为绿色的权重。即 增加 绿色
ksn8zvrp.png

ksn92u94.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值