作业2-线性分类器
- 格式:pdf
- 大小:92.99 KB
- 文档页数:9
线性分类器及python实现以下内容参考CS231n。
上⼀篇关于分类器的⽂章,使⽤的是KNN分类器,KNN分类有两个主要的缺点:空间上,需要存储所有的训练数据⽤于⽐较。
时间上,每次分类操作,需要和所有训练数据⽐较。
本⽂开始线性分类器的学习。
和KNN相⽐,线性分类器才算得上真正具有实⽤价值的分类器,也是后⾯神经⽹络和卷积神经⽹络的基础。
线性分类器中包括⼏个⾮常重要的部分:权重矩阵W,偏差向量b评分函数损失函数正则化最优化权重矩阵W (Weights)可以理解为所有分类对应的模版向量w组成的矩阵,模版就是分类期望成为的样⼦。
训练数据可以理解为是N维空间中的⼀个向量v,v和W中每个模版做点积,点积越⼤,表⽰两个向量的夹⾓越⼩,也就越接近。
点积最⼤的模版w,就是v所对应的分类。
W不是⼀直不变的。
它会随着对损失函数最优化的过程,不断的调整。
偏差向量b (bias vector) b是不是可以理解为,如果不设置b,那所有的分类线都要通过原点,那其实就起不到分类的作⽤了?参考下图?三条线都通过原点,是⽆法对数据做分类的。
W和b分别对直线做旋转和平移。
评分函数(score function) 之所以是线性分类器,就是因为评分函数使⽤线性⽅程计算分数。
后⾯的神经⽹络会对线性函数做⾮线性处理。
下图直观的展⽰了分类器的线性。
损失函数(loss function)如何判断当前的W和b是否合适,是否能够输出准确的分类?通过损失函数,就可以计算预测的分类和实际分类之间的差异。
通过不断减⼩损失函数的值,也就是减少差异,就可以得到对应的W和b。
Python实现数据预处理# 每⾏均值mean_image = np.mean(X_train, axis=0)# second: subtract the mean image from train and test data# 零均值化,中⼼化,使数据分布在原点周围,可以加快训练的收敛速度X_train -= mean_imageX_val -= mean_imageX_test -= mean_imageX_dev -= mean_image处理b的技巧# third: append the bias dimension of ones (i.e. bias trick) so that our SVM# only has to worry about optimizing a single weight matrix W.# 技巧,将bias加到矩阵中,作为最后⼀列,直接参与矩阵运算。
LDA(线性判别分类器)学习笔记Linear Discriminant Analysis(线性判别分类器)是对费舍尔的线性鉴别⽅法(FLD)的归纳,属于监督学习的⽅法。
LDA的基本思想是将⾼维的模式样本投影到最佳鉴别⽮量空间,以达到抽取分类信息和压缩特征空间维数的效果,投影后保证模式样本在新的⼦空间有最⼤的类间距离和最⼩的类内距离,即模式在该空间中有最佳的可分离性。
因此,它是⼀种有效的特征抽取⽅法。
使⽤这种⽅法能够使投影后模式样本的类间散布矩阵最⼤,并且同时类内散布矩阵最⼩。
就是说,它能够保证投影后模式样本在新的空间中有最⼩的类内距离和最⼤的类间距离,即模式在该空间中有最佳的可分离性。
预备知识协⽅差与协⽅差矩阵协⽅差协⽅差分为随机变量的协⽅差和样本的协⽅差。
随机变量的协⽅差跟数学期望、⽅差⼀样,是分布的⼀个总体参数。
协⽅差是对两个随机变量联合分布线性相关程度的⼀种度量。
两个随机变量越线性相关,协⽅差越⼤,完全线性⽆关,协⽅差为零。
定义如下。
$$cov\left(X,Y\right)=E\left[\left(X-E\left[X\right])(Y-E\left[Y\right]\right)\right]$$因为变量尺度不同,所以不能⽤若⼲协⽅差的⼤⼩作为相关性强弱的⽐较。
因此引⼊相关系数,本质上是对协⽅差进⾏归⼀化。
$$\eta=\frac{cov\left(X,Y \right )}{\sqrt{var\left(X \right )\cdot var\left(Y \right )}}$$取值范围[-1,1]。
样本的协⽅差对于现有的m个样本,每个样本均具有n维属性,每⼀维属性我们都可以将其看作是⼀个随机变量。
每⼀个样本$x_j =\left[x_{1j} ,...,x_{nj}\right ]$。
那么我们就可以考察样本集中,两个随机变量(两属性)间的线性关系。
计算和随机变量的协⽅差⼀致。
模式识别:线性分类器一、实验目的和要求目的:了解线性分类器,对分类器的参数做一定的了解,理解参数设置对算法的影响。
要求:1. 产生两类样本2. 采用线性分类器生成出两类样本的分类面3. 对比线性分类器的性能,对比参数设置的结果二、实验环境、内容和方法环境:windows 7,matlab R2010a内容:通过实验,对生成的实验数据样本进行分类。
三、实验基本原理感知器基本原理:1.感知器的学习过程是不断改变权向量的输入,更新结构中的可变参数,最后实现在有限次迭代之后的收敛。
感知器的基本模型结构如图1所示:图1 感知器基本模型其中,X输入,Xi表示的是第i个输入;Y表示输出;W表示权向量;w0是阈值,f是一个阶跃函数。
感知器实现样本的线性分类主要过程是:特征向量的元素x1,x2,……,xk是网络的输入元素,每一个元素与相应的权wi相乘。
,乘积相加后再与阈值w0相加,结果通过f函数执行激活功能,f为系统的激活函数。
因为f是一个阶跃函数,故当自变量小于0时,f= -1;当自变量大于0时,f= 1。
这样,根据输出信号Y,把相应的特征向量分到为两类。
然而,权向量w并不是一个已知的参数,故感知器算法很重要的一个步骤即是寻找一个合理的决策超平面。
故设这个超平面为w,满足:(1)引入一个代价函数,定义为:(2)其中,Y是权向量w定义的超平面错误分类的训练向量的子集。
变量定义为:当时,= -1;当时,= +1。
显然,J(w)≥0。
当代价函数J(w)达到最小值0时,所有的训练向量分类都全部正确。
为了计算代价函数的最小迭代值,可以采用梯度下降法设计迭代算法,即:(3)其中,w(n)是第n次迭代的权向量,有多种取值方法,在本设计中采用固定非负值。
由J(w)的定义,可以进一步简化(3)得到:(4)通过(4)来不断更新w,这种算法就称为感知器算法(perceptron algorithm)。
可以证明,这种算法在经过有限次迭代之后是收敛的,也就是说,根据(4)规则修正权向量w,可以让所有的特征向量都正确分类。
cs231n线性分类器作业svm代码softmaxcs231n线性分类器作业:(Assignment 1 ):⼆训练⼀个SVM:steps:完成⼀个完全向量化的SVM损失函数完成⼀个⽤解析法向量化求解梯度的函数再⽤数值法计算梯度,验证解析法求得结果使⽤验证集调优学习率与正则化强度⽤SGD(随机梯度下降)⽅法进⾏最优化将最终学习到的权重可视化1.SVM⽀持向量机(Support Vector Machine, SVM)(margin)我们⽤来表⽰,⼀般令 =1。
对于单个样本,SVM的Loss function可表⽰为:将,带⼊上式:其中,表⽰正确类别,表⽰正确类别的分数score,表⽰错误类别的分数score。
从表达式来看,不仅要⽐⼩,⽽且距离⾄少是,才能保证。
若,则。
也就是说SVM希望与⾄少相差⼀个Δ的距离。
该Loss function我们称之为Hinge Loss此处使⽤多分类的hinge loss, Δ=1: 假如⼀个三分类的输出分数为:[10, 20, -10],正确的类别是第0类(yi=0),则该样本的Loss function为:值得⼀提的是,还可以对hinge loss进⾏平⽅处理,也称为L2-SVM。
其Loss function为:这种平⽅处理的⽬的是增⼤对正类别与负类别之间距离的惩罚。
依照scores带⼊hinge loss:依次计算,得到最终值,并求和再平均:svm 的loss function中bug: 简要说明:当loss 为0,则对w进⾏缩放,结果依旧是0,如何解决?如下图所⽰:加⼊正则项:加⼊正则,对w进⾏约束,常⽤的正则有L1 L2L1趋于选取稀疏的参数,L2趋于选取数值较⼩且离散的参数。
问题1:如果在求loss时,允许j=y_i 此时L会⽐之前未包含的L⼤1 问题2:如果对1个样本做loss时使⽤对loss做平均,⽽不是求和,会怎样? 相当于sum乘以常系数 问题4:上述求得的hinge loss的最⼤值与最⼩值: 最⼩值为0,最⼤值可以⽆限⼤。
《模式识别》课程实验线性分类器设计实验一、实验目的:1、掌握Fisher 线性分类器设计方法;2、掌握感知准则函数分类器设计方法。
二、实验内容:1、对下列两种情况,求采用Fisher 判决准则时的投影向量和分类界面,并做图。
12{(2,0),(2,2),(2,4),(3,3)}{(0,3),(2,2),(1,1),(1,2),(3,1)}T T T T T T T T T ωω⎧=⎪⎨=-----⎪⎩ 12{(1,1),(2,0),(2,1),(0,2),(1,3)}{(1,2),(0,0),(1,0),(1,1),(0,2)}T T T T T T T T T T ωω⎧=⎪⎨=-----⎪⎩ 2、对下面的两类分类问题,采用感知准则函数,利用迭代修正求权向量的方法求两类的线性判决函数及线性识别界面,并画出识别界面将训练样本区分的结果图。
12{(1,1),(2,0),(2,1),(0,2),(1,3)}{(1,2),(0,0),(1,0),(1,1),(0,2)}T T T T T T T T T T ωω⎧=⎪⎨=-----⎪⎩ 三、实验原理:(1)Fisher 判决准则投影方向:*112()w w S μμ-=-(2)感知准则函数:()()kT p z Z J v v z ==-∑当k Z为空时,即()0J v ,*v即为所求p四、解题思路:1、fisher线性判决器:A.用mean函数求两类样本的均值B.求两类样本的均值的类内离散矩阵SiC.利用类内离散矩阵求总类内离散矩阵SwD.求最佳投影方向WoE.定义阈值,并求得分界面2、感知准则函数分类器:A.获得增广样本向量和初始增广权向量B.对样本进行规范化处理C.获得解区,并用权向量迭代修正错分样本集,得到最终解区五、实验结果:1、fisher线性判决分类器:条件:取pw1=pw2=0.5,阈值系数为0.5A.第一种情况B.第二种情况2、感知准则函数判决:条件:取步长row为1判决结果:六、结果分析:1、fisher线性判决器中,调整阈值系数时,分界面会随之平行上下移动,通过调整阈值系数的大小,就能比较合理的得到分界面。
线性分类器的分类原理线性分类器是一种常用的机器学习算法,主要用于将输入数据分成两个或多个不同的类别。
其分类原理基于线性方程和决策边界的概念。
线性分类器假设输入数据是由各个特征的线性组合得到的,即特征的权重与特征值的乘积之和。
假设我们有一个二维数据集,其中每个样本有两个特征,可以表示为X = {(x_1, y_1), (x_2, y_2), ..., (x_n, y_n)}。
线性分类器的目标是找到一个超平面,将不同类别的数据样本正确地分开。
假设有两个类别(标签为-1和+1),我们的目标是找到一个可行的分割超平面,定义为wx + b = 0,其中w 是特征权重向量,x 是特征向量,b 是偏置值。
对于特征向量x = (x_1, x_2, ..., x_m),权重向量w = (w_1, w_2, ..., w_m) 和偏置b,线性分类器的输出为:f(x) = sign(wx + b)将数据样本代入分割超平面,通过wx + b 的符号来判断其所属的类别。
如果wx + b 大于0,则样本属于标签+1 的类别,反之,则属于标签-1 的类别。
因此,分割超平面实质上是一个决策边界,将数据样本投影到不同的区域中。
为了找到一个最优的分割超平面,我们需要定义一个损失函数。
这个损失函数衡量了分类器预测和实际标签之间的差异。
常用的损失函数是合页损失(HingeLoss),其定义为:L(w, b) = max(0, 1 - y(wx + b))其中y 为样本的实际标签。
当样本的预测值和真实标签相符时,合页损失为0,表示分类正确;当预测值和真实标签不同时,损失函数不为0,表示分类错误。
我们的目标是最小化损失函数,找到最优的权重向量w 和偏置b,以使得分类器能够尽可能准确地对新样本进行分类。
为了实现分类器的训练,我们可以使用梯度下降算法或其他优化算法来最小化损失函数。
梯度下降算法的基本思想是通过计算损失函数对权重向量和偏置的梯度,并根据梯度的方向来更新权重和偏置的值。