随笔分类 -  机器学习

摘要:Shark是一个快速、模块化、功能丰富的开源C++机器学习库,提供了各种机器学习相关技术,比如线性/非线性优化、基于内核学习算法、神经网络等。Shark已经应用于多个现实项目中。机器学习(Machine Learning)是一门多领域交叉学科,专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。它是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。Shark目前提供的机器学习功能如下:1. 监督式学习线性判别分析(LDA),Fisher–LDA朴素贝叶斯分类器线性回归针对单类分类、二进制和真实多类分类的支持向 阅读全文
posted @ 2013-04-30 21:00 94julia 阅读(724) 评论(0) 推荐(0)
摘要:本文主要内容包括: (1) 介绍神经网络基本原理, (2) AForge.NET实现前向神经网络的方法, (3) Matlab实现前向神经网络的方法 。第0节、引例 本文以Fisher的Iris数据集作为神经网络程序的测试数据集。Iris数据集可以在http://en.wikipedia.org/wiki/Iris_flower_data_set 找到。这里简要介绍一下Iris数据集:有一批Iris花,已知这批Iris花可分为3个品种,现需要对其进行分类。不同品种的Iris花的花萼长度、花萼宽度、花瓣长度、花瓣宽度会有差异。我们现有一批已知品种的Iris花的花萼长度、花萼宽度、花瓣长度、花瓣. 阅读全文
posted @ 2013-04-26 12:35 94julia 阅读(527) 评论(0) 推荐(0)
摘要:接下来要说的东西其实不是松弛变量本身,但由于是为了使用松弛变量才引入的,因此放在这里也算合适,那就是惩罚因子C。回头看一眼引入了松弛变量以后的优化问题:注意其中C的位置,也可以回想一下C所起的作用(表征你有多么重视离群点,C越大越重视,越不想丢掉它们)。这个式子是以前做SVM的人写的,大家也就这么用,但没有任何规定说必须对所有的松弛变量都使用同一个惩罚因子,我们完全可以给每一个离群点都使用不同的C,这时就意味着你对每个样本的重视程度都不一样,有些样本丢了也就丢了,错了也就错了,这些就给一个比较小的C;而有些样本很重要,决不能分类错误(比如中央下达的文件啥的,笑),就给一个很大的C。当然实际使用 阅读全文
posted @ 2013-04-04 21:14 94julia 阅读(234) 评论(0) 推荐(0)
摘要:现在我们已经把一个本来线性不可分的文本分类问题,通过映射到高维空间而变成了线性可分的。就像下图这样:圆形和方形的点各有成千上万个(毕竟,这就是我们训练集中文档的数量嘛,当然很大了)。现在想象我们有另一个训练集,只比原先这个训练集多了一篇文章,映射到高维空间以后(当然,也使用了相同的核函数),也就多了一个样本点,但是这个样本的位置是这样的:就是图中黄色那个点,它是方形的,因而它是负类的一个样本,这单独的一个样本,使得原本线性可分的问题变成了线性不可分的。这样类似的问题(仅有少数点线性不可分)叫做“近似线性可分”的问题。以我们人类的常识来判断,说有一万个点都符合某种规律(因而线性可分),有一个点不 阅读全文
posted @ 2013-04-04 21:11 94julia 阅读(720) 评论(1) 推荐(0)
摘要:生存?还是毁灭?——哈姆雷特可分?还是不可分?——支持向量机之前一直在讨论的线性分类器,器如其名(汗,这是什么说法啊),只能对线性可分的样本做处理。如果提供的样本线性不可分,结果很简单,线性分类器的求解程序会无限循环,永远也解不出来。这必然使得它的适用范围大大缩小,而它的很多优点我们实在不原意放弃,怎么办呢?是否有某种方法,让线性不可分的数据变得线性可分呢?有!其思想说来也简单,来用一个二维平面中的分类问题作例子,你一看就会明白。事先声明,下面这个例子是网络早就有的,我一时找不到原作者的正确信息,在此借用,并加进了我自己的解说而已。例子是下面这张图:我们把横轴上端点a和b之间红色部分里的所有点 阅读全文
posted @ 2013-04-04 21:08 94julia 阅读(408) 评论(1) 推荐(0)
摘要:让我再一次比较完整的重复一下我们要解决的问题:我们有属于两个类别的样本点(并不限定这些点在二维空间中)若干,如图,圆形的样本点定为正样本(连带着,我们可以把正样本所属的类叫做正类),方形的点定为负例。我们想求得这样一个线性函数(在n维空间中的线性函数):g(x)=wx+b使得所有属于正类的点x+代入以后有g(x+)≥1,而所有属于负类的点x-代入后有g(x-)≤-1(之所以总跟1比较,无论正一还是负一,都是因为我们固定了间隔为1,注意间隔和几何间隔的区别)。代入g(x)后的值如果在1和-1之间,我们就拒绝判断。求这样的g(x)的过程就是求w(一个n维向量)和b(一个实数)两个参数的过程(但实际 阅读全文
posted @ 2013-04-04 21:04 94julia 阅读(285) 评论(1) 推荐(1)
摘要:从最一般的定义上说,一个求最小值的问题就是一个优化问题(也叫寻优问题,更文绉绉的叫法是规划——Programming),它同样由两部分组成,目标函数和约束条件,可以用下面的式子表示:(式1)约束条件用函数c来表示,就是constrain的意思啦。你可以看出一共有p+q个约束条件,其中p个是不等式约束,q个等式约束。关于这个式子可以这样来理解:式中的x是自变量,但不限定它的维数必须为1(视乎你解决的问题空间维数,对我们的文本分类来说,那可是成千上万啊)。要求f(x)在哪一点上取得最小值(反倒不太关心这个最小值到底是多少,关键是哪一点),但不是在整个空间里找,而是在约束条件所划定的一个有限的空间里 阅读全文
posted @ 2013-04-04 21:00 94julia 阅读(219) 评论(1) 推荐(1)
摘要:上节说到我们有了一个线性分类函数,也有了判断解优劣的标准——即有了优化的目标,这个目标就是最大化几何间隔,但是看过一些关于SVM的论文的人一定记得什么优化的目标是要最小化||w||这样的说法,这是怎么回事呢?回头再看看我们对间隔和几何间隔的定义:间隔:δ=y(wx+b)=|g(x)|几何间隔:可以看出δ=||w||δ几何。注意到几何间隔与||w||是成反比的,因此最大化几何间隔与最小化||w||完全是一回事。而我们常用的方法并不是固定||w||的大小而寻求最大几何间隔,而是固定间隔(例如固定为1),寻找最小的||w||。而凡是求一个函数的最小值(或最大值)的问题都可以称为寻优问题(也叫作一个规 阅读全文
posted @ 2013-04-04 20:57 94julia 阅读(204) 评论(1) 推荐(1)
摘要:SVM入门(三)线性分类器Part 2上回说到对于文本分类这样的不适定问题(有一个以上解的问题称为不适定问题),需要有一个指标来衡量解决方案(即我们通过训练建立的分类模型)的好坏,而分类间隔是一个比较好的指标。在进行文本分类的时候,我们可以让计算机这样来看待我们提供给它的训练样本,每一个样本由一个向量(就是那些文本特征所组成的向量)和一个标记(标示出这个样本属于哪个类别)组成。如下:Di=(xi,yi)xi就是文本向量(维数很高),yi就是分类标记。在二元的线性分类中,这个表示分类的标记只有两个值,1和-1(用来表示属于还是不属于这个类)。有了这种表示法,我们就可以定义一个样本点到某个超平面的 阅读全文
posted @ 2013-04-04 20:54 94julia 阅读(314) 评论(0) 推荐(1)
摘要:SVM入门(二)线性分类器Part 1线性分类器(一定意义上,也可以叫做感知机) 是最简单也很有效的分类器形式.在一个线性分类器中,可以看到SVM形成的思路,并接触很多SVM的核心概念.用一个二维空间里仅有两类样本的分类问题来举个小例子。如图所示C1和C2是要区分的两个类别,在二维平面中它们的样本如上图所示。中间的直线就是一个分类函数,它可以将两类样本完全分开。一般的,如果一个线性函数能够将样本完全正确的分开,就称这些数据是线性可分的,否则称为非线性可分的。什么叫线性函数呢?在一维空间里就是一个点,在二维空间里就是一条直线,三维空间里就是一个平面,可以如此想象下去,如果不关注空间的维数,这种线 阅读全文
posted @ 2013-04-04 20:53 94julia 阅读(371) 评论(1) 推荐(1)
摘要:(一)SVM的八股简介 支持向量机(Support Vector Machine)是Cortes和Vapnik于1995年首先提出的,它在解决小样本、非线性及高维模式识别中表现出许多特有的优势,并能够推广应用到函数拟合等其他机器学习问题中[10]。支持向量机方法是建立在统计学习理论的VC 维理论和结构风险最小原理基础上的,根据有限的样本信息在模型的复杂性(即对特定训练样本的学习精度,Accuracy)和学习能力(即无错误地识别任意样本的能力)之间寻求最佳折衷,以期获得最好的推广能力[14](或称泛化能力)。 以上是经常被有关SVM 的学术文献引用的介绍,有点八股,我来逐一分解并解释一下。 .. 阅读全文
posted @ 2013-04-04 20:49 94julia 阅读(334) 评论(1) 推荐(1)
摘要:在数据挖掘中,K-Means算法是一种cluster analysis的算法,其主要是来计算数据聚集的算法,主要通过不断地取离种子点最近均值的算法。问题K-Means算法主要解决的问题如下图所示。我们可以看到,在图的左边有一些点,我们用肉眼可以看出来有四个点群,但是我们怎么通过计算机程序找出这几个点群来呢?于是就出现了我们的K-Means算法(Wikipedia链接)K-Means要解决的问题算法概要这个算法其实很简单,如下图所示:从上图中,我们可以看到,A,B,C,D,E是五个在图中点。而灰色的点是我们的种子点,也就是我们用来找点群的点。有两个种子点,所以K=2。然后,K-Means的算法如 阅读全文
posted @ 2013-04-01 15:06 94julia 阅读(326) 评论(0) 推荐(0)
摘要:在机器学习中,决策树是一个预测模型:它代表的是对象属性与对象值之间的一种映射关系。树中每个节点表示某个对象,而每个分岔路径则代表的某个可能的属性值,而每个叶节点则对应从根节点到该叶节点所经历的路径所表示的值。决策树仅有单一输出,若欲有复数输出,可以建立独立的决策树以处理不同输出。 从数据产生决策树的机器学习技术叫做决策树学习,通俗说就是决策树。 决策树学习也是数据挖掘中一个普通的方法。在这里,每个决策树都表述了一种树形结构,他有他的分支来对该类型的对象依靠属性进行修剪。每个决策树可以依靠对源数据库的分割进行数据测试。这个过程可以递归式的对树进行修剪。当不能再进行分割或一个单独的类可以被... 阅读全文
posted @ 2013-03-19 10:27 94julia 阅读(708) 评论(0) 推荐(0)