mitchell的《机器学习》为什么没有讲到svm

机器学习温和指南
发表于 15:00|
来源MonkeyLearn|
作者Raúl Garreta
摘要:机器学习与NLP专家、MonkeyLearn联合创始人&CEO Raúl Garreta面向初学者大体概括使用机器学习过程中的重要概念,应用程序和挑战,旨在让读者能够继续探寻机器学习知识。
【编者按】机器学习是如今人工智能领域中进展最大的方面,更多的初学者开始进入了这个领域。在这篇文章中,机器学习与NLP专家、MonkeyLearn联合创始人&CEO&Raúl Garreta面向初学者大体概括使用机器学习过程中的重要概念,应用程序和挑战,旨在让读者能够继续探寻机器学习知识。机器学习是人工智能的一个分支,它通过构建算法让计算机学习,并且在数据集上使用这些算法来完成任务,而不需要进行明确编码。明白了吗?我们可以让机器去学习如何做事情!当我第一次听到它的时候,让我非常兴奋。那意味着我们可以对计算机进行编码,让它们自己去学习东西!学习的能力是智能最重要的一个方面。将这种能力运用到机器上,应该是向让计算机更智能迈出了一大步。事实上,机器学习是如今人工智能领域中进展最大的方面;现在它是个时髦的话题,并且使用机器学习也非常可能造就出更智能机器。这篇文章将会向初学者简要介绍机器学习。我将大体概括使用机器学习过程中的重要概念,应用程序和挑战。给出机器学习正式的详尽的说明不是本文的宗旨,而是向读者介绍一些初步概念,让读者能够继续探寻机器学习知识。机器学习真面目好了,并不是所有事物都和听说的那样美好,机器学习也有它的局限之处。我们不能构建类似于《星际迷航》中的Data或者《2001太空漫游》中的Hal
9000这样的智能机器。但是,我们拥有足够的现实世界的应用程序,机器学习在此神奇般的起着作用。下面是一些实用机器学习应用中最常见的分类:图像处理图像处理的问题基本上都需要分析图像获取数据或是做一些转换。下面是一些例子:图像标记,比如在Facebook中,算法可以自动检测照片中出现的你的或者你朋友的脸。基本上是机器学习算法从你手动标记的照片中学习。光学字符识别(OCR),算法学会将手稿或者扫描文本转换成数字化版本。该算法需要学会将手写字符图像转换成相应的数字化字母。自动驾驶汽车,让汽车通过图像处理来自动驾驶的机制之一。机器学习算法通过摄像机拍摄的每一帧图像来学习哪里是道路的边缘,是否有停车标志或者是否有车靠近。文本分析文本分析是我们从文本文件,比如推特,邮件,聊天记录,文档等中提取或分类信息。下面是一些流行的例子:垃圾邮件过滤,是最为人知也是最常用的文本分类应用(给文本分类)之一。垃圾邮件过滤器学习如何基于内容和主题将邮件归类为垃圾邮件。情感分析,文本分类的另一个应用,该算法必须学会基于作者表达的情绪,来将一个观点分类成积极、中立或者消极。信息提取,从文本中,学会提取特定的信息或数据块,比如,提取地址,实体,关键词等。数据挖掘数据挖掘是用来从数据中发现某些模式或者做出预测。这个定义有点普通,不过你可以理解成从海量数据库表中挖掘有用的信息。每一行都可以是我们的训练实例,每一列都可以作为一个特征。我们可能会感兴趣用表中剩下的列来预测一条新的列,或者发现某种模式来对行进行分组。比如:异常检测:检测异常值,例如信用卡欺诈检测,你可以从一个用户平常的购物模式来检测哪些购物方式是异常行为。关联规则:比如,在超市或者电子商务网站,你可以通过观察哪些产品会一起被购买来发现客户的购买习惯。这些信息可以用于营销目的。分组:比如,在SaaS平台,可以通过用户行为和资料来对用户进行分组。预测:从剩余变量中预测出另一个变量(数据库中的一列)。比如,你可以通过对现有客户资料和信用评分这些信息来学习并预测新客户的信用评分。视频游戏与机器人视频游戏和机器人是机器学习得到应用的一个巨大领域。一般来说我们有一个Agent(游戏角色或机器人),它必须根据环境(视频游戏中的虚拟环境或者对于机器人来说的真实环境)来行动。机器学习可以使这个Agent执行任务,比如移动到某个环境中而同时避开障碍或者敌人。在这些情形下一个最受欢迎的机器学习技术是,Agent通过学习环境的强化系数(如果Agent碰到了障碍物强化系数则为负,如果达到目标则为正)来执行任务。好了,我现在知道什么是机器学习了,但是它是如何工作的呢?大约10年前我读过的第一批关于机器学习书籍中有一本是。这本书是1997年写的,但是书中的总体概念在今天仍然有用。在那本书中,我喜欢书中对机器学习的正式定义,如下:对于某类任务T和性能度量P,如果一个计算机程序在T上以P衡量的性能随着经验E而自我完善,那么我们称这个计算机程序在从经验E学习。比如,人工游戏玩家要学会下国际象棋(任务T),可以通过查看以前国际象棋比赛或与导师对弈(经验E)来学习。它的性能P可以用它与人类玩家对弈获胜的比例来度量。让我们用更多例子来阐述:案例1:向系统中输入一张图片,系统需要判别图片中是否有巴拉克·奥巴马的脸(一般来说是类似于Facebook的图像自动标记)。案例2:向系统中输入一条推文,系统判别这条推文是否带有积极或消极情感。案例3:向系统中输入某人的一些信息,系统计算出此人偿还信用卡贷款的概率。在案例1中,系统任务是检测巴拉克·奥巴马的脸何时在图像中出现。可以将他出现在哪些照片或不出现在哪些照片中的信息作为经验。系统的性能可以用系统正确识别出奥巴马脸的次数比例来度量。在案例2中,系统任务是对一条推文进行情感分析。系统的经验可以是一组推文和与它们相对应的情绪。系统的性能可以由系统对新推文情感分析正确的比例来度量。在案例3中,系统任务是进行信用评分。系统可以将一系列用户资料和相对应的信用评分作为经验。可以用平方误差(预测和预期得分之间的差异)作为性能度量。为了让算法学习将输入转换成期望的输出,你必须提供训练实例或者训练样例,也就是Mitchell所定义的经验E。一组训练集是一系列实例的集合,它们将作为样例,机器学习算法从这些样例中学习并且完成预期任务。很好理解,不是吗?这就像你给小孩示范如何扔球一样,你扔几次球来教他如何做,然后通过观看那些样例,他开始学会自己扔球了。每一个训练实例通常表示为一组固定的属性或特征。特征是用来表示每一个实例的方式。例如,在案例1中,一张图片可以由每个像素的灰度级别来表示。在案例2中,推文可以用推文中出现的字词来表示。在案例3中,信用记录可以用此人的年龄、薪水、职业等来表示。计算和选择合理的特征来表示一个实例是使用机器学习的过程中最重要的任务之一,在本文稍后部分我们将讨论这点。机器学习算法的种类在本节中我们将讨论两大类机器学习算法:监督式学习和非监督式学习算法。这两类算法的主要区别在于我们提供给算法的训练样例,算法使用样例的方式以及它们解决问题的类别。监督式学习在中,机器学习算法可以看作是将特定输入转换成期望输出的过程。机器学习需要学会如何将所有可能输入转换成正确/期望输出,所以每个训练样例都有特定的输入和期望输出。在人工国际象棋手的案例中,输入可以是特定的棋盘状态,输出则可能是在这一状态下最好的下棋方式。根据输出的不同,我们又可以把监督式学习分为两小类:分类当输出值属于离散和有限集合,那么这就是一个问题。案例2可以看作是一个分类问题,输出是一个有限集合:积极,消极或者中立,我们的训练样例是这样的:
回归当输出是连续的数值,比如,概率,那么这就是一个问题。案例3就是一个回归问题,因为结果是介于0到1的数字,它代表一个人偿还债务的概率。在这个案例下,我们的训练样例是这样的:
监督式学习是机器学习算法中最受欢迎的一类。使用这种方法的缺陷是,对于每一个训练样例,我们都需要提供与之对应的正确输出,在大多情况下,这会耗费大量人力物力财力。比如,在情感分析案例中,如果我们需要10000条训练案例(推文),我们需要对每一条推文都标记上正确的情感(积极,消极或者中立)。这将需要一组人来阅读并标记每一条推文(非常耗时又无聊的工作)。这通常是机器学习算法最常见的瓶颈:收集正确标记的训练数据。非监督式学习第二类机器学习算法叫做。在这种情况下,训练数据只需要输入到算法中即可,不需要有与之对应的期望输出。典型的用例就是发现训练样例之间隐藏的结构或者关系。典型的案例就是,我们学习找到相似实例或者一组实例(集群)。比如我们有一条新闻,我们希望推荐一条相似的新闻。一些聚类算法比如从输入数据中来学习。机器学习算法好了,现在来讲讲数学和逻辑知识了。为了将输入转换成期望输出,我们可以使用不同的模型。机器学习并不是唯一的算法,你可能听说过支持向量机,朴素贝叶斯,决策树或者深度学习。那些是不同的机器学习算法,它们都可以解决同样的问题:学习将输入转换成正确的输出。那些不同的机器学习算法使用不同的范式或技术来执行学习过程,并将它们所学知识表示出来。在我们讲解每一个算法之前,我们要了解,最常见的原则是,机器学习算法试图达到一般化。也就是说,它们试图用最简单的理论来解释事物,这被称为原则。所有机器学习算法,不管它所使用的范式如何,都将尝试创建最简单的假设(做出最少假设的那个)来说明大部分的训练实例。有很多机器学习算法,不过我们来简要介绍下三种流行的算法:支持向量机:该模型试图构建一个超平面高维空间集,它试图通过计算与最近实例最大距离来区分不同类的实例。这个概念直观简单,但是该模型有时候也会非常复杂和强大。事实上,对于某些领域支持向量机是你目前可以使用的最好的机器算法之一。概率模型:这类模型通常通过对问题进行概率分布建模来预测正确的响应。这类算法中最流行的可能要属了,它使用贝叶斯定理和特征之间独立性假设来构建分类器。这个模型的优势之一是即简单又强大,而且不仅会返回预测值还会返回预测值的确定度,这是非常有用的。深度学习:是基于大名鼎鼎的模型的机器学习的新领域。神经网络有着联结的操作方式,它们试图模仿(以非常简单的方式)大脑的工作方式。基本上,它们由一组相互关联的神经元(处理的基本单位)组成,这些神经元被组织成许多层。简单来说,深度学习使用更深的层构建了新的结构,通过高层次抽象改进了算法,不仅改进了学习方式,而且构建了自动表示最重要特征的结构。机器学习中的重要方面机器学习听起来是个美妙的概念,它确实如此,但是机器学习中有一些过程并不是那么自动完成的。事实上,在设计解决方案时,很多时候需要人工操作。然而,这是得到优良结果至关重要的一环。其中一些方面有:我该使用哪类机器学习算法?监督式还是非监督式?你有标记的数据吗?也就是输入和对应的输出。如果有,那么你可以使用监督式学习算法。如果没有,那么使用非监督式算法可以解决问题。分类,回归还是聚类?这主要取决于你想要解决什么样的问题。如果你想标记数据(用离散的选项来标记),分类可能是正确的选择。相反,如果你想选择一个数字,比如说分数,回归则是你最佳的选择。或者你想在电子商务网站上针对用户目前浏览信息来推荐相似产品,那么聚类则是你最好的选择。深度学习,SVM,朴素贝叶斯,决策树···哪个最好?我的答案是:没有最好的。显然,深度学习和支持向量机已经证明,在不同应用中它们是最强大和最灵活的算法。但考虑到根据不同特定应用,一些机器学习算法可能比其他算法更好。分析它们各自的优势并且使用它们!特征工程特征工程是我们提取、选择用来表示训练样例和实例的最重要的特征供机器学习算法处理的过程。这个过程是机器学习(有时没有给予足够的赞誉和重视)中最重要的方面。请注意:如果你不向算法提供有质量保证的特征,结果会是糟糕的,即使你使用了此情形下最好的机器学习算法。这就像是你在黑暗中努力学习如何用肉眼阅读,不管你有多聪明你都不能做到。特征提取为了向机器学习算法输入数据,你通常需要将原始数据转换成算法能够“理解”的东西。这个过程被称作特征提取。通常我们将原始数据转换成特征向量。在案例1中,我们如何向机器学习算法输入一张图像呢?一个直接的方式就是将图像转换成向量,每一个成分是图像中每一个像素的灰度值。所以每一个成分或者特征,都可以用0到255的值表示,0表示黑色,255表示白色,1到254是不同程度的灰色。这种方式可能可行,但是如果我们提供更高层次的特征可能会工作得更好:图像包含人脸吗?肤色是什么?眼睛是什么颜色的?脸上有毛发吗?…这些是更高层次特征,它们向算法提供了更多的知识而不只是每个像素的灰度值(它们的计算可以用其他机器学习算法来完成)。通过提供更高层次特征我们就在“帮”机器学习算法得到更好的学习信息来判断我的或者其他某个人的脸是否出现在一张图像中。如果我们实施更好的特征提取:我们算法能够学习并得到预期结果的可能性会更高。我们可能不需要那么多训练样例。这样一来,我们可以显著减少训练模型所需的时间。特征选择有些时候(并不是大多情况下),我们选择向算法输入的特征可能并没多大用处。比如,当对一条推文进行情感标记的时候,我们可能将推文的长度,推文发表的时间等作为特征,这些特征可能有用也可能没有用,而且有自动的方法来识别它们是否有用。直观地,特征选择算法通过技术手段对每条特征打分,然后根据它们的分值返回最重要的那些特征。另一个需要记住的要点是:避免使用海量特征集。有些人可能尝试添加所有可能的特征到模型中让算法来学习。但这不是个好主意,当我们添加更多的特征来代表实例时,空间的维度就增加了,使得矩阵更加稀疏。直观地,因为我们得到更多的特征,我们必须有非常多的实例在表示每个特征的组合。这就是所谓的,随着模型复杂度的增长,训练样例的数目需要以指数形式随着增长,相信我,这将是棘手的问题。训练样例你必须向机器学习算法输入训练样例。取决于你想要解决的问题,我们将会使用到几百,几千,几百万甚至上亿的训练样例。而且,保持样例的质量也至关重要,如果你向算法中输入了错误的样例,得到良好结果的可能性会降低。收集大量的优质数据来训练机器学习算法通常是一项耗费人力物力的工作。除非你已经有标记好的数据,否则你需要自己手动或者雇佣他人来标记数据。一些众包平台的工具尝试解决这样的问题,你可以在这里找到一些工具来完成任务。或者通过使用自己的机器学习模型生成的辅助程序也可以将标记操作变得更高效。训练样本的一般规则是:你收集了越是优质的训练数据,你可能就可能得到更好的训练结果。测试样本和性能指标在我们训练完一个机器学习模型之后,我们需要测试它的性能。这是非常重要的,否则你不知道你的模型是否学会了东西!这个概念非常简单,我们使用一个测试集,一个不包含在训练集中的实例集合。基本上,我们将输入每个测试样本到模型中,然后观察它是否会得出预期结果。在监督式学习分类的情形中,我们只需要输入每条测试数据,然后检查模型输出是否与预期一样。如果我们的模型正确得出了95%的测试样本的结果,我们说这个模型的准确率是95%。需要牢记的是,训练和测试数据集不能重合,这是测试模型泛化能力和预测能力的唯一途径。你可能在你的训练数据上能够得到较高的准确率,但如果在单独的测试集上则得到较差的准确率。这就是,也就是算法对训练样本过度拟合导致糟糕的预测能力。通常避免过拟合的方法是使用较少特征的,更简单的模型,简化模型,并使用更大更具代表性的训练集。准确率是最基本的指标,同时你也应该关注其他的指标,比如,这将会告诉你算法的在每一个分类上(当使用监督式学习分类时)的性能如何。是观察分类算法在哪里出现混淆预测的好工具。对于回归和聚类问题,有其他的指标来度量算法的性能。性能在实际应用中,如果你要实施解决方案,你必须建立一个强大和高性能的解决方案。在机器学习应用中,这会是一个复杂的任务。首先,你需要选择机器学习框架,这不是项容易的工作,因为并不是所有的编程语言都有相关的强大工具。Python和是构建强大机器学习框架可以使用的编程语言的良好例子。选择好框架之后,就要考虑性能问题了。取决于数据量,复杂度和设计的算法,运行训练算法可能会耗费大量的计算时间和内存。你可能需要运行多个训练算法直到得到优良的结果。而且,通常你可能会用新实例来重新训练模型来提高准确率。为了在使用时训练大量模型并快速的到结果,我们通常使用较大内存和多核处理器的机器来并行训练模型。这些大多是实际问题,如果你想部署机器学习解决方案到实际应用中,考虑这些问题是非常重要的。结束语就是这样,我简要概述了什么是机器学习。还有许多实际应用以及机器学习算法和概念本文没有涉及,我们将这留给读者自行研究。机器学习是很强大的,但训练它也是艰难的,这篇文章中所说的训练模型时可能出现的困难只是冰山一角。通常具有计算机科学特别是机器学习的背景是取得优良结果所必须的。一个人可能会在步入正轨前因为诸多困难而失望。这就是我们创建的原因,使用于文本分析的机器学习技术大众化。避免重新发明轮子,让每一个软件开发人员或企业家迅速获得实用的结果。以下是我们主要的工作方面,抽象所有这些问题的最终用户,从机器学习复杂度到实际扩展性来排序,得到即插即用的机器学习。原文链接:(译者/刘翔宇 审核/赵屹华、朱正贵、李子健 责编/仲浩)1. 加入CSDN人工智能用户微信群,交流人工智能相关技术,加微信号“jianding_zhou”或扫下方二维码,由工作人员加入。请注明个人信息和入群需求,并在入群后按此格式改群名片:机构名-技术方向-姓名/昵称。2. 加入CSDN 人工智能技术交流QQ群,请搜索群号加入:。同上注明信息。3. CSDN高端专家微信群,采取受邀加入方式,不惧高门槛的请加微信号“jianding_zhou”或扫描下方二维码,PS:请务必带上你的BIO。
推荐阅读相关主题:
CSDN官方微信
扫描二维码,向CSDN吐槽
微信号:CSDNnews
相关热门文章当前位置: >>
机器学习算法与Python实践之(四)支持向量机(SVM)实现 - zouxy09的专栏 - 博客频道 - CSDN
14-8-12机器学习算法与Python实践之(四)支持向量机(SVM )实现 - zouxy09的专栏 - 博客频道 - CSDN.NET登录 | 注册zouxy09的专栏悲喜枯荣如是本无分别,当来则来,当去则去,随心,随性,随缘!-目录视图 摘要视图 订
阅个人资料7月推荐文章汇总 得下载分Android 精彩案例【独具慧眼 推荐有礼】找出您心中的技术大牛博文大赛获奖名单公布关注社区微信机器学习算法与Python实践之(四)支持向量机(SVM)实现分类: 机器学习 C/C++编程
00:12 8407人阅读 评论(15) 收藏 举报zouxy09机器学习算法与 Python实践之(四)支持向量机( SVM)实现
http://blog.csdn.net/zouxy09访问: 1164586次 积分: 10428分 排名: 第380名 原创: 108篇 转载: 11篇 译文: 1篇 评论: 1823条机器学习算法与Python实践这个系列主要是参考《机器学习实战》这本书。因为自己 想学习Python,然后也想对一些机器学习算法加深下了解,所以就想通过Python来实现几 个比较常用的机器学习算法。恰好遇见这本同样定位的书籍,所以就参考这本书的过程来 学习了。 在这一节我们主要是对支持向量机进行系统的回顾,以及通过Python来实现。由于内 容很多,所以这里分成三篇博文。第一篇讲SVM初级,第二篇讲进阶,主要是把SVM整条 知识链理直,第三篇介绍Python的实现。SVM有很多介绍的非常好的博文,具体可以参考 本文列出的参考文献和推荐阅读资料。在本文中,定位在于把集大成于一身的SVM的整体 知识链理直,所以不会涉及细节的推导。网上的解说的很好的推导和书籍很多,大家可以 进一步参考。个人简介 广州 华南理工大学 研二。 关注:机器学习、计算机视觉、 人机交互和人工智能等领域。 邮箱: 微博:Erik-zou文章搜索目录 一、引入 二、线性可分SVM与硬间隔最大化文章分类三、Dual优化问题OpenCV (29) 机器学习 (40) 计算机视觉 (70) Deep Learning (18) 语音识别与TTS (13) 图像处理 (53) Linux (15) Linux驱动 (4) 嵌入式 (18) OpenAL (3) Android (1) C/C++编程 (15) 摄像头相关 (5) 数学 (5) Kinect (9) 神经网络 (7) 随谈 (1)3.1、对偶问题 3.2、SVM优化的对偶问题 四、松弛向量与软间隔最大化 五、核函数 六、多类分类之SVM 6.1、“ 一对多” 的方法 6.2、“ 一对一” 的方法 七、KKT 条件分析 八、SVM的实现之SMO算法1/15blog.csdn.net/zouxy09/article/details/ 14-8-12文章存档 2014年05月 (2) 2014年03月 (2) 2014年01月 (1) 2013年12月 (7) 2013年11月 (5)机器学习算法与Python实践之(四)支持向量机(SVM )实现 - zouxy09的专栏 - 博客频道 - CSDN.NET8.1、坐标下降算法 8.2、SMO算法原理 8.3、SMO算法的Python实现 九、参考文献与推荐阅读展开阅读排行八、 SVM的实现之 SMO算法Deep Learning(深度学习)学习笔记整理系列之(三) 终于到SVM的实现部分了。那么神奇和有效的东西还得回归到实现才可以展示其强大 (62021) 的功力。SVM有效而且存在很高效的训练算法,这也是工业界非常青睐SVM的原因。 Deep Learning(深度学习)学习笔记整理系列之(一) (60822) 计算机视觉、机器学习相关领域论文和源代码大集合 --持续更新…… 前面讲到, SVM的学习问题可以转化为下面的对偶问题: (51732) Deep Learning(深度学习)学习笔记整理系列之(七) (40936) Deep Learning(深度学习)学习笔记整理系列之(六) (36614) Deep Learning(深度学习)学习笔记整理系列之(四) (34602) Deep Learning(深度学习)学习笔记整理系列之(二) (34042) Deep Learning(深度学习)学习笔记整理系列之(五) (27755) Deep Learning(深度学习)学习笔记整理系列之(八)需要满足的KKT 条件: (25654) TLD(Tracking-Learning-Detection)学习与源码理解之(一) (25542)评论排行 Deep Learning论文笔记之(五) (119) CNN卷积神经网络代码理解 基于Qt的P2P局域网聊天及文件传送软件设计 (96)计算机视觉、机器学习相关领域论文和源代码大集合 (80) --持续更新…… Deep Learning(深度学习)学习笔记整理系列之(七) (65)也就是说找到一组αi可以满足上面的这些条件的就是该目标的一个最优解。所以我们的优化目标是找到一组最优的αi*。一旦求出这些αi*,就很容易计算出权重向量w *和b,并得到分隔超平面了。 时空上下文视觉跟踪(STC)算法的解读与代码复现 (64)压缩跟踪Compressive Tracking (58) 从最大似然到EM算法浅解 (55)这是个凸二次规划问题,它具有全局最优解,一般可以通过现有的工具来优化。但当 训练样本非常多的时候,这些优化算法往往非常耗时低效,以致无法使用。从SVM提出到 压缩跟踪Compressive Tracking (53)源码理解 现在,也出现了很多优化训练的方法。其中,非常出名的一个是1982年由Microsoft Deep Learning(深度学习)学习笔记整理系列之(一) (41) Research的John C. Platt在论文《Sequential Minimal Optimization: A Fast Algorithm for Deep Learning(深度学习)学习笔记整理系列之(六) (40) TrainingSupport Vector Machines》中提出的Sequential Minimal Optimization序列最小化 优化算法,简称SMO算法。SMO算法的思想很简单,它将大优化的问题分解成多个小优 最新评论 化的问题。这些小问题往往比较容易求解,并且对他们进行顺序求解的结果与将他们作为 整体来求解的结果完全一致。在结果完全一致的同时,SMO的求解时间短很多。在深入 基于Qt的P2P局域网聊天及文件传送软件设计 小小不懂: 你好! SMO算法之前,我们先来了解下坐标下降这个算法,SMO其实基于这种简单的思想的。 麻烦您 了!谢谢! 从最大似然到EM算法浅解 今夕望月: 先马之8.1、坐标下降(上升)法 TLD(Tracking-Learning-Detection)学习与源码理解之(二) mountainheng: 楼主好 我的 Opencv是下载的源码 然后自己 假设要求解下面的优化问题: 编译的 运行tld时老是显示 capture devi...机器学习中的范数规则化之(一)L0、L1与L2范数 xyy: 博主大牛啊,这个 内容是挺充分的,只是有些东西 看的感觉有些不对啊.....望博主回 在这里,我们需要求解m个变量αi,一般来说是通过梯度下降(这里是求最大值,所以 头没事多看看,改掉些... 基于感知哈希算法的视觉目标跟踪 u: 楼主你好,真心佩 服你的思路,把代码跑了一遍, 10帧之后,跟踪框就会跑出三倍 区域了是怎么回事?应该叫上升)等算法每一次迭代对所有m个变量αi也就是α向量进行一次性优化。通过误差每次迭代调整α向量中每个元素的值。而坐标上升法(坐标上升与坐标下降可以看做是一 对,坐标上升是用来求解max最优化问题,坐标下降用于求min最优化问题)的思想是每次 基于3D卷积神经网络的人体行为理解(论文笔记) 迭代只调整一个变量αi的值,其他变量的值在这次迭代中固定不变。 xiexinxind: 请问,有3D CNN的C++源码否? Kinect开发学习笔记之(五)不带游戏者ID的深度数据的提取 飞天狐213: @zouxy09:博主你 好,对于归一化的公式我的理解 是:1, (256 * pBuffer )相当于...blog.csdn.net/zouxy09/article/details/2/15 14-8-12最简单的目标跟踪(模版匹配) u: double mag_r; P minMaxLoc(similarity, 0...机器学习算法与Python实践之(四)支持向量机(SVM )实现 - zouxy09的专栏 - 博客频道 - CSDN.NET基于Qt的P2P局域网聊天及文件传送软件设计 mjszba: 楼主,能发一份代码 吗?分不够啊,邮箱:
Kinect开发学习笔记之(五)不带游戏者ID的深度数据的提取 飞天狐213: & Kinect中深度值最 大为4096mm& ?这里是不是打错 了啊?5cm 都不到?最里面语句的意思是固定除αi之外的所有αj(i不等于j),这时W可看作只是关于αi的函 数,那么直接对αi求导优化即可。这里我们进行最大化求导的顺序i是从1到m,可以通过更 改优化顺序来使W能够更快地增加并收敛。如果W在内循环中能够很快地达到最优,那么 坐标上升法会是一个很高效的求极值方法。 用个二维的例子来说明下坐标下降法:我们需要寻找f(x,y)=x2+xy+y2的最小值处的(x*, y*),也就是下图的F*点的地方。假设我们初始的点是A(图是函数投影到xoy平面的等高线图,颜色越深值越小),我 们需要达到F*的地方。那最快的方法就是图中黄色线的路径,一次性就到达了,其实这个 是牛顿优化法,但如果是高维的话,这个方法就不太高效了(因为需要求解矩阵的逆,这 个不在这里讨论)。我们也可以按照红色所指示的路径来走。从A开始,先固定x,沿着y 轴往让f(x, y)值减小的方向走到B点,然后固定y,沿着x轴往让f(x, y)值减小的方向走到C 点,不断循环,直到到达F*。反正每次只要我们都往让f(x, y)值小的地方走就行了,这样 脚踏实地,一步步走,每一步都使f(x, y)慢慢变小,总有一天,皇天不负有心人的。到达 F*也是时间问题。到这里你可能会说,这红色线比黄色线贫富差距也太严重了吧。因为这 里是二维的简单的情况嘛。如果是高维的情况,而且目标函数很复杂的话,再加上样本集 很多,那么在梯度下降中,目标函数对所有αi求梯度或者在牛顿法中对矩阵求逆,都是很 耗时的。这时候,如果W只对单个αi优化很快的时候,坐标下降法可能会更加高效。8.2、 SMO算法 SMO算法的思想和坐标下降法的思想差不多。唯一不同的是,SMO是一次迭代优化 两个α而不是一个。为什么要优化两个呢?blog.csdn.net/zouxy09/article/details/3/15 14-8-12机器学习算法与Python实践之(四)支持向量机(SVM )实现 - zouxy09的专栏 - 博客频道 - CSDN.NET我们回到这个优化问题。我们可以看到这个优化问题存在着一个约束,也就是假设我们首先固定除α1以外的所有参数,然后在α1上求极值。但需要注意的是,因为 如果固定α1以外的所有参数,由上面这个约束条件可以知道,α1将不再是变量(可以由其 他值推出),因为问题中规定了:因此,我们需要一次选取两个参数做优化,比如αi和αj,此时αi可以由αj和其他参数表 示出来。这样回代入W中,W就只是关于αj的函数了,这时候就可以只对αj进行优化了。在 这里就是对αj进行求导,令导数为0就可以解出这个时候最优的αj了。然后也可以得到αi。 这就是一次的迭代过程,一次迭代只调整两个拉格朗日乘子αi和αj。SMO之所以高效就是 因为在固定其他参数后,对一个参数优化过程很高效(对一个参数的优化可以通过解析求 解,而不是迭代。虽然对一个参数的一次最小优化不可能保证其结果就是所优化的拉格朗 日乘子的最终结果,但会使目标函数向极小值迈进一步,这样对所有的乘子做最小优化, 直到所有满足KKT 条件时,目标函数达到最小)。 总结下来是: 重复下面过程直到收敛{ (1)选择两个拉格朗日乘子αi和αj; (2)固定其他拉格朗日乘子αk(k不等于i和j),只对αi和αj优化w(α); (3)根据优化后的αi和αj,更新截距b的值; } 那训练里面这两三步骤到底是怎么实现的,需要考虑什么呢?下面我们来具体分析 下: ( 1)选择 αi和 αj: 我们现在是每次迭代都优化目标函数的两个拉格朗日乘子αi和αj,然后其他的拉格朗 日乘子保持固定。如果有N个训练样本,我们就有N个拉格朗日乘子需要优化,但每次我 们只挑两个进行优化,我们就有N(N-1)种选择。那到底我们要选择哪对αi和αj呢?选择哪 对才好呢?想想我们的目标是什么?我们希望把所有违法KKT 条件的样本都纠正回来,因 为如果所有样本都满足KKT 条件的话,我们的优化就完成了。那就很直观了,哪个害群之 马最严重,我们得先对他进行思想教育,让他尽早回归正途。OK,那我们选择的第一个 变量αi就选违法KKT 条件最严重的那一个。那第二个变量αj怎么选呢? 我们是希望快点找到最优的N个拉格朗日乘子,使得代价函数最大,换句话说,要最 快的找到代价函数最大值的地方对应的N个拉格朗日乘子。这样我们的训练时间才会短。 就像你从广州去北京,有飞机和绿皮车给你选,你选啥?(就算你不考虑速度,也得考虑 下空姐的感受嘛,别辜负了她们渴望看到你的期盼,哈哈)。有点离题了,anyway,每 次迭代中,哪对αi和αj可以让我更快的达到代价函数值最大的地方,我们就选他们。或者blog.csdn.net/zouxy09/article/details//15 14-8-12机器学习算法与Python实践之(四)支持向量机(SVM )实现 - zouxy09的专栏 - 博客频道 - CSDN.NET说,走完这一步,选这对αi和αj代价函数值增加的值最多,比选择其他所有αi和αj的结合中 都多。这样我们才可以更快的接近代价函数的最大值,也就是达到优化的目标了。再例 如,下图,我们要从A点走到B点,按蓝色的路线走c2方向的时候,一跨一大步,按红色的 路线走c1方向的时候,只能是人类的一小步。所以,蓝色路线走两步就迈进了成功之门, 而红色的路线,人生曲折,好像成功遥遥无期一样,故曰,选择比努力更重要!真拢∷盗税胩欤涫稻鸵痪浠埃何裁疵看蔚家≡褡詈玫摩i和αj,就是为 了更快的收敛!那实践中每次迭代到底要怎样选αi和αj呢?这有个很好听的名字叫启发式 选择,主要思想是先选择最有可能需要优化(也就是违反KKT 条件最严重)的αi,再针对 这样的αi选择最有可能取得较大修正步长的αj。具体是以下两个过程: 1)第一个变量 αi的选择: SMO称选择第一个变量的过程为外层循环。外层训练在训练样本中选取违法KKT 条件 最严重的样本点。并将其对应的变量作为第一个变量。具体的,检验训练样本(xi, yi)是否 满足KKT 条件,也就是:该检验是在ε范围内进行的。在检验过程中,外层循环首先遍历所有满足条件0&αj&C 的样本点,即在间隔边界上的支持向量点,检验他们是否满足KKT 条件,然后选择违反 KKT 条件最严重的αi。如果这些样本点都满足KKT 条件,那么遍历整个训练集,检验他们 是否满足KKT 条件,然后选择违反KKT 条件最严重的αi。 优先选择遍历非边界数据样本,因为非边界数据样本更有可能需要调整,边界数据样 本常常不能得到进一步调整而留在边界上。由于大部分数据样本都很明显不可能是支持向 量,因此对应的α乘子一旦取得零值就无需再调整。遍历非边界数据样本并选出他们当中 违反KKT 条件为止。当某一次遍历发现没有非边界数据样本得到调整时,遍历所有数据样 本,以检验是否整个集合都满足KKT 条件。如果整个集合的检验中又有数据样本被进一步 进化,则有必要再遍历非边界数据样本。这样,不停地在遍历所有数据样本和遍历非边界 数据样本之间切换,直到整个样本集合都满足KKT 条件为止。以上用KKT 条件对数据样本 所做的检验都以达到一定精度ε就可以停止为条件。如果要求十分精确的输出算法,则往 往不能很快收敛。 对整个数据集的遍历扫描相当容易,而实现对非边界αi的扫描时,首先需要将所有非 边界样本的αi值(也就是满足0&αi&C)保存到新的一个列表中,然后再对其进行遍历。同 时,该步骤跳过那些已知的不会改变的αi值。 2)第二个变量 αj的选择: 在选择第一个αi后,算法会通过一个内循环来选择第二个αj值。因为第二个乘子的迭 代步长大致正比于|Ei-Ej| ,所以我们需要选择能够最大化|Ei-Ej| 的第二个乘子(选择最大化blog.csdn.net/zouxy09/article/details//15 14-8-12机器学习算法与Python实践之(四)支持向量机(SVM )实现 - zouxy09的专栏 - 博客频道 - CSDN.NET迭代步长的第二个乘子)。在这里,为了节省计算时间,我们建立一个全局的缓存用于保 存所有样本的误差值,而不用每次选择的时候就重新计算。我们从中选择使得步长最大或 者|Ei-Ej| 最大的αj。 ( 2)优化 αi和 αj: 选择这两个拉格朗日乘子后,我们需要先计算这些参数的约束值。然后再求解这个约 束最大化问题。 首先,我们需要给αj找到边界L&=αj&=H,以保证αj满足0&=αj&=C的约束。这意味着αj 必须落入这个盒子中。由于只有两个变量(αi, αj),约束可以用二维空间中的图形来表示, 如下图:不等式约束使得(αi,αj)在盒子[0, C]x[0, C]内,等式约束使得(αi, αj)在平行于盒子[0, C]x[0, C]的对角线的直线上。因此要求的是目标函数在一条平行于对角线的线段上的最优 值。这使得两个变量的最优化问题成为实质的单变量的最优化问题。由图可以得到,αj的 上下界可以通过下面的方法得到:我们优化的时候,αj必须要满足上面这个约束。也就是说上面是αj的可行域。然后我 们开始寻找αj,使得目标函数最大化。通过推导得到αj的更新公式如下:这里Ek可以看做对第k个样本,SVM的输出与期待输出,也就是样本标签的误差。而η实际上是度量两个样本i和j的相似性的。在计算η的时候,我们需要使用核函数, 那么就可以用核函数来取代上面的内积。 得到新的αj后,我们需要保证它处于边界内。换句话说,如果这个优化后的值跑出了 边界L和H,我们就需要简单的裁剪,将αj收回这个范围:最后,得到优化的αj后,我们需要用它来计算αi:blog.csdn.net/zouxy09/article/details/6/15 14-8-12机器学习算法与Python实践之(四)支持向量机(SVM )实现 - zouxy09的专栏 - 博客频道 - CSDN.NET到这里,αi和αj的优化就完成了。 ( 3)计算阈值 b: 优化αi和αj后,我们就可以更新阈值b,使得对两个样本i和j都满足KKT 条件。如果优 化后αi不在边界上(也就是满足0&αi&C,这时候根据KKT 条件,可以得到yigi(xi)=1,这样 我们才可以计算b),那下面的阈值b1是有效的,因为当输入xi时它迫使SVM输出yi。同样,如果0&αj&C,那么下面的b2也是有效的:如果0&αi&C和0&αj&C都满足,那么b1和b2都有效,而且他们是相等的。如果他们两个 都处于边界上(也就是αi=0或者αi=C,同时αj=0或者αj=C),那么在b1和b2之间的阈值都 满足KKT 条件,一般我们取他们的平均值b=(b1+b2)/2。所以,总的来说对b的更新如下:每做完一次最小优化,必须更新每个数据样本的误差,以便用修正过的分类面对其他 数据样本再做检验,在选择第二个配对优化数据样本时用来估计步长。 ( 4)凸优化问题终止条件: SMO算法的基本思路是:如果说有变量的解都满足此最优化问题的KKT 条件,那么这 个最优化问题的解就得到了。因为KKT 条件是该最优化问题的充分必要条件(证明请参考 文献)。所以我们可以监视原问题的KKT 条件,所以所有的样本都满足KKT 条件,那么就 表示迭代结束了。但是由于KKT 条件本身是比较苛刻的,所以也需要设定一个容忍值,即 所有样本在容忍值范围内满足KKT 条件则认为训练可以结束;当然了,对于对偶问题的凸 优化还有其他终止条件,可以参考文献。8.3、 SMO算法的 Python实现 8.3.1、 Python的准备工作 我使用的Python是2.7.5版本的。附加的库有Numpy和Matplotlib。而Matplotlib又依赖 dateutil和pyparsing两个库,所以我们需要安装以上三个库。前面两个库还好安装,直接 在官网下对应版本就行。但我找后两个库的时候,就没那么容易了。后来发现,其实对 Python的库的下载和安装可以借助pip工具的。这个是安装和管理Python包的工具。感觉 它有点像ubuntu的apt-get,需要安装什么库,直接下载和安装一条龙服务。 首先,我们需要到pip的官网:https://pypi.python.org/pypi/pip下载对应我们python版 本的pip,例如我的是pip-1.4.1.tar.gz。但安装pip需要另一个工具,也就是setuptools,我 们到https://pypi.python.org/pypi/setuptools/#windows下载ez_setup.py这个文件回来。然 后在CMD命令行中执行:(注意他们的路径) #python ez_setup.py 这时候,就会自动下载.egg等等文件然后安装完成。 然后我们解压pip-1.4.1.tar.gz。进入到该目录中,执行: #python setup.py install 这时候就会自动安装pip到你python目录下的Scripts文件夹中。我的是blog.csdn.net/zouxy09/article/details//15 14-8-12机器学习算法与Python实践之(四)支持向量机(SVM )实现 - zouxy09的专栏 - 博客频道 - CSDN.NETC:\Python27\Scripts。 在里面我们可以看到pip.exe,然后我们进入到该文件夹中: #cd C:\Python27\Scripts #pip install dateutil #pip install pyparsing 这样就可以把这些额外的库给下载回来了。非常高端大气上档次! 8.3.2、 SMO算法的 Python实现 在代码中已经有了比较详细的注释了。不知道有没有错误的地方,如果有,还望大家 指正(每次的运行结果都有可能不同,另外,感觉有些结果似乎不太正确,但我还没发现 哪里出错了,如果大家找到有错误的地方,还望大家指点下,衷心感谢)。里面我写了个 可视化结果的函数,但只能在二维的数据上面使用。直接贴代码: SVM.py[python] 0 1 . 0 2 . 0 3 . 0 4 . 0 5 . 0 6 . 0 7 . 0 8 . 0 9 . 1 0 . 1 1 . 1 2 . 1 3 . 1 4 . 1 5 . 1 6 . 1 7 . 1 8 . 1 9 . 2 0 . 2 1 . 2 2 . 2 3 . 2 4 . 2 5 . 2 6 . 2 7 . 2 8 . 2 9 . 3 0 . 3 1 . 3 2 . 3 3 . 3 4 . 3 5 . 3 6 . 3 7 . 3 8 . 3 9 . 4 0 . 4 1 . 4 2 . 4 3 . 4 4 . 4 5 . 4 6 . 4 7 . 4 8 . 4 9 . 5 0 . 5 1 . 5 2 . #c a l c u l a t ek e r n e lm a t r i xg i v e nt r a i ns e ta n dk e r n e lt y p e d e fc a l c K e r n e l M a t r i x ( t r a i n _ x ,k e r n e l O p t i o n ) : n u m S a m p l e s=t r a i n _ x . s h a p e [ 0 ] k e r n e l M a t r i x=m a t ( z e r o s ( ( n u m S a m p l e s ,n u m S a m p l e s ) ) ) f o rii nx r a n g e ( n u m S a m p l e s ) : k e r n e l M a t r i x [ : ,i ]=c a l c K e r n e l V a l u e ( t r a i n _ x ,t r a i n _ x [ i ,: ] ,k e r n e l O p t i o n ) r e t u r nk e r n e l M a t r i x #c a l u l a t ek e r n e lv a l u e d e fc a l c K e r n e l V a l u e ( m a t r i x _ x ,s a m p l e _ x ,k e r n e l O p t i o n ) : k e r n e l T y p e=k e r n e l O p t i o n [ 0 ] n u m S a m p l e s=m a t r i x _ x . s h a p e [ 0 ] k e r n e l V a l u e=m a t ( z e r o s ( ( n u m S a m p l e s ,1 ) ) ) i fk e r n e l T y p e= =' l i n e a r ' : k e r n e l V a l u e=m a t r i x _ x*s a m p l e _ x . T e l i fk e r n e l T y p e= =' r b f ' : s i g m a=k e r n e l O p t i o n [ 1 ] i fs i g m a= =0 : s i g m a=1 . 0 f o rii nx r a n g e ( n u m S a m p l e s ) : d i f f=m a t r i x _ x [ i ,: ]-s a m p l e _ x k e r n e l V a l u e [ i ]=e x p ( d i f f*d i f f . T/( 2 . 0*s i g m a * * 2 ) ) e l s e : r a i s eN a m e E r r o r ( ' N o ts u p p o r tk e r n e lt y p e !Y o uc a nu s el i n e a ro rr b f ! ' ) r e t u r nk e r n e l V a l u e # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #S V M :s u p p o r tv e c t o rm a c h i n e #A u t h o r:z o u x y #D a t e :2 0 1 3 1 2 1 2 #H o m e P a g e:h t t p : / / b l o g . c s d n . n e t / z o u x y 0 9 #E m a i l :z o u x y 0 9 @ q q . c o m # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # f r o mn u m p yi m p o r t* i m p o r tt i m e i m p o r tm a t p l o t l i b . p y p l o ta sp l t#d e f i n eas t r u c tj u s tf o rs t o r i n gv a r i a b l e sa n dd a t a c l a s sS V M S t r u c t : d e f_ _ i n i t _ _ ( s e l f ,d a t a S e t ,l a b e l s ,C ,t o l e r ,k e r n e l O p t i o n ) : s e l f . t r a i n _ x=d a t a S e t#e a c hr o ws t a n d sf o ras a m p l e s e l f . t r a i n _ y=l a b e l s #c o r r e s p o n d i n gl a b e l s e l f . C=C #s l a c kv a r i a b l e s e l f . t o l e r=t o l e r #t e r m i n a t i o nc o n d i t i o nf o ri t e r a t i o n s e l f . n u m S a m p l e s=d a t a S e t . s h a p e [ 0 ]#n u m b e ro fs a m p l e s s e l f . a l p h a s=m a t ( z e r o s ( ( s e l f . n u m S a m p l e s ,1 ) ) )#L a g r a n g ef a c t o r sf o ra l ls a m p l e s s e l f . b=0blog.csdn.net/zouxy09/article/details/8/15 14-8-12机器学习算法与Python实践之(四)支持向量机(SVM )实现 - zouxy09的专栏 - 博客频道 - CSDN.NET5 3 . 5 4 . 5 5 . 5 6 . 5 7 . 5 8 . 5 9 . 6 0 . 6 1 . 6 2 . 6 3 . 6 4 . 6 5 . 6 6 . 6 7 . 6 8 . 6 9 . 7 0 . 7 1 . 7 2 . 7 3 . 7 4 . 7 5 . 7 6 . 7 7 . 7 8 . 7 9 . 8 0 . 8 1 . 8 2 . 8 3 . 8 4 . 8 5 . 8 6 . 8 7 . 8 8 . 8 9 . 9 0 . 9 1 . 9 2 . 9 3 . 9 4 . 9 5 . 9 6 . 9 7 . 9 8 . 9 9 . 1 0 0 . 1 0 1 . 1 0 2 . 1 0 3 . 1 0 4 . 1 0 5 . 1 0 6 . 1 0 7 . 1 0 8 . 1 0 9 . 1 1 0 . 1 1 1 . 1 1 2 . 1 1 3 . 1 1 4 . 1 1 5 . 1 1 6 . 1 1 7 . 1 1 8 . 1 1 9 . 1 2 0 . 1 2 1 . 1 2 2 . 1 2 3 . 1 2 4 . 1 2 5 . 1 2 6 . 1 2 7 . 1 2 8 . #u p d a t et h ee r r o rc a c h ef o ra l p h aka f t e ro p t i m i z ea l p h ak d e fu p d a t e E r r o r ( s v m ,a l p h a _ k ) : e r r o r=c a l c E r r o r ( s v m ,a l p h a _ k ) s v m . e r r o r C a c h e [ a l p h a _ k ]=[ 1 ,e r r o r ] s e l f . e r r o r C a c h e=m a t ( z e r o s ( ( s e l f . n u m S a m p l e s ,2 ) ) ) s e l f . k e r n e l O p t=k e r n e l O p t i o n s e l f . k e r n e l M a t=c a l c K e r n e l M a t r i x ( s e l f . t r a i n _ x ,s e l f . k e r n e l O p t )#c a l c u l a t et h ee r r o rf o ra l p h ak d e fc a l c E r r o r ( s v m ,a l p h a _ k ) : o u t p u t _ k=f l o a t ( m u l t i p l y ( s v m . a l p h a s ,s v m . t r a i n _ y ) . T*s v m . k e r n e l M a t [ : ,a l p h a _ k ]+s v m . b ) e r r o r _ k=o u t p u t _ k-f l o a t ( s v m . t r a i n _ y [ a l p h a _ k ] ) r e t u r ne r r o r _ k#s e l e c ta l p h ajw h i c hh a st h eb i g g e s ts t e p d e fs e l e c t A l p h a _ j ( s v m ,a l p h a _ i ,e r r o r _ i ) : s v m . e r r o r C a c h e [ a l p h a _ i ]=[ 1 ,e r r o r _ i ]#m a r ka sv a l i d ( h a sb e e no p t i m i z e d ) c a n d i d a t e A l p h a L i s t=n o n z e r o ( s v m . e r r o r C a c h e [ : ,0 ] . A ) [ 0 ]#m a t . Ar e t u r na r r a y m a x S t e p=0 ;a l p h a _ j=0 ;e r r o r _ j=0 #f i n dt h ea l p h aw i t hm a xi t e r a t i v es t e p i fl e n ( c a n d i d a t e A l p h a L i s t )&1 : f o ra l p h a _ ki nc a n d i d a t e A l p h a L i s t : i fa l p h a _ k= =a l p h a _ i : c o n t i n u e e r r o r _ k=c a l c E r r o r ( s v m ,a l p h a _ k ) i fa b s ( e r r o r _ k-e r r o r _ i )&m a x S t e p : m a x S t e p=a b s ( e r r o r _ k-e r r o r _ i ) a l p h a _ j=a l p h a _ k e r r o r _ j=e r r o r _ k #i fc a m ei nt h i sl o o pf i r s tt i m e ,w es e l e c ta l p h ajr a n d o m l y e l s e : a l p h a _ j=a l p h a _ i w h i l ea l p h a _ j= =a l p h a _ i : a l p h a _ j=i n t ( r a n d o m . u n i f o r m ( 0 ,s v m . n u m S a m p l e s ) ) e r r o r _ j=c a l c E r r o r ( s v m ,a l p h a _ j ) r e t u r na l p h a _ j ,e r r o r _ j#t h ei n n e rl o o pf o ro p t i m i z i n ga l p h aia n da l p h aj d e fi n n e r L o o p ( s v m ,a l p h a _ i ) : e r r o r _ i=c a l c E r r o r ( s v m ,a l p h a _ i ) # # #c h e c ka n dp i c ku pt h ea l p h aw h ov i o l a t e st h eK K Tc o n d i t i o n # #s a t i s f yK K Tc o n d i t i o n #1 )y i * f ( i )& =1a n da l p h a= =0( o u t s i d et h eb o u n d a r y ) #2 )y i * f ( i )= =1a n d0 & a l p h a &C( o nt h eb o u n d a r y ) #3 )y i * f ( i )& =1a n da l p h a= =C( b e t w e e nt h eb o u n d a r y ) # #v i o l a t eK K Tc o n d i t i o n #b e c a u s ey [ i ] * E _ i=y [ i ] * f ( i )-y [ i ] ^ 2=y [ i ] * f ( i )-1 ,s o #1 )i fy [ i ] * E _ i&0 ,s oy i * f ( i )&1 ,i fa l p h a&C ,v i o l a t e ! ( a l p h a=Cw i l lb ec o r r e c t ) #2 )i fy [ i ] * E _ i&0 ,s oy i * f ( i )&1 ,i fa l p h a&0 ,v i o l a t e ! ( a l p h a=0w i l lb ec o r r e c t ) #3 )i fy [ i ] * E _ i=0 ,s oy i * f ( i )=1 ,i ti so nt h eb o u n d a r y ,n e e d l e s so p t i m i z e d i f( s v m . t r a i n _ y [ a l p h a _ i ]*e r r o r _ i&s v m . t o l e r )a n d( s v m . a l p h a s [ a l p h a _ i ]&s v m . C )o r \ ( s v m . t r a i n _ y [ a l p h a _ i ]*e r r o r _ i&s v m . t o l e r )a n d( s v m . a l p h a s [ a l p h a _ i ]&0 ) : #s t e p1 :s e l e c ta l p h aj a l p h a _ j ,e r r o r _ j=s e l e c t A l p h a _ j ( s v m ,a l p h a _ i ,e r r o r _ i ) a l p h a _ i _ o l d=s v m . a l p h a s [ a l p h a _ i ] . c o p y ( ) a l p h a _ j _ o l d=s v m . a l p h a s [ a l p h a _ j ] . c o p y ( ) #s t e p2 :c a l c u l a t et h eb o u n d a r yLa n dHf o ra l p h aj i fs v m . t r a i n _ y [ a l p h a _ i ]! =s v m . t r a i n _ y [ a l p h a _ j ] : L=m a x ( 0 ,s v m . a l p h a s [ a l p h a _ j ]-s v m . a l p h a s [ a l p h a _ i ] ) H=m i n ( s v m . C ,s v m . C+s v m . a l p h a s [ a l p h a _ j ]-s v m . a l p h a s [ a l p h a _ i ] ) e l s e : L=m a x ( 0 ,s v m . a l p h a s [ a l p h a _ j ]+s v m . a l p h a s [ a l p h a _ i ]-s v m . C ) H=m i n ( s v m . C ,s v m . a l p h a s [ a l p h a _ j ]+s v m . a l p h a s [ a l p h a _ i ] ) i fL= =H : r e t u r n0blog.csdn.net/zouxy09/article/details/9/15 14-8-12机器学习算法与Python实践之(四)支持向量机(SVM )实现 - zouxy09的专栏 - 博客频道 - CSDN.NET1 2 9 . 1 3 0 . 1 3 1 . 1 3 2 . 1 3 3 . 1 3 4 . 1 3 5 . 1 3 6 . 1 3 7 . 1 3 8 . 1 3 9 . 1 4 0 . 1 4 1 . 1 4 2 . 1 4 3 . 1 4 4 . 1 4 5 . 1 4 6 . 1 4 7 . 1 4 8 . 1 4 9 . 1 5 0 . 1 5 1 . 1 5 2 . 1 5 3 . 1 5 4 . 1 5 5 . 1 5 6 . 1 5 7 . 1 5 8 . 1 5 9 . 1 6 0 . 1 6 1 . 1 6 2 . 1 6 3 . 1 6 4 . 1 6 5 . 1 6 6 . 1 6 7 . 1 6 8 . 1 6 9 . 1 7 0 . 1 7 1 . 1 7 2 . 1 7 3 . 1 7 4 . 1 7 5 . 1 7 6 . 1 7 7 . 1 7 8 . 1 7 9 . 1 8 0 . 1 8 1 . 1 8 2 . 1 8 3 . 1 8 4 . 1 8 5 . 1 8 6 . 1 8 7 . 1 8 8 . 1 8 9 . 1 9 0 . 1 9 1 . 1 9 2 . 1 9 3 . 1 9 4 . 1 9 5 . 1 9 6 . 1 9 7 . 1 9 8 . 1 9 9 . 2 0 0 . 2 0 1 . 2 0 2 . 2 0 3 . 2 0 4 . 2 0 5 . 2 0 6 . #s t e p3 :c a l c u l a t ee t a( t h es i m i l a r i t yo fs a m p l eia n dj ) e t a=2 . 0*s v m . k e r n e l M a t [ a l p h a _ i ,a l p h a _ j ]-s v m . k e r n e l M a t [ a l p h a _ i ,a l p h a _ i ]\ -s v m . k e r n e l M a t [ a l p h a _ j ,a l p h a _ j ] i fe t a& =0 : r e t u r n0 #s t e p4 :u p d a t ea l p h aj s v m . a l p h a s [ a l p h a _ j ]=s v m . t r a i n _ y [ a l p h a _ j ]*( e r r o r _ i-e r r o r _ j )/e t a #s t e p5 :c l i pa l p h aj i fs v m . a l p h a s [ a l p h a _ j ]&H : s v m . a l p h a s [ a l p h a _ j ]=H i fs v m . a l p h a s [ a l p h a _ j ]&L : s v m . a l p h a s [ a l p h a _ j ]=L #s t e p6 :i fa l p h ajn o tm o v i n ge n o u g h ,j u s tr e t u r n i fa b s ( a l p h a _ j _ o l d-s v m . a l p h a s [ a l p h a _ j ] )&0 . 0 0 0 0 1 : u p d a t e E r r o r ( s v m ,a l p h a _ j ) r e t u r n0 #s t e p7 :u p d a t ea l p h aia f t e ro p t i m i z i n ga i p h aj s v m . a l p h a s [ a l p h a _ i ]+ =s v m . t r a i n _ y [ a l p h a _ i ]*s v m . t r a i n _ y [ a l p h a _ j ]\ *( a l p h a _ j _ o l d-s v m . a l p h a s [ a l p h a _ j ] ) #s t e p8 :u p d a t et h r e s h o l db b 1=s v m . b-e r r o r _ i-s v m . t r a i n _ y [ a l p h a _ i ]*( s v m . a l p h a s [ a l p h a _ i ]-a l p h a _ i _ o l d )\ *s v m . k e r n e l M a t [ a l p h a _ i ,a l p h a _ i ]\ -s v m . t r a i n _ y [ a l p h a _ j ]*( s v m . a l p h a s [ a l p h a _ j ]-a l p h a _ j _ o l d )\ *s v m . k e r n e l M a t [ a l p h a _ i ,a l p h a _ j ] b 2=s v m . b-e r r o r _ j-s v m . t r a i n _ y [ a l p h a _ i ]*( s v m . a l p h a s [ a l p h a _ i ]-a l p h a _ i _ o l d )\ *s v m . k e r n e l M a t [ a l p h a _ i ,a l p h a _ j ]\ -s v m . t r a i n _ y [ a l p h a _ j ]*( s v m . a l p h a s [ a l p h a _ j ]-a l p h a _ j _ o l d )\ *s v m . k e r n e l M a t [ a l p h a _ j ,a l p h a _ j ] i f( 0&s v m . a l p h a s [ a l p h a _ i ] )a n d( s v m . a l p h a s [ a l p h a _ i ]&s v m . C ) : s v m . b=b 1 e l i f( 0&s v m . a l p h a s [ a l p h a _ j ] )a n d( s v m . a l p h a s [ a l p h a _ j ]&s v m . C ) : s v m . b=b 2 e l s e : s v m . b=( b 1+b 2 )/2 . 0 #s t e p9 :u p d a t ee r r o rc a c h ef o ra l p h ai ,ja f t e ro p t i m i z ea l p h ai ,ja n db u p d a t e E r r o r ( s v m ,a l p h a _ j ) u p d a t e E r r o r ( s v m ,a l p h a _ i ) r e t u r n1 e l s e : r e t u r n0#t h em a i nt r a i n i n gp r o c e d u r e d e ft r a i n S V M ( t r a i n _ x ,t r a i n _ y ,C ,t o l e r ,m a x I t e r ,k e r n e l O p t i o n=( ' r b f ' ,1 . 0 ) ) : #c a l c u l a t et r a i n i n gt i m e s t a r t T i m e=t i m e . t i m e ( ) #i n i td a t as t r u c tf o rs v m s v m=S V M S t r u c t ( m a t ( t r a i n _ x ) ,m a t ( t r a i n _ y ) ,C ,t o l e r ,k e r n e l O p t i o n ) #s t a r tt r a i n i n g e n t i r e S e t=T r u e a l p h a P a i r s C h a n g e d=0 i t e r C o u n t=0 #I t e r a t i o nt e r m i n a t i o nc o n d i t i o n : # C o n d i t i o n1 :r e a c hm a xi t e r a t i o n # C o n d i t i o n2 :n oa l p h ac h a n g e da f t e rg o i n gt h r o u g ha l ls a m p l e s , # i no t h e rw o r d s ,a l la l p h a( s a m p l e s )f i tK K Tc o n d i t i o n w h i l e( i t e r C o u n t&m a x I t e r )a n d( ( a l p h a P a i r s C h a n g e d&0 )o re n t i r e S e t ) : a l p h a P a i r s C h a n g e d=0 #u p d a t ea l p h a so v e ra l lt r a i n i n ge x a m p l e s i fe n t i r e S e t : f o rii nx r a n g e ( s v m . n u m S a m p l e s ) : a l p h a P a i r s C h a n g e d+ =i n n e r L o o p ( s v m ,i ) p r i n t' i t e r : % de n t i r es e t ,a l p h ap a i r sc h a n g e d : % d '%( i t e r C o u n t ,a l p h a P a i r s C h a n g e d ) i t e r C o u n t+ =1 #u p d a t ea l p h a so v e re x a m p l e sw h e r ea l p h ai sn o t0&n o tC( n o to nb o u n d a r y ) e l s e : n o n B o u n d A l p h a s L i s t=n o n z e r o ( ( s v m . a l p h a s . A&0 )*( s v m . a l p h a s . A&s v m . C ) ) [ 0 ] f o rii nn o n B o u n d A l p h a s L i s t :blog.csdn.net/zouxy09/article/details/10/15 14-8-12机器学习算法与Python实践之(四)支持向量机(SVM )实现 - zouxy09的专栏 - 博客频道 - CSDN.NET2 0 7 . 2 0 8 . 2 0 9 . 2 1 0 . 2 1 1 . 2 1 2 . 2 1 3 . 2 1 4 . 2 1 5 . 2 1 6 . 2 1 7 . 2 1 8 . 2 1 9 . 2 2 0 . 2 2 1 . 2 2 2 . 2 2 3 . 2 2 4 . 2 2 5 . 2 2 6 . 2 2 7 . 2 2 8 . 2 2 9 . 2 3 0 . 2 3 1 . 2 3 2 . 2 3 3 . 2 3 4 . 2 3 5 . 2 3 6 . 2 3 7 . 2 3 8 . 2 3 9 . 2 4 0 . 2 4 1 . 2 4 2 . 2 4 3 . 2 4 4 . 2 4 5 . 2 4 6 . 2 4 7 . 2 4 8 . 2 4 9 . 2 5 0 . 2 5 1 . 2 5 2 . 2 5 3 . 2 5 4 . 2 5 5 . 2 5 6 . 2 5 7 . 2 5 8 . 2 5 9 . 2 6 0 . 2 6 1 . 2 6 2 . 2 6 3 . 2 6 4 . 2 6 5 . 2 6 6 . 2 6 7 . a l p h a P a i r s C h a n g e d+ =i n n e r L o o p ( s v m ,i ) p r i n t' i t e r : % dn o nb o u n d a r y ,a l p h ap a i r sc h a n g e d : % d '%( i t e r C o u n t ,a l p h a P a i r s C h a n g e d ) i t e r C o u n t+ =1 #a l t e r n a t el o o po v e ra l le x a m p l e sa n dn o n b o u n d a r ye x a m p l e s i fe n t i r e S e t : e n t i r e S e t=F a l s e e l i fa l p h a P a i r s C h a n g e d= =0 : e n t i r e S e t=T r u e p r i n t' C o n g r a t u l a t i o n s ,t r a i n i n gc o m p l e t e !T o o k% f s ! '%( t i m e . t i m e ( )-s t a r t T i m e ) r e t u r ns v m#t e s t i n gy o u rt r a i n e ds v mm o d e lg i v e nt e s ts e t d e ft e s t S V M ( s v m ,t e s t _ x ,t e s t _ y ) : t e s t _ x=m a t ( t e s t _ x ) t e s t _ y=m a t ( t e s t _ y ) n u m T e s t S a m p l e s=t e s t _ x . s h a p e [ 0 ] s u p p o r t V e c t o r s I n d e x=n o n z e r o ( s v m . a l p h a s . A&0 ) [ 0 ] s u p p o r t V e c t o r s =s v m . t r a i n _ x [ s u p p o r t V e c t o r s I n d e x ] s u p p o r t V e c t o r L a b e l s=s v m . t r a i n _ y [ s u p p o r t V e c t o r s I n d e x ] s u p p o r t V e c t o r A l p h a s=s v m . a l p h a s [ s u p p o r t V e c t o r s I n d e x ] m a t c h C o u n t=0 f o rii nx r a n g e ( n u m T e s t S a m p l e s ) : k e r n e l V a l u e=c a l c K e r n e l V a l u e ( s u p p o r t V e c t o r s ,t e s t _ x [ i ,: ] ,s v m . k e r n e l O p t ) p r e d i c t=k e r n e l V a l u e . T*m u l t i p l y ( s u p p o r t V e c t o r L a b e l s ,s u p p o r t V e c t o r A l p h a s )+s v m . b i fs i g n ( p r e d i c t )= =s i g n ( t e s t _ y [ i ] ) : m a t c h C o u n t+ =1 a c c u r a c y=f l o a t ( m a t c h C o u n t )/n u m T e s t S a m p l e s r e t u r na c c u r a c y#s h o wy o u rt r a i n e ds v mm o d e lo n l ya v a i l a b l ew i t h2 Dd a t a d e fs h o w S V M ( s v m ) : i fs v m . t r a i n _ x . s h a p e [ 1 ]! =2 : p r i n t& S o r r y !Ic a nn o td r a wb e c a u s et h ed i m e n s i o no fy o u rd a t ai sn o t2 ! & r e t u r n1 #d r a wa l ls a m p l e s f o rii nx r a n g e ( s v m . n u m S a m p l e s ) : i fs v m . t r a i n _ y [ i ]= =1 : p l t . p l o t ( s v m . t r a i n _ x [ i ,0 ] ,s v m . t r a i n _ x [ i ,1 ] ,' o r ' ) e l i fs v m . t r a i n _ y [ i ]= =1 : p l t . p l o t ( s v m . t r a i n _ x [ i ,0 ] ,s v m . t r a i n _ x [ i ,1 ] ,' o b ' ) #m a r ks u p p o r tv e c t o r s s u p p o r t V e c t o r s I n d e x=n o n z e r o ( s v m . a l p h a s . A&0 ) [ 0 ] f o rii ns u p p o r t V e c t o r s I n d e x : p l t . p l o t ( s v m . t r a i n _ x [ i ,0 ] ,s v m . t r a i n _ x [ i ,1 ] ,' o y ' ) #d r a wt h ec l a s s i f yl i n e w=z e r o s ( ( 2 ,1 ) ) f o rii ns u p p o r t V e c t o r s I n d e x : w+ =m u l t i p l y ( s v m . a l p h a s [ i ]*s v m . t r a i n _ y [ i ] ,s v m . t r a i n _ x [ i ,: ] . T ) m i n _ x=m i n ( s v m . t r a i n _ x [ : ,0 ] ) [ 0 ,0 ] m a x _ x=m a x ( s v m . t r a i n _ x [ : ,0 ] ) [ 0 ,0 ] y _ m i n _ x=f l o a t ( s v m . b-w [ 0 ]*m i n _ x )/w [ 1 ] y _ m a x _ x=f l o a t ( s v m . b-w [ 0 ]*m a x _ x )/w [ 1 ] p l t . p l o t ( [ m i n _ x ,m a x _ x ] ,[ y _ m i n _ x ,y _ m a x _ x ] ,' g ' ) p l t . s h o w ( )测试的数据来自这里。有100个样本,每个样本两维,最后是对应的标签,例如: 3........004466 ……blog.csdn.net/zouxy09/article/details//15-1 -1 1 -1 14-8-12机器学习算法与Python实践之(四)支持向量机(SVM )实现 - zouxy09的专栏 - 博客频道 - CSDN.NET测试代码中首先加载这个数据库,然后用前面80个样本来训练,再用剩下的20个样本 的测试,并显示训练后的模型和分类结果。测试代码如下: test_SVM.py[python] 0 1 . 0 2 . 0 3 . 0 4 . 0 5 . 0 6 . 0 7 . 0 8 . 0 9 . 1 0 . 1 1 . 1 2 . 1 3 . 1 4 . 1 5 . 1 6 . 1 7 . 1 8 . 1 9 . 2 0 . 2 1 . 2 2 . 2 3 . 2 4 . 2 5 . 2 6 . 2 7 . 2 8 . 2 9 . 3 0 . 3 1 . 3 2 . 3 3 . 3 4 . 3 5 . 3 6 . 3 7 . 3 8 . 3 9 . 4 0 . 4 1 . 4 2 . 4 3 . 4 4 . # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #S V M :s u p p o r tv e c t o rm a c h i n e #A u t h o r:z o u x y #D a t e :2 0 1 3 1 2 1 2 #H o m e P a g e:h t t p : / / b l o g . c s d n . n e t / z o u x y 0 9 #E m a i l :z o u x y 0 9 @ q q . c o m # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # f r o mn u m p yi m p o r t* i m p o r tS V M # # # # # # # # # # # # # # # # # #t e s ts v m# # # # # # # # # # # # # # # # # # # # # # #s t e p1 :l o a dd a t a p r i n t& s t e p1 :l o a dd a t a . . . & d a t a S e t=[ ] l a b e l s=[ ] f i l e I n=o p e n ( ' E : / P y t h o n / M a c h i n eL e a r n i n gi nA c t i o n / t e s t S e t . t x t ' ) f o rl i n ei nf i l e I n . r e a d l i n e s ( ) : l i n e A r r=l i n e . s t r i p ( ) . s p l i t ( ' \ t ' ) d a t a S e t . a p p e n d ( [ f l o a t ( l i n e A r r [ 0 ] ) ,f l o a t ( l i n e A r r [ 1 ] ) ] ) l a b e l s . a p p e n d ( f l o a t ( l i n e A r r [ 2 ] ) ) d a t a S e t=m a t ( d a t a S e t ) l a b e l s=m a t ( l a b e l s ) . T t r a i n _ x=d a t a S e t [ 0 : 8 1 ,: ] t r a i n _ y=l a b e l s [ 0 : 8 1 ,: ] t e s t _ x=d a t a S e t [ 8 0 : 1 0 1 ,: ] t e s t _ y=l a b e l s [ 8 0 : 1 0 1 ,: ] # #s t e p2 :t r a i n i n g . . . p r i n t& s t e p2 :t r a i n i n g . . . & C=0 . 6 t o l e r=0 . 0 0 1 m a x I t e r=5 0 s v m C l a s s i f i e r=S V M . t r a i n S V M ( t r a i n _ x ,t r a i n _ y ,C ,t o l e r ,m a x I t e r ,k e r n e l O p t i o n=( ' l i n e a r ' ,0 ) ) # #s t e p3 :t e s t i n g p r i n t& s t e p3 :t e s t i n g . . . & a c c u r a c y=S V M . t e s t S V M ( s v m C l a s s i f i e r ,t e s t _ x ,t e s t _ y ) # #s t e p4 :s h o wt h er e s u l t p r i n t& s t e p4 :s h o wt h er e s u l t . . . & p r i n t' T h ec l a s s i f ya c c u r a c yi s :% . 3 f % % '%( a c c u r a c y*1 0 0 ) S V M . s h o w S V M ( s v m C l a s s i f i e r )运行结果如下:[python] 0 1 . 0 2 . 0 3 . 0 4 . 0 5 . 0 6 . 0 7 . 0 8 . 0 9 . 1 0 . 1 1 . s t e p1 :l o a dd a t a . . . s t e p2 :t r a i n i n g . . . i t e r : 0e n t i r es e t ,a l p h ap a i r sc h a n g e d : 8 i t e r : 1n o nb o u n d a r y ,a l p h ap a i r sc h a n g e d : 7 i t e r : 2n o nb o u n d a r y ,a l p h ap a i r sc h a n g e d : 1 i t e r : 3n o nb o u n d a r y ,a l p h ap a i r sc h a n g e d : 0 i t e r : 4e n t i r es e t ,a l p h ap a i r sc h a n g e d : 0 C o n g r a t u l a t i o n s ,t r a i n i n gc o m p l e t e !T o o k0 . 0 5 8 0 0 0 s ! s t e p3 :t e s t i n g . . . s t e p4 :s h o wt h er e s u l t . . . T h ec l a s s i f ya c c u r a c yi s :1 0 0 . 0 0 0 %训练好的模型图:blog.csdn.net/zouxy09/article/details/12/15 14-8-12机器学习算法与Python实践之(四)支持向量机(SVM )实现 - zouxy09的专栏 - 博客频道 - CSDN.NET九、参考文献与推荐阅读 [1] JerryLead的博客,作者根据斯坦福的讲义给出了流畅和通俗的推导:SVM系列。 [2]嘉士伯的SVM入门系列,讲得很好。 [3] pluskid的支持向量机系列,非常好。其中关于dual问题推导非常赞。 [4] Leo Zhang的SVM学习系列,博客中还包含了很多其他的机器学习算法。 [5] v_july_v的支持向量机通俗导论(理解SVM的三层境界)。结构之法算法之道blog。 [6] 李航的《统计学习方法》,清华大学出版社 [7] SVM学习――Sequential Minimal Optimization [8] SVM算法实现(一) [9] Sequential Minimal Optimization: A FastAlgorithm for Training Support Vector Machines [10] SVM --从“ 原理” 到实现 [11] 支持向量机入门系列 [12]SVM的各个版本及其多种语言实现代码合集 [13] Karush-Kuhn-Tucker(KKT) conditions [14] 深入理解拉格朗日乘子法(Lagrange Multiplier) 和KKT 条件上一篇 下一篇机器学习算法与Python实践之(三)支持向量机(SVM)进阶 CSDN2013博客之星评选(求投票支持)顶9踩0blog.csdn.net/zouxy09/article/details/13/15 14-8-12机器学习算法与Python实践之(四)支持向量机(SVM )实现 - zouxy09的专栏 - 博客频道 - CSDN.NET主题推荐 猜你在找机器学习算法pythonsvmmachine learningpython之matplotlib学习(一) 机器学习中的数学(5)-强大的矩阵奇异值分解(SVD)及其 应用 计算机视觉+图像处理的好的链接网站!不断更新 中!!!! 机器学习笔记――皮尔逊相关系数 隐马尔科夫模型 和动态贝叶斯网络Machine Learning---LMS 算法 python面试题目 数据挖掘十大算法--K近邻算法 在实验室还是企业实习,这个无定数 文本特征提取方法研究查看评论 9楼 xhxhxhxhxhxh
09:19发表 博主请教下,我用你的程序的高斯核的时候总出现过拟合的现象,你有过吗?请教了。8楼 ktt-23 18:24发表 坐标下降 和 随机梯度下降 是一种方法吗?Re: zouxy09
16:05发表 回复ktt8868:不是。坐标下降是对要优化的变量而言的,每次选择一个变量优化。随机梯度下降是针对样本而言, 每次选择一个样本来优化所有要优化的变量。这是我的理解,欢迎交流 7楼 捂汗县长
13:51发表 楼主好,我有一个问题,如果文本中的内容不是纯数字,而是字符,比如英文或中文及其相应特征,那该怎么改呢?我是小 白,谢谢了 6楼 捂汗县长
11:09发表 非常感谢 。另外 我觉得通过setuptools 安装所需工具包不太方便 ,有个网站提供了非常全的python 工具包,种类多 版本全。 http://www.lfd.uci.edu/~gohlke/pythonlibs/ 5楼 小A哥哥弟弟
20:22发表 回复u:Lz,还想向您请教个问题,我看百度于凯曾经写过5行的matlab伪代码实现SVM: yp=x*w; idx=find(yp*y&1); e=yp(idx)-y(idx); df=2(x(idx,:)'*e+c*w); f=e'*e+c*w*w; 5行代码算完f和df, 把俩扔进lbfgs ,完毕:-) 不知道您看过这个没,我不太理解他这个做法是不是直接求QP问题?df,f和lbfgs 又在起什么作用呢? Re: zouxy09
00:39发表 回复u:嗯,你给的这个还蛮新奇的,看这个代码初步看法如下: 1、这个是另一种SVM的代价函数的表示。好像叫最小二乘SVM(Least Squares SVM)还是啥的,你可以具体查 查。 2、f表示这个代价函数的值,我们希望求解使他最小化的w。 3、df是这个代价函数关于w的导数。 4、lbfgs 是一个优化工具包,它接收的输入就是:模型的代价函数值、模型求导的值和训练样本。 5、所以只要对代价函数进行求导,然后给这个工具包,选择一种优化方法就可以了。 这是初步的看法,你可以深入了解下 Re: hahapyha
11:08发表 回复zouxy09:博主,这个最小二乘的SVM实现算法在吴恩达的coursera机器学习公开课中有详细介绍以 及作业代码的。。 4楼 小A哥哥弟弟
21:37发表 lz您好,SMO的介绍对我特别有用。刚接触一点优化的东西,请教一个小白的问题哈,我一直不理解的是1)第一个变量αi的选 择这部分,它的KKT条件是怎么得到的,我总是得不到yig(xi)怎么冒出来的,不知道这个max优化问题的拉格朗日乘子都怎么消 去的? Re: zouxy09
23:11发表blog.csdn.net/zouxy09/article/details/14/15 14-8-12机器学习算法与Python实践之(四)支持向量机(SVM )实现 - zouxy09的专栏 - 博客频道 - CSDN.NET回复u:你好,对KKT条件的理解,建议你看看这个视频教程: http://www.powercam.cc/slide/6555 和 http://www.powercam.cc/slide/6556 3楼 阳光岛主
21:04发表 一个程序员的成长之路: 他的博客地址:sunboy_2050 2楼 Lincolnfather
13:29发表 好文!!!!!!!!!1楼 鹳狸媛
11:31发表 您的文章已被推荐到CSDN首页,感谢您的分享。Re: silence-15 13:53发表 回复suannai0314:坐标下降算法,。。。晕死,没这么叫的吧。你也是的,什么文章你都推荐Re: zouxy09
09:03发表 回复silence1214:哦,不好意思,请问我修改后的正确吗?如果不正确还请不吝指点下,非常感谢您还没有登录,请[登录]或[注册] * 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场 核心技术类目 全部主题 VPN BI FTC Angular Hadoop ERP Spring UML AWS IE10 Apache 移动游戏 Eclipse .NET Java CRM API 云计算 Tornado Django Android JavaScript HTML Rails iOS6 Ruby SDK iOS Swift IIS 智能硬件 Ubuntu Fedora KDE Docker NFC XML Cassandra HBase WAP LBS SpringSide Pure OpenStack jQuery Unity Maemo SolrSpark HTML5 coremail数据库 QEMU HibernateSplashtop Compuwarecomponents OPhone aptech RedisWindows Mobile Perl ScalaCloudStackCouchBaseRackspaceWeb App ThinkPHP大数据Cloud FoundryBootstrap公司简介 | 招贤纳士 | 广告服务 | 银行汇款帐号 | 联系方式 | 版权声明 | 法律顾问 | 问题报告 | 合作伙伴 | 论坛反馈 网站客服 杂志客服 微博客服
400-600-2320京 ICP 证 070598 号 北京创新乐知信息技术有限公司 版权所有 江苏乐知网络技术有限公司 提供商务支持 Copyright ? , CSDN.NET, All Rights Reservedblog.csdn.net/zouxy09/article/details/15/15}

我要回帖

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信