All Machine Learning

Machine Learning Techniques Lecture 15: Matrix Factorization

    内容: Matrix Factorization(矩阵分解)模型,一开始先讲linear network里面通过对ID这样的特征编码来萃取特征,然后讲基本的 matrix factirization演算法,要做的事情就是在两个特征之间交互的 做 linear regression,同时你也可以用SGD来做,这是一个有效率的方法,而且可以根据应用做适当的调整,最后总结了一下 extraction model。         上一讲: Raidal Basis Function Network,就是把原来的原始数据通过k-means算法来找出代表,通过使用RBF函数来替代,然后整个方法就可以转化成linear …

All Machine Learning

Machine Learning Techniques Lecture 14: Radial Basis Function Network

    内容: Radial Basis Function Network 模型,其hypothesis就基本是一堆RBF,比如高斯函数,用这些RBF作为代表来取代NN里面的神经元;学习的过程中如果决定了中心是哪些之后,剩下的就是做一步linear aggregation;然后我们介绍了k-means演算法来用于决定中心,其算法的核心就是 alternating potimization,对里面的变数交叉做最佳化;最后我们举例图示加深印象。         回顾:Deep Learning 是NN的延伸,NN很多很多层的时候,要怎么克服一些困难,比如训练的时候需要好的初始值,denoising autoencoder 就是一种做法(non-linear PCA),其和统计里面用来做资料处理的PCA 有一定的关联性 …

All Machine Learning

Machine Learning Techniques Lecture 13: Deep Learning

    内容: Deep Learning模型,是之前讲的类神经网路的延伸,他是一个困难的问题,要经过很多层层层淬炼;然后讲了autoencoder,在deep learning里面它的作用就是帮我们预训练出好的weight,本质上做的事情是从资料里面找出最好的表现方式,做法是用一个浅浅的NN来找到一个好的表现方式;进一步讲到denoising autoencoder 就是在原来的资料里面埋了一些杂讯进去做学习已达到可以抗杂讯的autoencoder的效果;最后讲到这些非线性的autoencoder如果退回来变成线性的话,其实就是PCA方法,作用都是帮助我们降低资料的维度。         回顾:NN模型里面有一层一层的神经元,他们的作用就是帮我们萃取出资料面的模式(特征),通过backprop工具来计算梯度,从而通过GD/SGD法来学习的到NN模型里面的w参数。     这一讲:Deep Learning         类神经网络的核心就是一层一层的神经元和他们之间的连接关系。那么问题是我们要用多少个神经元呢?我们要用多少层呢?我们的NN结构是怎么样的呢?或者你可以主动的去设计;或者你可以把模型的结构当作是参数,通过validation来选择最好的。 …

All Machine Learning

Machine Learning Techniques Lecture 12: Neural Network

    内容: Neural Network模型,出发点是把原来的perceptron变成更多层来达到越来越复杂,越来越powerful的效果,这样的链接在生物学上模仿的就是神经元的连结。在NN里面一个网络w固定了的话就是一个hypothesis,每一层做的事情就是根据这些权重来萃取pattern,一层一层萃取出来到最后一层是直接输出。NN学到这些权重的基本方法就是gradient descent(GD),透过backprop的方去很快的算这些梯度到底是多少。最后讲到这样的基本模型还需要小心的是怎么去初始化,用什么regularizer,以及透过early stopping的机制来避免overfit。         上一讲: Gradient Boosted Decision Tree 模型透过 functional gradient 的方式去得到一棵棵不一样的树,然后再给每一棵树以 steepest descent …

All Machine Learning

Machine Learning Techniques Lecture 11: Gradient Boosted Decision Tree

    内容: Gradient Boosted Decision Tree,一开始现讲怎么把adaboost和decision tree搭配起来,需要引进sampling 和pruning才能搭配得很好;然后讲了怎么从优化的角度来看adaboost,找到好的 hypothesis 就是找一个好的方向,找到alpha其实就是走一个适当的步长,对应到adaboost里面的exponential error这样的函数就是优化问题;我们可以把优化观点下的adaboost延伸到其他不同种的错误衡量,映入了gradientboost,他做的事情就是residual fitting,根据余数还剩多少来更新regression的问题,看看能不能做得更好;最后总结了一下aggregation的方法。         上一讲: Random forest模型,就是一堆的decision tree,利用bagging的方式做出一些不一样的decision tree,再把他们合起来。除了基本的bagging和decision …

All Machine Learning

Machine Learning Techniques Lecture 10: Random Forest

    内容: Random forest,演算法就是做bagging,然后在bagging里面做decision tree,为了让decision tree更加随机一点,通常会做randomly projected subspaces,就是随机的选择features下刀。在这样的模型里面,因为采用了bagging,可以得到Out-of-bag(OOB)结果,用来代替validation达到self-validation的效果。有了这个机制,配合premutation test(采用随机排序的特征)来测试每一个特征到底是不是你需要的,其重要性。最后图示该算法的表现。         上一讲: 决策树模型,演算法的核心是想办法通过递归的方式切割资料,切割资料的标准就是希望你的资料越纯越好。切开后就得到conditional aggregation的效果,就是根据不同的情况使用不同的小g,就是树叶。     这一讲: 随机森林   …

All Machine Learning

Machine Learning Techniques Lecture 9: Decision Tree

    内容: 介绍了Decision Tree模型,他的hypothesis就是对于不同的条件,不同的路径上面有不同的小g;他的算法就是把这种树形结构通过对资料越切越纯直到不能再切为止,递归的建立起来。一种实例算法C&RT则是对Decision Tree进一步做了四个决定:怎么做regression,怎么砍树,怎么处理类别输入,怎么处理特征丢失。最后可视化的举例看这个演算法的演进过程。         上一讲: Adaptive Boosting 演算法,透过调整每一笔资料的权重的方式来得到不一样的hypothesis,同时在计算过程中决定每一个hypothesis的权重,然后用linear 的方式合起来,这样的方式被证明可以让分类结果变得比较好。     这一讲: Decision Tree     …

All Machine Learning

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。     今天从这系概念出发,讲一个有趣的演算法。         举例:老师交学生辨识图中有没有苹果做法   …

All Machine Learning

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 …

All Machine Learning

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 …