ML | Cheney Shen

Technology blog

Archives

Machine Learning Techniques Lecture 8: Adaptive Boosting


    内容: 介绍了 Adaboost 演算法,一开始先给大家一个小学生课堂的例子来告诉大家这个演算法想像上是长什么样子的。这算法的关键是每一轮的时候透过重新的给每一个example不一样的权重,提高错误的权重,降低正确的权重来得到不一样的g,最后再把g整合成G。最后给了一个adaboost配合decision stump以后的实例,可以工作的很好。         上一讲:开始讲aggregation model,就是想办法把很多的小g合起来变成一个更符合你需求的大G。然后讲到blending,就是如果你已经有很多小g在手上的时候,你可以让他们求平均或者加权投票或者更复杂的非线性组合它们。那如果手上只有一堆已有的资料,那么可以通过bootstrap的方式得到一堆资料集,然后得到一堆小g求大G,这样的演算法叫做bagging。     今天从这系概念出发,讲一个有趣的演算法。         举例:老师交学生辨识图中有没有苹果做法     首先去网络上手机苹果图片。         收集了10张苹果图片,10张不是苹果的图片。老师就是想通过这些数据来学到怎样区分图中有没有苹果的二元分类。         放到一起,前十张是苹果,后十张不是苹果。(对应到机器学习里面的supervised learning,告诉x,y)     第一个学生觉得:苹果是圆形的,不是苹果的很多不是圆形。 根据是不是圆形分类,有些是对的,有些是错的(蓝色的就是错的部分)。         为了让学生更认识到这种分类方式的缺陷,老师就把已经作对了的图片缩小,没做对的放大,突出错误的地方。     然后再问学生还有没有其他的规则来分类?     第二个学生觉得:苹果是红色的,不是苹果很多都不是红色的。 根据颜色分类,有些是对的,有些是错的。(蓝色标出了错误的)     同样老师标出了错误的,让后放大缩小来突出错误的。  …

Read More

Machine Learning Techniques Lecture 7: Blending and Bagging


    内容: 介绍了Blending和Bagging的方法,两者都属于Aggregation这个大家族,Aggregation要做的事情就是把一堆的小g合起来变成一个更符合需求的大G。最基本的方法就是求平均,算术平均,更进阶的方式是如果你今天想做linear/non-linear的化其实只要做一个two-level learning就可以做到了。最后我们介绍了如何通过 bootstraping 从已有的固定资料得到不一样的hypothesis,然后再合起来的方法。         我们之前讲到的是Kernel Model,做的事情是把很多很多的feature包在kernel里面,然后用不同的机制去求解。我们把kernel model延伸到可以做regression,你可以把原来知道的ridge regression利用representer theorem来得到他的kernel的形式,你也可以参考SVM设计一个新的formulation来得到sparse solution 的Kernel 形式。     今天开启一个新的主题,如果我们得到了一些hypothesis,这些hypothesis可以帮助我们做预测,我们怎么把这些有预测性的hypothesis合起来让他们变得更好,这样的模型叫做Aggregation model。今天讲两个常用的model,blending and bagging。         先来想想为什么想要用aggrregation? 假设今天你有15个朋友,每个人都告诉你明天股市的涨跌预测分析,那你听了以后作的决策是什么。     你的决策想法可能会有: 你的朋友里面有人炒股比较厉害,可能他的预测比较有参考价值,因此选择一个可以信赖的人的结果。(就是validation) 你的朋友每个人都有不同的专长,不知道相信谁,投票决定,看猜测涨的人多就决定相信涨。 如果你的朋友的炒股能力可以参数化,那就是加权投票看结果。 你的朋友有的人擅长科技类股票,有的人擅长能源类股票等等,所以呢在不同的条件之下就相信不同的人。     我们要做的就是把这些情境的处理对应到机器学习里面。做的这件事就是叫做 aggregation model 在做的事情。         我们把上面的口语化的表述数学化。     每个朋友就是 hypothesis 就是 g_n;…

Read More

Machine Learning Techniques Lecture 6: Support Vector Regression


    内容: 和大家讲了support vector regression,一开始的切入点就是把我们原来会的ridge regression变成kernel的形式,我们可以通过representer theorem来做到这件事情。不过呢这时候的beta是dence的,计算量太大,因此我们从一个 regularized tube error来做推导导出了对偶问题,根据KKT条件求解二次规划,得到sparse的beta的结果。 最后总结了一下kernel model以及使用情况,这里要特别提醒的是这里提供了无限强大的工具,但是你要仔细的去对症使用。         上一次:kernel logistic regression 如果我们想要把SVM这样的方法用在soft classification上面的话,我们可以用two-level learning的方式,先做SVM,然后再把SVM做出来的东西丢去logistic regression里面微调一下得到结果;或者是我们可以使用representer theorem直接把logistic regression变到一个kernel的形式来求解。     Support vector regression 我们从上面这个新的技巧出发,来探讨怎么把regression变成kernel的形式。         上一次讲到:representer theorem 什么时候我们的W可以变成一堆z的线性组合呢?如果你要处理的是一个有L2-regularize的linear model,那么你要处理的W=可以变成一堆Z的线性组合,也就是可以把它变成kernel的形式。     我们今天要探讨的就是怎么把regression变成kernel的形式。 regression的做法采用的是让squared error最小来达到结果。我们来看怎么在此加入kernel的概念。Ridge regression 表示的就是使用上面的错误公式计算的linear regression。         如果我们今天要做的是 Kernel Ridge…

Read More

Machine Learning Techniques Lecture 5: Kernel Logistic Regression


    内容:kernel logistic regression 一开始先把soft-margin SVM解释成一个和logistic regression有关的模型,他所在做的就是L2 regularization,对应到一个特别的hinge error measure。然后把SVM和logistic regression连上关系,SVM几乎就是L2-regularized logistic regression。如果是这样的话,有一个SVM的解,可以透过第二个阶段的训练的方式把它变成一个适用于soft binary classification的。如果硬要在z空间里面真的求解一个logistic regression的问题,也可以透过representer theorem做到,付出的代价是求解用的beta很多都不是0,计算量很大。             上一讲: 如果我们容许SVM对于已有的资料分类犯错误的话,就从原来的hard-margin改成了soft-margin。我们用C来代表容许错误的参数,这样经过推到以后你会发现dual SVM问题下soft-margin带来的是alpha_n有一个上限就是C。     今天从soft-margin继续延伸,如果我们要把kernel的技巧用在logistic regression这个问题上,怎么去处理。         回顾以前的对比: Hard-margin Primal:找到能完全分开的最胖的分隔线; Hard-margin Dual:对应primal的对偶问题,使得求解的过程与z空间的维度没有关系。 Soft-margin Primal:允许存在已知的数据点没有分对的最胖的分隔线; Soft-margin Dual:对应primal的对偶问题,同hard的处理方式,唯一的区别是alpha存在上限C。     Soft-margin 才是真的大家常用的SVM。 推荐两个特别好用的SVM工具:LIBLINEAR, LIBSVM         再来看看Soft-margin里面做了什么事情:…

Read More

Machine Learning Techniques Lecture 4: Soft-Margin Support Vector Machine


    内容:soft-margin SVM 首先列出soft-margin SVM的形式表达,出发点是不坚持所有的已知数据点不一定全部要分对,所以增加了一个参数用来控制设定违反分类结果的程度。推倒的时候也是一个QP问题,所以同样通过对偶问题来化简求解。soft-margin SVM可以告诉我们的是可以把数据通过alpha的值分为三类,边界上的,边界内的,边界外的,对于我们做资料分析很有用。另外我们还提到可以使用cross validation来选择模型参数。         上一讲:Kernel SVM 目的是通过把Dual SVM的转换和算内积步骤合起来成为Kernel消除空间维度对计算量的影响,这样以后对于任意维度的SVM都能做到。     Soft-margin support vector machine: 原来讲的都是不能违反任意一个数据的结果叫做Hard-Margin,这里放宽这个限制。从上一讲出发,gaussian svm太复杂了,我们有没有办法来减少overfitting。         上一讲我们得到的信息是:SVM可能会overfitting。     一个原因是转换太powerful了;另外一个原因是我们坚持要把资料完美的分开,不能出错。 如图所示,如果一定要分开的话就会像右边的图一样边界非常复杂,但不见得这样是合理的。     也就是看作资料里面存在noise,怎么去处理。         我们首先来看看我们以前是怎么处理资料里面存在noise的问题的。     Pocket 模型 没有办法找一条线分开,那么就找一条线犯最少的错误。     Hard-margin 模型 所有的圈圈叉叉都要分对,而且还要选择w最小的。 条件太多,所以我们应该像pocket一样容忍一些错误。     其中一个方式是(可以看作是…

Read More

Machine Learning Techniques Lecture 3: Kernel Support Vector Machine


    内容: kernel SVM 首先讲了把原来的dual SVM的转换和内积的两步合并为Kernel,通过这样回避了原来SVM计算涉及到的对空间维度的依赖,然后讲了多项式kernel和Gaussian kernel,最后对这些kernel做了简单的比较,如果想要的是效率的话往linear走,想要复杂边界的话往高纬度走。         上一次我们看的是SVM的对偶形式,其新的形式好像跟空间维度D没有关系,可以使用二次规划来求解。     今天来看一下 Kernel support vector machine,把好像拿掉,使SVm的形式真的和空间维度没有关系。         这是我们上一次推到出来的对偶问题: 从条件的数量和变数的数量来看,这个问题好像都和空间维度D没有关系。但是如果计算Q_d这个矩阵,就需要用到D空间的维度,维度越大越难求解,这里就是瓶颈。     怎么做?     求解 Q_d 对于Z空间来说是做内积,但是如果从x空间的角度,其实是两个步骤。步骤是先把x做转换,再做内积,每一步都和维度相关。我们能不能把这两个步骤合起来算得快一些?         先考虑一个简单的例子:二次的多项式转换     使得有 0次项,1次项,2次项,x1x2,x2x1同时存在; 这样转换了再做内积,如上面的推导,就会得到只和 x * x’ 内积的结果。 可以将运算复杂度降低到了O(d)!         Kernel function:…

Read More

Machine Learning Techniques Lecture 2: Dual Support Vector Machine


        内容:dual(对偶) support vector machine     告诉大家一个新的SVM问题:SVM的对偶问题。对偶问题的出发点是希望移除维度d对于non-linear SVM运算的影响,然后推导出透过 KKT 条件就可以得到对偶的SVM,KKT条件可以转化为QP形式来求解对偶SVM,但最好需要根据SVM来优化QP的运算过程。解的结果你会发现那些活下来的alpha>0的点有重要意义,就是support vector,就这些直接决定了最胖的分隔线。             回顾:linear SVM 可以通过QP求解得到比较robust的分隔线     今天把linear SVM转成另外一种形式以便更加容易的应用到不同的领域。         复习一下上一次上的内容:     求解: 可以通过二次规划来解SVM,应用于多维的话就是把x转换成Z空间即可,就是对z的线性二次规划求解,这对于x来说就是非线性的SVM。     作用: 控制模型的复杂度的同时,透过特征转换降低Ein。     我们Z空间的维度d越大,相对来说求解的难度就越高。 那么如果d无限大的话,还能不能求解。     因此我们的目标是移除 d 对于SVM求解的影响。         原来的VSM:d+1…

Read More

Machine Learning Techniques Lecture 1: Linear Support Vector Machine


    这里讲的是 linear support vector machine     我们的出发点是想要找那个比较胖的分隔线,更加兼容测量错误,然后把问题公式化以后开始简化他直到得到一个二次规划的标准问题,然后就可以求解了,这就是一个完整的方法。然后我们再回头来看这个方法的理论保障是减少了有效的Dvc,这样就可以做得更好,这就是SVM。         课程基本信息。     Coursera 前8周是基石课程,后面8周是技法课程。 华语授课,投影片授课。         与机器学习基石的课程的异同点: 一样的是:哲学的讨论,理论分析,算法和实现,笑话。 不一样的是:把基石课程提到的基本理论工具延伸成为实用的学习模型,围绕在一个主要的点就是特征转换上面: 有大量的特征转换怎么运用,如何控制复杂度 – SVM 找出一些比较具有预测性质的特征以及混合应用 – AdaBoost 学习资料的一些隐藏特征 – Deep Learning     通过往这三个方向的学习来使得你能够专业的使用相关工具。         练习。         第一讲:线性支持向量机         先来看看之前讲过的…

Read More

Machine Learning Foundations 16: Three Learning Principles


    总结: Occam’s Razer: 简单是好的 Sampling Bias: 小心抽样的偏差 Data Snooping: 小心不要偷看资料         上一节: 很重要的工具 validation,留下一定的验证资料来模拟测试程序,来衡量和选择比较好的训练模型。     这一节: 三个做机器学习时候的精囊妙计。         第一个: occam’s razor (occam 的剃刀)     今天你要对你的资料作解释的话,越简单越好。(爱因斯坦说的?) 不要对一个东西做过多的处理。(William of occam)     我们不要对资料过分解释。         举例: 两张图,左边的比较简单,比较好。     问题是: 什么样叫做简单的解释? 为什么简单的比较好?      …

Read More

Machine Learning Foundations 15: Validation


    总结:Validation(验证) 从要选择一个好的模型来做切入:如果用 Ein 做选择是很危险的,但是你没有办法用 Etest 来做选择,我们用 Validation来做选择,我们做了相应的理论证明。 再讲 leave one out cross validation:假设validation最小达到1,然后做很多次取平均结果,理论上结果会比较好,但是这要花很大的计算上的时间。 实际上 leave one out vross validation没有那么可行,常用的是 v-fond cross validation,就是切5/10份就可以。         Validation (验证)     上一次讲到避免 overfitting 的一种方式叫做 regularization:在 Ein 上面加上 regularizer 项变成 E_aug,对此做 minimize 的动作,这样可以有效的限制 model complexity。     面临的问题的是:整个过程当中有很多的选择要做,这里 validation 就是用来帮助你作出合理的选择。         即使你要做…

Read More
Page 1 of 3123
  • Categories

  • Tags