线性分类器值感知机算法和最小均方误差算法
- 格式:doc
- 大小:309.00 KB
- 文档页数:7
第 1 页第二讲 线性分类器一、 判别函数1、 决策论方法在模式识别中,如果根据模式特征信息,按照决策论的思路,以一定的数量规则来采取不同的分类决策,将待识别的模式划分到不同的类别中去,就称为模式识别的决策论方法。
在决策论方法中,特征空间被划分成不同的区域,每个区域对应一个模式类,称为决策区域(Decision Region )。
当我们判定待识别的模式位于某个决策区域时,就判决它可以划归到对应的类别中。
图1 决策区域需要注意的是:决策区域包含模式类中样本的分布区域,但不等于模式类的真实分布范围。
2、 判别函数如果特征空间中的决策区域边界(Decision Boundary )可以用一组方程0)( x i G来表示,则将一个模式对应的特征向量x 代入边界方程中的)(x i G ,确定其正负符号,就可以确定该模式位于决策区域边界的哪一边,从而可以判别其应当属于的类别,)(x i G 称为判别函数(Discriminant Function )。
判别函数的形式可以是线性的(Linear )或非线性(Non-linear)的。
第 2 页例如图2就显示了一个非线性判别函数,当G (x )>0时,可判别模式x ∈ω1;当G (x )<0时,可判别x ∈ω2。
图2 非线性判别函数非线性判别函数的处理比较复杂,如果决策区域边界可以用线性方程来表达,则决策区域可以用超平面(Hyperplane )来划分,无论在分类器的学习还是分类决策时都比较方便。
例如图3中的特征空间可以用两个线性判别函数来进行分类决策:当G 21(x )>0且G 13(x )>0时,x ∈ω2; 当G 13(x )<0且G 21(x )<0时,x ∈ω3; 当G 21(x )<0 且 G 13(x )>0时,x ∈ω1;当G 21(x )>0且G 13(x )<0时,x 所属类别无法判别。
线性分类器算法原理及应用随着人工智能技术的发展,机器学习已成为各行各业的热门话题,许多人也开始关注和了解各种机器学习算法。
其中,线性分类器算法是一种应用较为广泛的算法,本文将为大家介绍它的原理及应用。
一、线性分类器算法的基础知识1.1 算法简介线性分类器算法是一种常见的机器学习算法,主要用于二分类问题(即将数据分为两类)。
它的基本原理是利用线性函数将数据进行分类,其中具体的分类依据是判断某个数据点是否在计算后大于或小于一个阈值。
1.2 基本公式在线性分类器算法中,一个线性函数的基本公式如下所示:Y = b + w1X1 + w2X2 + … + wnXn其中,Y表示样本的类别,b表示偏置项,w1~wn表示权值,X1~Xn表示输入数据的特征值。
当Y大于某个阈值时该样本被归为一类,小于则归为另一类。
1.3 适用场景线性分类器算法适用于多种分类问题,如判断一封邮件是否为垃圾邮件、一个人是否会违约等。
它的应用非常广泛,并且准确率较高。
二、线性分类器算法的实现步骤2.1 数据处理在使用线性分类器算法前,我们需要对数据进行预处理。
首先,需要清洗数据,去除异常值和缺失值等。
然后,对数据进行标准化处理,将数据归一化,避免数据范围的差异性对结果的影响。
2.2 模型训练训练模型是线性分类器算法的核心步骤。
在训练模型前,我们需要将数据集分为训练集和测试集,以验证模型的准确率。
训练模型的过程就是不断调整权值和偏置项,根据损失函数来确定误差,并利用优化算法进行调整。
常见的优化算法包括随机梯度下降法和牛顿法等。
2.3 模型评估模型评估是判断模型是否准确的重要步骤。
在评估模型时,我们需要将测试集输入模型中,通过预测值与实际值的比较来确定模型的准确率。
模型的评估应基于多个指标,如精度、召回率、F1值等。
通过综合考虑这些指标来评估模型的准确性。
三、线性分类器算法应用案例3.1 垃圾邮件分类垃圾邮件是我们在日常生活和工作中难以避免的问题。
感知机的基本原理和数学表达式感知机是一种简单而有效的线性分类算法,其基本原理是通过学习一组权重参数,将输入数据划分为两个不同的类别。
感知机模型的数学表达式可以描述为以下形式:y = sign(wx + b)其中,y表示样本的预测输出,w表示权重向量,x表示输入向量,b表示偏置项,sign()函数表示符号函数,即当wx + b大于0时,输出为1;当wx + b小于等于0时,输出为-1。
感知机的基本原理是通过不断调整权重参数,使得感知机能够正确地对样本进行分类。
具体来说,感知机的学习过程可以分为以下几个步骤:1. 初始化权重参数w和偏置项b,可以随机选择一组初始值。
2. 对于训练数据集中的每一个样本x,根据当前的参数w和b计算预测输出y。
3. 如果预测输出y与样本的真实标签不一致,则更新权重参数w和偏置项b。
更新的方式可以使用梯度下降法,即根据损失函数对参数进行调整,使得损失函数的值逐渐减小。
4. 重复步骤2和步骤3,直到所有的样本都被正确分类,或者达到一定的迭代次数。
感知机的学习过程可以用数学表达式来描述。
假设训练数据集为{(x1, y1), (x2, y2), ..., (xn, yn)},其中xi为输入向量,yi 为样本的真实标签。
对于每一个样本(xi, yi),我们定义损失函数L(w, b)为:L(w, b) = -∑(yi(wx + b))其中,∑表示对所有样本求和。
损失函数的目标是最小化误分类样本的数量。
为了调整参数w和b,我们需要计算损失函数对参数的梯度。
对于权重向量w的梯度∂L/∂w和偏置项b的梯度∂L/∂b,可以按照以下方式计算:∂L/∂w = -∑(yi * xi)∂L/∂b = -∑(yi)根据梯度的方向,我们可以更新参数w和b的值:w = w + η∂L/∂wb = b + η∂L/∂b其中,η表示学习率,决定了每次更新参数的步长。
感知机算法的收敛性定理表明,如果训练数据集是线性可分的,即存在一组参数使得所有样本都能被正确分类,那么经过有限次的迭代,感知机算法能够收敛到一个使得所有样本都被正确分类的参数组合。
人工智能线性回归和线性分类器实验总结在人工智能领域,线性回归和线性分类器是两个重要的算法。
在进行相关实验后,我总结了线性回归和线性分类器的实验结果如下:线性回归是一种用于寻找自变量与因变量之间线性关系的模型。
在我的实验中,我使用了一个数据集来训练线性回归模型,并对其进行了测试。
通过分析模型的性能指标,如均方误差(Mean Squared Error)和决定系数(R-squared),我发现线性回归模型在拟合数据方面表现良好。
该模型能够准确地预测因变量,并且误差较小。
然而,我也发现线性回归对于非线性关系的数据并不适用,因为它只能处理线性关系。
另一方面,线性分类器是一种用于将样本数据分为两个或多个类别的模型。
我在实验中使用了一个二分类问题的数据集,运用线性分类器进行分类。
通过计算准确率(Accuracy)、精确率(Precision)、召回率(Recall)和F1得分等指标,我发现线性分类器在我的实验中表现出了较高的分类性能。
它能够正确分类大多数样本,并具有较低的误分类率。
然而,我也注意到线性分类器对于非线性可分的数据集效果较差。
在这种情况下,我可以尝试使用其他非线性分类器,如支持向量机(SVM)或决策树。
通过这些实验,我认识到线性回归和线性分类器作为基础的算法在一些情况下是有效的。
它们提供了一种简单而快速的方法来理解和处理与线性相关的数据。
然而,我也认识到这些算法在处理非线性问题时存在局限性。
因此,在实际应用中,我们需要根据具体问题的特点选择合适的算法。
此外,在实验过程中,我还学到了一些关键的实验技巧。
首先,数据的预处理对于实验的成功非常重要。
特征的选择和数据的标准化可以改善模型的性能。
其次,模型的超参数选择也是一个关键因素。
感知机的基本原理感知机是一种二分类的线性分类模型,它的基本原理是通过学习一组权重和偏差参数,将输入的数据点分为两个类别。
它是机器学习中最简单和最基础的模型之一,也是神经网络的起源之一。
感知机的原理可以概括为以下几个步骤:1. 数据表示:感知机的输入是一组特征向量x,每个特征有一个对应的权重w。
特征向量x可以表示为x=(x1, x2, ..., xn),对应的权重向量w可以表示为w=(w1, w2, ..., wn)。
每个特征向量都有一个对应的类别标签y,y的取值为1或-1,表示两个类别。
2. 线性模型:感知机的模型假设数据点可以通过一个超平面来进行划分,这个超平面可以表示为wx+b=0,其中w是权重向量,b是偏差参数。
对于超平面上方的点,其类别标签为1;对于超平面下方的点,其类别标签为-1。
3. 激活函数:感知机使用了一个激活函数来判断数据点的类别。
常用的激活函数是符号函数,它的定义为:f(x) = {1, x >= 0-1, x < 0}激活函数返回的值决定了数据点的类别。
4. 模型训练:感知机的训练过程是通过迭代来调整权重和偏差参数,使得感知机能够正确分类数据点。
假设有N个数据点,每个数据点的特征向量表示为xi,类别标签表示为yi。
对于每个数据点,计算其激活函数的输出值f(wx+b)。
如果输出值与真实的类别标签不一致,即f(wx+b)与yi异号,那么就需要更新权重和偏差参数。
更新规则如下:w = w + η * yi * xib = b + η * yi其中η是学习率,用来控制权重和偏差参数的更新步长。
学习率越大,更新的步长越大;学习率越小,更新的步长越小。
5. 模型预测:经过训练后,感知机可以用来预测新的数据点的类别。
对于一个新的数据点x,计算其激活函数的输出值f(wx+b)。
如果输出值大于等于0,则预测为类别1;如果输出值小于0,则预测为类别-1。
感知机的基本原理就是通过学习一组权重和偏差参数,将输入的数据点分为两个类别。
线性分类算法举例1.用于回归的线性模型线性模型也广泛应用于分类问题,预测公式如下:这个公式看起来与线性回归公式非常相似,但是我们没有返回特征的加权求和,而是为预测设置了阈值(0)。
如果函数值小于0,我们就预测类别-1;若函数值大于0,我们就预测类别+1。
对于用于回归的线性模型,输出y是特征的线性函数,是直线,平面或者超平面(对于更高维的数据集)对于用于分类的线性模型,决策边界是输入的线性函数。
换句话说,(二元)线性分类器是利用直线,平面或者超平面来分开两个类别的分类器。
学习线性模型有很多算法,这些算法的区别在于以下两点:系数和截距的特定组合对训练数据拟合好坏的度量方法;是否使用正则化,以及使用哪种正则化方法。
最常见的两种线性分类算法是**Logistic回归**(logistic regression)和线性支持向量机(linear support vector machine,线性SVM)我们将LogisticRegression和LinearSVC模型应用到forge数据集,并将线性模型找到的决策边界可视化:图为线性SVM和Logistic回归在forge数据集上的决策边界在这张图中,forge数据集的第一个特征位于x轴,第二个特征位于y轴,与前面相同。
位于黑线上方的新数据点被划为类别1,而在黑线下方的数据点会被划为类别0。
两个模型都得到了相似的决策边界,都默认使用L2正则化对于LogisticRegression和LinearSCV,决定正则化强度的权衡参数叫做C。
C值越大,对应正则化越弱,也就是说,参数C的值较大,那么两个模型将尽可能将训练集拟合到最好;如果C的值较小,那么模型更强调是系数w接近于0.参数C的作用还有另一个有趣之处。
较小的C可以让算法尽量适应“大多数”数据点,而较大的C值更强调每个数据点都分类正确的重要性。
在左图中,C的值最小,对应强正则化;大部分属于类别0的点都位于底部,大部分属于类别1的点都位于顶部。
线性分类器设计(张天航空天科学技术研究院201121250314)1 问题描述对“data1.m”数据,分别采用感知机算法、最小平方误差算法、线性SVM算法设计分类器,分别画出决策面,并比较性能。
(注意讨论算法中参数设置的影响。
)2 方法描述2.1 感知机算法线性分类器的第一个迭代算法是1956年由Frank Rosenblatt提出的,即具有自学习能力的感知器(Perceptron)神经网络模型,用来模拟动物或者人脑的感知和学习能力。
这个算法被提出后,受到了很大的关注。
感知器在神经网络发展的历史上占据着特殊的位置:它是第一个从算法上完整描述的神经网络,是一种具有分层神经网络结构、神经元之间有自适应权相连接的神经网络的一个基本网络。
感知器的学习过程是不断改变权向量的输入,更新结构中的可变参数,最后实现在有限次迭代之后的收敛。
感知器的基本模型结构如图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,满足:12*0,*0,T Tw x x w x x ωω>∀∈<∀∈ (1)引入一个代价函数,定义为:()**T x x YJ w w xδ∈=∑ (2)其中,Y 是权向量w 定义的超平面错误分类的训练向量的子集。
变量x δ定义为:当1x ω∈时,x δ= -1;当2x ω∈时,x δ= +1。
线性判别分析(LDA)准则:FIsher准则、感知机准则、最⼩⼆乘(最⼩均⽅误差)准则准则采⽤⼀种分类形式后,就要采⽤准则来衡量分类的效果,最好的结果⼀般出现在准则函数的极值点上,因此将分类器的设计问题转化为求准则函数极值问题,即求准则函数的参数,如线性分类器中的权值向量。
分类器设计准则:FIsher准则、感知机准则、最⼩⼆乘(最⼩均⽅误差)准则Fisher准则Fisher线性判别分析LDA(Linearity Distinction Analysis)基本思想:对于两个类别线性分类的问题,选择合适的阈值,使得Fisher准则函数达到极值的向量作为最佳投影⽅向,与投影⽅向垂直的超平⾯就是两类的分类⾯,使得样本在该⽅向上投影后,达到最⼤的类间离散度和最⼩的类内离散度。
Fisher线性判别并不对样本的分布进⾏任何假设,但在很多情况下,当样本维数⽐较⾼且样本数也⽐较多时,投影到⼀维空间后样本接近正态分布,这时可以在⼀维空间中⽤样本拟合正态分布,⽤得到的参数来确定分类阈值。
类间离差平⽅和最⼤,类内离差平⽅和最⼩的投影⽅向。
准则函数:组间离差平⽅和/组内离差平⽅和;准则:超过阈值?感知机准则基本思想:对于线性判别函数,当模式的维数已知时,判别函数的形式实际上就已经确定下来,线性判别的过程即是确定权向量 。
感知机是⼀种神经⽹络模型,其特点是随意确定判别函数初始值,在对样本分类训练过程中,针对分类错误的样本不断进⾏权值修正,逐步迭代直⾄最终分类符合预定标准,从⽽确定权向量值。
可以证明感知机是⼀种收敛算法,只要模式类别是线性可分的,就可以在有限的迭代步数⾥求出权向量的解。
优点:简单、便于实现。
缺点:结果不唯⼀,在线性不可分情况下不收敛。
给定初始权值向量,通过样本的训练分类过程逐渐修正权值直到最终确定。
准则函数:错分样本数,准则:错分样本数为0上述两个准则的区别和联系Fisher线性判别是把线性分类器的设计分为两步,⼀是确定最优⽅向,⼆是在这个⽅向上确定分类阈值;感知机则是通过不断迭代直接得到完整的线性判别函数。
统计学习方法李航---第2章感知机2016-03-30 09:54 489人阅读评论(0) 收藏举报分类:机器学习(14)版权声明:本文为博主原创文章,未经博主允许不得转载。
目录(?)[+]第2章感知机感知机(perceptron)是二类分类的线性分类模型,其输入为实例的特征向量,输出为实例的类别,取+1和-1二值。
感知机对应于输入空间(特征空间)中将实例划分为正负两类的分离超平面,属于判别模型。
感知机学习旨在求出将训练数据进行线性划分的分离超平面,为此,导入基于误分类的损失函数,利用梯度下降法对损失函数进行极小化求得感知机模型。
2.1 感知机模型定义(感知机):假设输入空间(特征空间)是X--R n,输出空间是 Y={+1,-1}.输入x属于X表示实例的特征向量,对应于输入空间(特征空间)的点;输出y属于Y表示实例的类别。
由输入空间到输出空间的如下函数f (x)=sign(w*x+b)其中,w和b为感知机模型参数,w叫作权值(weight)或权值向量(weightvectot) b叫作偏置(bias).感知机是一种线性分类模型,属于判别模型.感知机模型的假设空间是定义在特征空间中的所有线性分类模型(linear classification model)或线性分类器(linear classifier)。
2.2 感知机学习策略数据集的线性可分性:如果存在某个超平面S: w*x+b=0能够将数据集的正实例点和负实例点完全正确地划分到超平面的两侧,则称数据集为线性可分数据集(linearly aeparahle data sec);否则,称数据集线性不可分。
感知机学习策略:为了找出这样的超平面,即确定感知机模型参数w,b。
需要确定一个学习策略,即定义(经验)损失函数并将损失函数极小化。
损失函数:误分类点到超平面S的总距离。
2.3 感知机学习算法感知机学习问题转化为求解损失函数的最优化问题,最优化的方法是随机梯度下降法.感知机学习的具体算法包括原始形式和对偶形式。
最小均方算法原理最小均方算法(Least Mean Square Algorithm,简称LMS算法)是一种常用的自适应滤波算法,用于逼近线性时变系统。
它基于随机梯度下降(Stochastic Gradient Descent)的思想,通过对滤波器的系数进行迭代更新,逐步调整滤波器的输出,以减小期望输出与实际输出之间的均方误差(Mean Square Error, MSE)。
LMS算法的原理可以通过以下步骤概括:1. 初始化:开始时,先对滤波器的系数进行初始化,常见的方法是使用随机数生成一个初始系数矩阵。
2. 输入数据和期望输出:给定输入信号向量x(n)和期望输出d(n),其中n表示时间步。
3. 估计输出:将输入信号向量x(n)通过滤波器的系数矩阵w(n)做卷积运算得到滤波器的估计输出y(n)。
4. 计算误差:将期望输出d(n)与估计输出y(n)相减,得到误差信号e(n)。
5. 更新系数:根据误差信号e(n)和输入信号向量x(n),对滤波器的系数矩阵w(n)进行更新。
更新的公式可以用以下形式表示:w(n+1) = w(n) + 2*μ*x(n)*e(n)其中,μ表示步长参数,用来调整每次更新的幅度。
步长参数的选择需要根据具体问题进行合理调整。
较小的步长可能导致收敛速度较慢,而较大的步长可能导致系统不稳定。
6. 重复上述步骤:重复步骤3-5,直到滤波器的系数收敛或达到预设的停止条件。
LMS算法的收敛性和稳定性与系数的选择有关。
如果步长参数选择合理,并且输入信号的相关性较低,LMS算法通常能够收敛到一个稳定的滤波器解。
然而,在一些情况下,由于相关性较高或者输入信号的统计特性发生变化,LMS算法可能会收敛到一个次优的解。
LMS算法的应用十分广泛,特别是在自适应滤波、信号处理、通信系统等领域。
由于其简单性和实时性,LMS算法在很多实时自适应滤波问题中被广泛采用,如降噪、回声消除等。
在通过训练数据来学习系统行为或估计未知参数的问题中,LMS算法也是一种常用的解决方法。
感知机的数学表达式感知机是一种二分类的线性分类模型,其数学表达式为:$$f(x) = sign(\sum_{i=1}^{n} w_i x_i + b)$$其中,$x$ 是输入向量,$w$ 是权重向量,$b$ 是偏置。
$n$ 是输入向量的维度。
感知机的主要思想是将输入向量乘以权重向量并加上偏置,得到一个值,然后通过一个符号函数将这个值映射为类别标签。
如果这个值大于等于零,则将类别标签设置为正类(+1),否则设置为负类(-1)。
感知机的训练过程是通过不断调整权重向量和偏置来找到一个最优的超平面,使得训练样本能够被正确分类。
具体来说,感知机采用的是在线学习算法,即一次只处理一个样本,根据预测结果和真实标签的差异来调整参数。
训练过程如下:1. 初始化权重向量 $w$ 和偏置 $b$;2. 选择一个训练样本 $(x, y)$,其中 $x$ 是输入向量,$y$ 是真实标签;3. 计算预测输出 $output = \sum_{i=1}^{n} w_i x_i + b$;4. 如果预测输出 $output$ 与真实标签 $y$ 不一致,则更新参数: - $w_i = w_i + \eta \cdot y \cdot x_i$,其中 $\eta$ 是学习率; - $b = b + \eta \cdot y$;5. 重复步骤2-4,直到所有训练样本都被正确分类或达到停止条件。
感知机的收敛性定理表明,如果训练样本是线性可分的,并且学习率$\eta$ 足够小,那么感知机算法经过有限次迭代就能找到一个将训练样本完全正确分类的超平面。
然而,如果训练样本线性不可分,则感知机算法将无法收敛。
感知机作为最早的神经网络模型之一,具有简单高效的特点。
然而,它也存在一些局限性,比如只能处理线性可分问题,对噪声敏感,并且不能学习非线性关系。
为了克服这些问题,后续发展出了更复杂的神经网络模型,如多层感知机、支持向量机等。
总结起来,感知机是一种二分类的线性分类模型,通过计算输入向量与权重向量的线性组合并加上偏置,然后通过符号函数将结果映射为类别标签。
感知机分类(perceptronclassification)概述在机器学习中,感知机(perceptron)是⼆分类的线性分类模型,属于监督学习算法。
输⼊为实例的特征向量,输出为实例的类别(取+1和-1)。
感知机对应于输⼊空间中将实例划分为两类的分离超平⾯。
感知机旨在求出该超平⾯,为求得超平⾯导⼊了基于误分类的损失函数,利⽤梯度下降法对损失函数进⾏最优化(最优化)。
感知机的学习算法具有简单⽽易于实现的优点,分为原始形式和对偶形式。
感知机预测是⽤学习得到的感知机模型对新的实例进⾏预测的,因此属于判别模型。
感知机由Rosenblatt于1957年提出的,是神经⽹络和⽀持向量机的基础。
定义假设输⼊空间(特征向量)为,输出空间为。
输⼊表⽰实例的特征向量,对应于输⼊空间的点;输出表⽰⽰例的类别。
由输⼊空间到输出空间的函数为称为感知机。
其中,参数w叫做权值向量(weight),b称为偏置(bias)。
表⽰w和x的点积sign为符号函数,即感知机算法就是要找到⼀个超平⾯将我们的数据分为两部分。
超平⾯就是维度⽐我们当前维度空间⼩⼀个维度的空间,例如:我们当前的维度是⼆维的空间(由数据维度确定,x有多少列就有多⼤的维度),那么超平⾯就是⼀维的,即⼀条直线。
如下图算法步骤数据集:其中:我们现在就是要找到⼀个超平⾯:将数据集划分为正负两部分:如果能得到这样⼀个超平⾯,则称我们的数据集T是线性可分的,否则称数据集T是线性不可分的损失函数感知机的损失函数是误分类点到超平⾯S的总距离对于误分类的点:假设误分类点的集合为M,所有误分类点到超平⾯S的距离:所以感知机的损失函数为:我们的问题就是要找到最优的w, b,使得损失函数最⼩。
梯度下降算法我们采⽤梯度下降算法:梯度下降法就是利⽤导数,然后沿着导数的⽅向下降, 最后得到最优的解,如图:⾸先选择w0, b0,⼀般初始化为0.然后分别对w, b求导:选择合适的步长, 我们称为学习率。
线性分类器之感知机算法和最小平方误差算法1.问题描述对所提供的的数据“data1.m ”,分别采用感知机算法、最小平方误差算法设计分类器,分别画出决策面,并比较性能,并且讨论算法中参数设置的影响2.方法叙述2.1感知机算法1.假设已知一组容量为N 的样本集1y ,2y ,…,N y ,其中N y 为d 维增广样本向量,分别来自1ω和2ω类。
如果有一个线性机器能把每个样本正确分类,即存在一个权向量a ,使得对于任何1ω∈y ,都有y a T >0,而对一任何2ω∈y ,都有y a T<0,则称这组样本集线性可分;否则称线性不可分。
若线性可分,则必存在一个权向量a ,能将每个样本正确分类。
2.基本方法:由上面原理可知,样本集1y ,2y ,…,N y 是线性可分,则必存在某个权向量a ,使得⎪⎩⎪⎨⎧∈<∈>21y ,0y ,0ωωj j Ti i T y a y a 对一切对一切 如果我们在来自2ω类的样本j y 前面加上一个负号,即令j y =—j y ,其中2ω∈j y ,则也有y a T >0。
因此,我们令⎩⎨⎧∈∈='21y ,-y ,ωωj ji i n y y y 对一切对一切那么,我们就可以不管样本原来的类型标志,只要找到一个对全部样本ny '都满足y a T >0,N n ,,3,2,1⋯⋯=的权向量a 就行了。
此过程称为样本的规范化,ny '成为规范化增广样本向量,后面我们用y 来表示它。
我们的目的是找到一个解向量*a ,使得N n y a n T ,...,2,1,0=>为此我们首先考虑处理线性可分问题的算法。
先构造这样一个准则函数)()(y∑∈=ky Tp y aa J γδ式中kγ是被权向量a 错分类的样本集合。
y δ的取值保证因此()a J p 总是大于等于0。
即错分类时有0≤y a T (1ω∈y ),0≥y a T(2ω∈y ),此时的y δ分别为-1,1。
线性分类器之感知机算法和最小平方误差算法1.问题描述对所提供的的数据“data1.m ”,分别采用感知机算法、最小平方误差算法设计分类器,分别画出决策面,并比较性能,并且讨论算法中参数设置的影响2.方法叙述2.1感知机算法1.假设已知一组容量为N 的样本集1y ,2y ,…,N y ,其中N y 为d 维增广样本向量,分别来自1ω和2ω类。
如果有一个线性机器能把每个样本正确分类,即存在一个权向量a ,使得对于任何1ω∈y ,都有y a T >0,而对一任何2ω∈y ,都有y a T<0,则称这组样本集线性可分;否则称线性不可分。
若线性可分,则必存在一个权向量a ,能将每个样本正确分类。
2.基本方法:由上面原理可知,样本集1y ,2y ,…,N y 是线性可分,则必存在某个权向量a ,使得⎪⎩⎪⎨⎧∈<∈>21y ,0y ,0ωωj j Ti i T y a y a 对一切对一切 如果我们在来自2ω类的样本j y 前面加上一个负号,即令j y =—j y ,其中2ω∈j y ,则也有y a T >0。
因此,我们令⎩⎨⎧∈∈='21y ,-y ,ωωj ji i n y y y 对一切对一切那么,我们就可以不管样本原来的类型标志,只要找到一个对全部样本ny '都满足y a T >0,N n ,,3,2,1⋯⋯=的权向量a 就行了。
此过程称为样本的规范化,ny '成为规范化增广样本向量,后面我们用y 来表示它。
我们的目的是找到一个解向量*a ,使得N n y a n T ,...,2,1,0=>为此我们首先考虑处理线性可分问题的算法。
先构造这样一个准则函数)()(y∑∈=ky Tp y aa J γδ式中kγ是被权向量a 错分类的样本集合。
y δ的取值保证因此()a J p 总是大于等于0。
即错分类时有0≤y a T (1ω∈y ),0≥y a T(2ω∈y ),此时的y δ分别为-1,1。
下一步便是求解使代价函数)(a J p 达到极小值时的解向量*a 。
这里我们采用梯度下降法。
首先对a 求梯度,这是一个纯量函数对向量的求导问题,不难看出∑∈=∂∂=∇ky p p y aa J a J γδ)()()(y梯度下降法的迭代公式为J k a k a k ∇-=+ρ)()1(,将上式代入得∑∈=+ky ky k a k a γδρy-)()1(这样,经过有限次修改,一定能找到一个解向量*a 。
其中算法在运行之前必须人为任意给定权向量)1(a ,而常量k ρ的选取也十分讲究。
2.2最小平方误差算法(MSE)感知算法是基于求解线性不等式组的算法,其目标是寻找权向量a ,使得满足n y a T>0的数目最大,从而是错分样本数数最小。
而不同的是,最小平方误差算法(以下简称MSE),是对准则函数引进最小均方误差这一条件而建立起来的,这种算法的主要特点是在训练过程中判定训练集是否线性可分,从而对结果的收敛性做出判断。
我们把不等式组变为如下形式:n y a T =n b >0n b 为给定的任意的正常数。
将上式联立方程组可以得到:b =Ya其中Y=[Ty 1Ty 2……Ty N ]T ,为N*d 的矩阵,Ty n 为规范化增广样本向量。
通常样本数N 大于样本维度d ,故Y 为长方形阵且一般列满秩。
实际上这是方程个数多余未知数的情况,一般为矛盾方程组无精确解。
因此定义误差向量:b -e Ya =并且定义误差准则函数∑=-===Nn n n T b a a J 1222s y ||b -Ya ||||e ||)()(然后寻找一个使得固定值J s (a)极小化的a 作为问题的解。
这就是矛盾方程组的最小二乘近似解,也就是所谓的伪逆解或者是MSE 解。
使用解析法求出伪逆解。
首先对)(s a J 求梯度:)()(b b a a J n Nn n n T -Ya Y 2y y 2)(T 1s =-==∇∑=令0)(s =∇a J 得a *=(Y T Y)-1Y T b ,这就是式子Y a =b 的MSE 解。
可以看出,)(s a J 有唯一的极小值0,发生在Y a =b 时。
准则函数的值等于n y a T和n b 误差的平方之和,此时1,2,,i N = ,我们的目标是使这个误差的平方和最小,因此称这一准则导出的算法为最小均方误差算法。
我们可以发现,当b=[N/N1,N/N1,N/N1……N/N2,N/N2……]T (N/N1有N1个,N/N2有N2个,N=N1+N2),MSE 解a *等价于Fisher 解。
证明略。
同样,当样本N 趋于无穷的时候,如果令b =u N ,其中u N 中元素均是1,则它以最小均方误差逼近贝叶斯判别函数。
3.算法实现3.1数据读取子函数function [x1,x2]=getts()%分别读取分类x1和x2 x1=zeros(45,2); x2=zeros(45,2);x1(1,1)=5.1418; x1(1,2)=0.5950; x1(2,1)=5.5519; x1(2,2)=3.5091; x1(3,1)=5.3836; x1(3,2)=2.8033; x1(4,1)=3.2419; x1(4,2)=3.7278; x1(5,1)=4.4427; x1(5,2)=3.8981; x1(6,1)=4.9111; x1(6,2)=2.8710; x1(7,1)=2.9259; x1(7,2)=3.4879; x1(8,1)=4.2018; x1(8,2)=2.4973; x1(9,1)=4.7629; x1(9,2)=2.5163; x1(10,1)=2.7118; x1(10,2)=2.4264; x1(11,1)=3.0470; x1(11,2)=1.5699; x1(12,1)=4.7782; x1(12,2)=3.3504; x1(13,1)=3.9937; x1(13,2)=4.8529; x1(14,1)=4.5245; x1(14,2)=2.1322; x1(15,1)=5.3643; x1(15,2)=2.2477; x1(16,1)=4.4820; x1(16,2)=4.0843; x1(17,1)=3.2129; x1(17,2)=3.0592; x1(18,1)=4.7520; x1(18,2)=5.3119; x1(19,1)=3.8331; x1(19,2)=0.4484; x1(20,1)=3.1838; x1(20,2)=1.4494; x1(21,1)=6.0941; x1(21,2)=1.8544; x1(22,1)=4.0802; x1(22,2)=6.2646; x1(23,1)=3.0627; x1(23,2)=3.6474; x1(24,1)=4.6357; x1(24,2)=2.3344; x1(25,1)=5.6820; x1(25,2)=3.0450; x1(26,1)=4.5936; x1(26,2)=2.5265;x1(27,1)=4.7902; x1(27,2)=4.4668; x1(28,1)=4.1053; x1(28,2)=3.0274; x1(29,1)=3.8414; x1(29,2)=4.2269; x1(30,1)=4.8709; x1(30,2)=4.0535; x1(31,1)=3.8052; x1(31,2)=2.6531; x1(32,1)=4.0755; x1(32,2)=2.8295; x1(33,1)=3.4734; x1(33,2)=3.1919; x1(34,1)=3.3145; x1(34,2)=1.8009; x1(35,1)=3.7316; x1(35,2)=2.6421; x1(36,1)=2.8117; x1(36,2)=2.8658; x1(37,1)=4.2486; x1(37,2)=1.4651; x1(38,1)=4.1025; x1(38,2)=4.4063; x1(39,1)=3.9590; x1(39,2)=1.3024; x1(40,1)=1.7524; x1(40,2)=1.9339; x1(41,1)=3.4892; x1(41,2)=1.2457; x1(42,1)=4.2492; x1(42,2)=4.5982; x1(43,1)=4.3692; x1(43,2)=1.9794; x1(44,1)=4.1792; x1(44,2)=0.4113; x1(45,1)=3.9627; x1(45,2)=4.2198;x2(1,1)=9.7302; x2(1,2)=5.5080; x2(2,1)=8.8067; x2(2,2)=5.1319; x2(3,1)=8.1664; x2(3,2)=5.2801; x2(4,1)=6.9686; x2(4,2)=4.0172; x2(5,1)=7.0973; x2(5,2)=4.0559; x2(6,1)=9.4755; x2(6,2)=4.9869; x2(7,1)=9.3809; x2(7,2)=5.3543;x2(8,1)=7.2704; x2(8,2)=4.1053;x2(9,1)=8.9674; x2(9,2)=5.8121;x2(10,1)=8.2606; x2(10,2)=5.1095; x2(11,1)=7.5518; x2(11,2)=7.7316; x2(12,1)=7.0016; x2(12,2)=5.4111; x2(13,1)=8.3442; x2(13,2)=3.6931; x2(14,1)=5.8173; x2(14,2)=5.3838; x2(15,1)=6.1123; x2(15,2)=5.4995; x2(16,1)=10.4188; x2(16,2)=4.4892; x2(17,1)=7.9136; x2(17,2)=5.2349; x2(18,1)=11.1547; x2(18,2)=4.4022; x2(19,1)=7.7080; x2(19,2)=5.0208; x2(20,1)=8.2079; x2(20,2)=5.4194; x2(21,1)=9.1078; x2(21,2)=6.1911; x2(22,1)=7.7857; x2(22,2)=5.7712; x2(23,1)=7.3740; x2(23,2)=2.3558; x2(24,1)=9.7184; x2(24,2)=5.2854; x2(25,1)=6.9559; x2(25,2)=5.8261; x2(26,1)=8.9691; x2(26,2)=4.9919; x2(27,1)=7.3872; x2(27,2)=5.8584; x2(28,1)=8.8922; x2(28,2)=5.7748; x2(29,1)=9.0175; x2(29,2)=6.3059; x2(30,1)=7.0041; x2(30,2)=6.2315; x2(31,1)=8.6396; x2(31,2)=5.9586; x2(32,1)=9.2394; x2(32,2)=3.3455; x2(33,1)=6.7376; x2(33,2)=4.0096; x2(34,1)=8.4345; x2(34,2)=5.6852; x2(35,1)=7.9559; x2(35,2)=4.0251; x2(36,1)=6.5268; x2(36,2)=4.3933; x2(37,1)=7.6699; x2(37,2)=5.6868; x2(38,1)=7.8075; x2(38,2)=5.0200; x2(39,1)=6.6997; x2(39,2)=6.0638; x2(40,1)=5.6549; x2(40,2)=3.6590; x2(41,1)=6.9086; x2(41,2)=5.4795; x2(42,1)=7.9933; x2(42,2)=3.3660; x2(43,1)=5.9318; x2(43,2)=3.5573; x2(44,1)=9.5157; x2(44,2)=5.2938; x2(45,1)=7.2795; x2(45,2)=4.8596; x2(46,1)=5.5233; x2(46,2)=3.8697; x2(47,1)=8.1331; x2(47,2)=4.7075; x2(48,1)=9.7851; x2(48,2)=4.4175; x2(49,1)=8.0636; x2(49,2)=4.1037; x2(50,1)=8.1944; x2(50,2)=5.2486; x2(51,1)=7.9677; x2(51,2)=3.5103; x2(52,1)=8.2083; x2(52,2)=5.3135; x2(53,1)=9.0586; x2(53,2)=2.9749; x2(54,1)=8.2188; x2(54,2)=5.5290; x2(55,1)=8.9064; x2(55,2)=5.3435;3.2感知机算法clear all;[x1,x2]=getts();%读取训练样本x1,x2w=[5.1 1.9 -34]';%设置权向量初值Dcost=[0;0;0];%用来存储代价函数的梯度和i=0;n=0;cost=1;%初始化循环条件while(cost~=0)i=i+1;cost=0;for j=1:45if (w'*[x1(j,:) 1]')>0Dcost=Dcost+[x1(j,1:2) 1]';% 用来存储代价函数的梯度和cost=cost+w'*[x1(j,1:2) 1]';%代价函数值endendfor k=1:55if (w'*[x2(k,:) 1]')<0Dcost=Dcost-[x2(k,1:2) 1]'; % 用来存储代价函数的梯度和cost=cost+w'*[x2(k,:) 1]'; %代价函数值endendw=w-0.001*Dcost/i;%权向量更新n=n+1;endfor i=1:45 r1(i)=x1(i,1);end;for i=1:45 r2(i)=x1(i,2);end;for i=1:55 r3(i)=x2(i,1);end;for i=1:55 r4(i)=x2(i,2);end;figure(1);plot(r1,r2,'*',r3,r4,'o');title('the training set');figure(2)x=0:0.01:12;y=-x*w(1)/w(2)-w(3)/w(2);%画决策面plot(r1,r2,'*',r3,r4,'o',x,y);axis([0 12 0 7]);3.2最小平方误差算法clear all;[x1,x2]=getts();X=zeros(100,3);Y=zeros(100,1);X(1:45,1:2)=x1;%获得Xa=Y中的增广样本矩阵X X(1:45,3)=1;X(46:100,1:2)=x2;X(46:100,3)=1;Y(1:45)=1;Y(46:100)=-1;w=(inv(X'*X))*X'*Y%得到伪逆解;for i=1:45 r1(i)=x1(i,1);end;for i=1:45 r2(i)=x1(i,2);end;for i=1:55 r3(i)=x2(i,1);end;for i=1:55 r4(i)=x2(i,2);end;figure(1);plot(r1,r2,'*',r3,r4,'o');title('the training set');figure(2)x=0:0.01:12;y=-x*w(1)/w(2)-w(3)/w(2);%画决策面plot(r1,r2,'*',r3,r4,'o',x,y);axis([0 12 0 7]);4.结果分析比较4.1感知机算法分类的结果Fig1.感知机算法分类的结果感知机分类器结果如上图所示,能够较好的将两类分开。