统计机器学习方法简述

2013-01-28 09:04 | (分类:机器学习)

序:建议阅读的同学要一点概率论和信息论的基础,参考文献的PDF版本我会尽快放在我的服务器上。我也仅仅是研一初学者,非常欢迎大家批评指正。

        赫尔伯特·西蒙对“学习”(这个学习比较抽象,适合人、机器,啥都算上,咱就上升到哲学高度理解吧)是这样定义的:如果一个系统能够通过执行某个过程而改进它的性能,这就是学习。

        那么统计学习呢?就是计算机通过运用数据以及统计方法提高系统性能的机器学习。所以常言道,巧妇难为无米之炊,搞ML,NLP,DM的这些娃们,没有数据,那就是噩梦!不懂概率论、信息论、最优化,那就是末日!不会编程,这个不要紧,找个编程大牛帮你编!

        所以,搞这些研究的知道自己到底需要手握几把斧子了吧。如果三者齐备,那么,剩下的就是勤奋和运气了。哎,读QH博难,读好博士难,读一个QH好博士,难上加难。。

1. 监督学习:

         监督学习可以被认作是学习一个模型,使得它可以对给定的输入预测对应的输出。根据输出的特点不同,分为分类问题、回归问题、标注问题等。

         举个例子,就拿预测股票来讲(现实比较复杂,这里只是简单说),我们有许多历史数据,那么如果我们预测明天A股大盘的点数,那么这就是回归问题,因为我们需要对历史数据进行拟合,得到一个连续型变量的输出预测;如果我们要根据数据做一个决策,究竟是买还是不买,或者是其他的行为,这个类似于分类。至于标注问题,其实就是对于一个长期的数据(一段时间的股票数据),我们根据历史涨跌的情况,可以预测这段时间数据的涨跌(多个决策点)。

        对于分类问题,输出只是一个类标记,而且这个标记的集合的元素是离散有限可数的,比如两类{+1,-1}或者{1,0}等等;回归问题对应的输出是连续变量,一般可能这个输出空间是实数域的数值,比如预测股票等等;标注问题的输出也是离散的,但是是一个序列,不像分类问题只是一个标记,是多个标记。

         作为监督学习,都是从训练实例(所谓实例,一般是输入对应的特征向量,原始的输入一般不能完全对模型的学习有效,往往我们需要对输入提取特征,每个特征都是一个维度,这样特征向量就产生了,比如,我们使用TFIDF得到每个词的权重,那么不同的词汇可以认为是不同维度上的特征,这些词汇组合就是特征向量,因此信息检索领域往往需要处理高维度的数据)中估计出所选择的模型的参数空间(可能有多个参数),目标是既要使该模型不仅在训练数据上有良好的预测效果,而且也要模型在不可预知的测试数据上也有一定的泛化能力(模型复杂度不能太高,否则容易过度拟合,造成泛化能力差)。这是一个难以双赢的问题,因此,往往需要通过正则化等方式进行权衡。

        下面可能会介绍到感知机、K近邻法、朴素贝叶斯法、决策树、逻辑斯蒂回归、最大熵模型、支持向量机、提升方法、EM算法、隐马尔科夫模型、条件随机场等。总体来讲,感知机、K近邻法、朴素贝叶斯法、决策树这些分类方法都比较简单直观;逻辑斯蒂回归、最大熵模型、支持向量机、提升方法都比较复杂;隐马尔科夫和条件随机场是处理标注问题的有效工具。

 

1.1 感知机 (Perceptron):1957年,Rosenblatt提出[1]

         感知机是两类分类模型,输入是某一实例(特征向量,如X = (x1,x2,x3,...xn), n维特征向量),输出是这一实例对应的类别,取+1或者-1。感知机的学习目标是求出能将训练数据进行线性划分(这里注意,是线性划分)的超平面,进而期望这个函数也能够对测试数据进行有效分隔。以二维特征为例,两个点分别代表两类,感知机模型能够找到某条直线将这两点分隔。以此类推,三维就是一个平面分隔,多维就是超平面

 

       事实上,感知机获得的超平面不止一个,我们可以想象,两个点之间,你可以随便画无数条直线进行分割,因此后面的研究者就想了,我擦,那我可以研究研究一个更好的,于是又一个模型诞生了,这个模型很牛逼,就是支持向量机,这个能够找到一个间隔最大的超平面,也就是争取找泛化能力最好的。详细请看1.7

 

1.2 K近邻法 (K-Nearest Neighbor, KNN):1968年,Cover和Hart共同提出[2]

         K近邻法是多类分类模型,但是没有显式的学习过程(没有模型参数去学习)。思想就是,先将训练数据布设在输入空间中,由于这些训练数据类别已定,作为参照,对于一个测试数据(实例),通过某种距离度量函数(比如,欧式距离,也就是2范数),找到距离其最近的K个已知类别的数据点,然后将这个测试数据的归为这K个数据中占(最)多数的类别。

        现实去寻找这些K近邻的时候,如果进行暴力搜索,算法复杂度太高,因此需要使用KD树的技术,对数据空间进行二段分割,分割出许多超平面,详细这里不提了。

 

1.3 朴素贝叶斯法(Naive Bayes, NB):

        朴素贝叶斯方法基于贝叶斯定理(P(Y|X) = P(X|Y) * P(Y) / P(X)))和特征条件独立假设,可以处理多类分类问题。对于给定的训练数据集,学习的目的在于两点,第一就是学习P(X|Y),另一个就是学习P(Y),高端大气的学者也把P(Y)叫做先验分布,这里点一下,让读者注意。后验分布是P(Y|X),也就是我们要最终学习的模型。因为对于一个测试实例而言,P(X)是一个常数,根据前面提到的贝叶斯公式,想要知道后验分布P(Y|X),就得知道先验分布P(Y)和条件概率P(X|Y)。 
        那么P(X|Y)怎么学?就要依赖特征条件独立假设,事实上,之所以叫朴素贝叶斯,就是因为这个假设太强了,Too Young Too Simple了。比如对于某个训练实例,由特征向量组成,前面提到过,X = (x1,x2,x3...,xn),求P(X|Y)等价于求P(x1,x2,x3,...,xn|Y)。如果x1,x2,...,xn相互之间独立,那么可以将上式分拆为各个特征的条件概率连乘的样子。即,P(x1,x2,x3,...,xn|Y) = P(x1|Y) * ...*P(xn|Y)。由此最后,我们得到的模型就是P(Y|X) = Max [P(x1|Y) * ...* P(xn|Y) * P(Y)]。找出测试数据在某一类别获得的最大概率乘积就是目标类。

        当然,这里肯定有人觉得万一某个特征在训练数据里没有(没学到),而出现在测试数据中,那岂不是都是零了?因此就需要贝叶斯估计的方法,这个简述中就不提了。

 

1.4 决策树 (Decision Tree, DT):学习思想来源于Quinlan于1986年提出的ID3和1993年提出的C4.5以及Breiman等人于1984年提出的CART算法。[3,4,5] 

        决策树是一个非常实用的模型。上次听一位Google的研究员说华尔街有人专门购买决策树相关的软件进行对冲基金的处理。因为决策树非常直观,作为模型的观察者,我们甚至知道分类决策是如何一步一步做出的,在这点上,很多模型没有它如此直观。决策树的学习分为3个步骤,分别是特征选择,决策树的学习以及决策树的修剪。这里只是简述前两者,修剪问题跟防止模型过度拟合有关,比较复杂。

       所谓特征选择,便是在一步一步向下决策的过程中间,每一步(每一个子节点)都要决定是由哪个特征作为决策的节点出现。这里有一个直观的思想便可以说清,当我们做决策的时候,往往希望首先弄清我们最困惑的问题,或者叫最混乱的问题。这种混乱度跟信息熵有关,熵越高,越混乱,越不确定。如果我们引入一个特征,使得这种困惑度下降最多,那么说明这个特征越有优先决策的价值。ID3使用的就是信息增益(互信息)作为特征选择的标准,C4.5略变化一些,选择信息增益比率作为标准(这个就是发论文的技巧了,往往绝对差异就是要用比率代替,这样一个新论文就产生了。。)

       决策树算法的目标就是不断重复选择特征对训练数据进行分割,直到增益数值(比率)低于阀值,或者分割的数据集已经全部归为一个类别,那么就把这些数据作为一个叶节点,同时打上对应(最)多数的类别标号。

 

1.5 逻辑斯谛回归 (Logistic Regression, LR):

     我第一次接触逻辑斯谛回归模型是大学本科上“数学建模”一课时,这个模型当时用于有限资源下,人口数量预测问题。形状不言自明,是个S型曲线。这个模型是统计学习中的经典方法,虽然简单,但是不一定比其他方法在预测和回归问题上的性能差。

     首先,由于这个分布可以处理X是连续随机变量的情形,因此叫逻辑斯谛回归(分类指的是输出类别为离散型变量+1,-1等等;回归没啥说的,就是你预测一下明天的A股多少点?这个是连续的;当然还有一种比较特殊的,就是标注问题,输出是一个变量序列,比如NLP里的词性标注问题,输出就是类似于N V O NP 这样的词性序列)。一个逻辑斯谛分布是这样表示的:X具有这样的分布函数: F(x) = P(X <= x) = 1 / (1 + e^-(x - u) / r),这里如果u = 0的话,这个S型曲线就是以(0,0.5)为拐点的。如果 r = 1的话,这个函数就更加简单了,这个最简单的形式就是我们做计算要用到的(计算机就是比纯数学还要再精简,用不着那么多参数)。

    最后,我们使用的就是如下的两个条件概率公式用来处理两类分类的问题(当然可以变化为多类,甚至处理回归问题)。对于一个测试实例X,分别求得如下两个条件概率,哪个更大,就判别为哪个类别。注意,由于X是一个特征向量,因此w是权值向量,求的是内积。b是偏置。

                                               P(Y = 1|x) = e^(w · x + b) / [1 + e^(w · x + b)]

                                                      P(Y = 0|x) = 1 / [1 + e^(w · x + b)]

       由此我们可见,这个模型的学习参数目标已经很明显了,就是利用训练数据求出w和b。在这点上和感知器差不多有木有?所以线性加权加偏置这个思想比较通用啊。


1.6 最大熵模型(Maximum Entropy, ME):

       这个模型听名字很霸气,最开始看论文的时候经常看到这个名字,但是因为连信息论也没接触过,连熵是啥东西都不知道,更别说最大熵了。。

       其实这个跟我在决策树里面提到的困惑度有点儿关系。比如说,我们赌球,赌世界杯谁是冠军,32个队伍,你要怎么赌?肯定是选择哪个赢的概率大,多压点赌注。要是水平都跟中国队一样呢?那你还能孤注一掷吗?必然不能,因为所有球队的赢面都是一样的,你只好均匀下注(不要把鸡蛋都放一个篮子里)。

        这种情况下,你的困惑度是最大的,因为你没有一点儿额外信息支持你往哪个球队多放点赌注。而最大熵的意思就是这个,我们认为,在没有更多的限制信息的前提下,能够让熵最大的模型是最好的。

 1.7 支持向量机 (Support Vector Machines, SVM):

       感知机部分提到了一点SVM,这里做一点扩充。首先,SVM也是二类分类模型,基本模型是在特征空间上的间隔最大的线性分类器,这点和感知机不同。而支持这个分类超平面确定的点(可能是多维空间特征向量)被称为支持向量,所以为啥叫SVM,这个就说明了。

      而支持向量机不止这些,很多研究还在更加复杂的层面进行处理。SVM可以处理类似训练数据线性可分,也可以处理训练数据近似可分(那个超平面不能完全分割所有的特征点),甚至引入核函数,往更高的维度映射后,可以处理训练数据线性不可分的情形。

 

 

1.8 期望最大化算法(Expectation Maximization, EM):

         期望最大化算法比较特殊,要说它是监督学习的方法,不太准确;其实它就是一种算法思想。在监督学习中,这种算法可以用来解决还有隐变量的概率模型参数的极大似然估计,所以暂且在这个大章节列出来。

        既然提到了极大似然估计问题,我就简短说一说啥是极大似然估计,这个在统计机器学习,特别是理论层面广为使用。先说没有隐变量的极大似然估计。也就是说,我们的观测数据都是直接依赖于所有需要估计的变量,不会出现一个需要被估计的变量还要另一个或者一些变量的概率分布决定的情况。就说投硬币的例子,每次投掷,假设有p = 0.3的可能性出现正面,1 - p = 0.7的可能性是反面。那么如果我们不知道这个参数p。但是我们有一万次投硬币的数据,比如得到正面2984次,反面7016次,那么我们的直觉告诉我们正面估计概率就是p = 0.2984。当然,这个估计值没错,也很接近概率值,但是有啥理论基础吗?理论基础可以从极大似然思想来,

        这个问题的模型M参数为p。我们所产生的1万组数据d,是无数种可能产生的一万组数据dx的其中一种,而我们看到的,可以认为是因为这组数据在模型M参数为p的条件下,概率最大的,因此我们看到了。所以目标就是 Max P(d|M),极大化这个概率。同时我们假设这一个一个数据是独立同分布产生的,所以可以拆分P(d|M) = P(x1 | M) * P(x2|M)...   。就这个投硬币的问题,我们使用二项分布就能得到这样的式子P(d|M) = C(10000, 2984) * p^2984 * (1-p)^7016。各种连乘得到。求导,极大值点在p = 0.2984得到。说白了,就是我们要组合出最终数据目标概率是怎样独立同分布产生的,让这个式子最大,求导就来了。


先写到这,后面的我还没太理解。

2. 无监督学习:

 

 

参考文献

 

 

 



  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值