• 231n-图像线性分类


    图像线性分类

    机器学习:数据驱动的方式

    1. 收集图像数据和标签
    2. 使用机器学习的方法训练分类器
    3. 在新的图像上评估分类器

    Nearest Neighbor Classifier

    在这里插入图片描述
    距离公式
    L1距离 d 1 ( I 1 , I 2 ) = ∑ p ∣ I 1 p − I 2 p ∣ d_1(I_1,I_2) = \sum_p|I_1^p - I_2^p| d1(I1,I2)=pI1pI2p

    import numpy asnp
    class NearestNeighbor:
    	def __inti__(self):
    		pass
    	
    	def train(self,X,y):
    		"""X is N x D where each row is an example. Y is 1-dimension od size N"""
    		# memorize training data
    		self.Xtr = x
    		self.Ytr = y
    	
    	def predict(self, X):
    		"""X  is N xD where each row is an example we wish to predice lable for """
    		num_test = X.shape[0]
    		Ypre = np.zeros(num_test, dtype = self.Yter.dtype)
    		
    		# For each test image ,find cloest train image ,predict label of nearst image
    		for i in xrang(num_test):
    			# find the nearest training image to the i'th test image
    			distances = np.sum(np.abs(self.Xter - X[i,:]),axis=1)
    			min_index = np.argmin(distances)
    			Ypred[i] = self.Ytr[min_index]
    		
    		return Ypred
    		
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    上面的算法有一点不好,训练是O(1)的复杂度, 预测是O(N)的复杂度。

    K-Nearest Neighbor

    在这里插入图片描述

    增加了一个投票过程,选取最接近的K个图像,然后投票,选则投票数组多的一个类别
    在这里插入图片描述

    马汉顿距离的结果和坐标轴相关,欧拉距离和与坐标轴无关

    Hyperparameters 超参数

    • k的取多少效果最好
    • 用那种距离公式最好

    在这里插入图片描述

    • 一般需要验证集用来选择超参数

    在这里插入图片描述

    • 一般在小数据集上使用交叉验证

    k-NN 和 pixel distance 从来不用

    • 像素距离标准并不一定能反应相关信息

    在这里插入图片描述

    • 维度爆炸,随着维度的增加,分类性能从增加到减少,因为纬度越高,数据越稀疏,导致过拟合
      在这里插入图片描述

    线性分类

    在这里插入图片描述
    假如说每张图像都只有4个像素,又有三个类别 猫/ 狗 / 船
    在这里插入图片描述
    b 是一个偏移量,如果说我们的数据中有更多的狗,狗这一分类的 b 可能会比较大
    另:w 和 b 可以组成一个 m+1 维的向量, 可以构成一个 m维空间的平面 w 0 x 0 + w 1 x 1 + . . . + w m x m + b = 0 w_0x_0 +w_1x_1+...+w_mx_m+b=0 w0x0+w1x1+...+wmxm+b=0

    在这里插入图片描述

    选个一个好的参数矩阵 W

    • 定义损失函数
    • 优化,损失函数的值

    在这里插入图片描述
    在这里插入图片描述
    总的loss可以是所有样本loss的均值

    多分类 SVM loss

  • 相关阅读:
    孙卫琴的《精通Vue.js》读书笔记-Vue组件的数据监听
    深度学习之卷积神经网络(CNN)
    css实现高度是宽度一半的效果
    入门力扣自学笔记139 C++ (题目编号998)
    力扣考研经典题 反转链表
    国土局土地档案管理软件系统(Java+SSH+MySQL)
    Java 转型问题(向上转型和向下转型)
    windows10默认浏览器总是自动更改为Edge浏览器
    聚观早报 | 苏宁易购入驻美团外卖;今日头条接入抖音电商
    临沂大学张继群-智慧农业项目招募
  • 原文地址:https://blog.csdn.net/greatcoder/article/details/127235558