摘要:这次作业的coding任务量比较大,总的来说需要实现neural network, knn, kmeans三种模型。Q11~Q14为Neural Network的题目,我用单线程实现的,运行的时间比较长,因此把这几道题的正确答案记录如下:Q11: 6Q12: 0.001Q13: 0.01Q14: 0...
阅读全文
摘要:在NNet这个系列中讲了Matrix Factorization感觉上怪怪的,但是听完第一小节课程就明白了。林首先介绍了机器学习里面比较困难的一种问题:categorical features这种问题的特征就是一些ID编号这类的,不是numerical的。如果要处理这种情况,需要encoding f...
阅读全文
摘要:这节课主要讲述了RBF这类的神经网络+Kmeans聚类算法,以及二者的结合使用。首先回归的了Gaussian SVM这个模型:其中的Gaussian kernel又叫做Radial Basis Function kernel1)radial:表示输入点与center点的距离2)basis funct...
阅读全文
摘要:这节课的题目是Deep learning,个人以为说的跟Deep learning比较浅,跟autoencoder和PCA这块内容比较紧密。林介绍了deep learning近年来受到了很大的关注:deep NNet概念很早就有,只是受限于硬件的计算能力和参数学习方法。近年来深度学习长足进步的原因有...
阅读全文
摘要:这次关注的作业题目是Q13~Q20,主要是实现basic C&RT分类树,以及由其构成的Random Forest。其中basic C&RT分类树的实现思路如下:(一)先抽象出来几个功能:1)从local file读数据并转化成numpy.array的形式(考虑空行容错)(defread_input...
阅读全文
摘要:首先从单层神经网络开始介绍最简单的单层神经网络可以看成是多个Perception的线性组合,这种简单的组合可以达到一些复杂的boundary。比如,最简单的逻辑运算AND OR NOT都可以由多个perception构成的单层神经网络模拟。但是,单层感知器神经网络能力再强也是有限的,有些逻辑也无法完...
阅读全文
摘要:GBDT之前实习的时候就听说应用很广,现在终于有机会系统的了解一下。首先对比上节课讲的Random Forest模型,引出AdaBoost-DTree(D)AdaBoost-DTree可以类比AdaBoost-Stump模型,就可以直观理解了1)每轮都给调整sample的权重2)获得gt(D,ut)...
阅读全文
摘要:总体来说,林对于random forest的讲解主要是算法概况上的;某种程度上说,更注重insights。林分别列举了Bagging和Decision Tree的各自特点:Random Forest就是这二者的结合体。1)便于并行化2)保留了C&RT的优势3)通过bagging的方法削弱了fully...
阅读全文
摘要:首先沿着上节课的AdaBoost-Stump的思路,介绍了Decision Tree的路数:AdaBoost和Decision Tree都是对弱分类器的组合:1)AdaBoost是分类的时候,让所有的弱分类器同时发挥作用2)Decision Tree是每次根据condition让某个弱分类器发挥作用...
阅读全文
摘要:作业的内容主要是实现AdaBoost-Stump的算法。作业真是给人一种扮猪吃老虎的感觉,AdaBoost-Stump原理看似很简单,但是却埋了思维陷阱。可以通过Q12~Q18的python源码如下(训练数据是train.dat, 测试数据是test.dat)#encoding=utf8import...
阅读全文
摘要:首先用一个形象的例子来说明AdaBoost的过程:1. 每次产生一个弱的分类器,把本轮错的样本增加权重丢入下一轮2. 下一轮对上一轮分错的样本再加重学习,获得另一个弱分类器经过T轮之后,学得了T个弱分类器,再将这T个弱分类器组合在一起,形成了一个强分类器。由于每一轮样本的权重都在变化,因此分类器学习...
阅读全文
摘要:上节课讲了Kernel的技巧如何应用到Logistic Regression中。核心是L2 regularized的error形式的linear model是可以应用Kernel技巧的。这一节,继续沿用representer theorem,延伸到一般的regression问题。首先想到的就是rid...
阅读全文
摘要:最近求职真慌,一方面要看机器学习,一方面还刷代码。还是静下心继续看看课程,因为觉得实在讲的太好了。能求啥样搬砖工作就随缘吧。这节课的核心就在如何把kernel trick到logistic regression上。首先把松弛变量的表达形式修改一下,把constrained的形式改成unconstra...
阅读全文
摘要:关注的是编程题目Q15~Q20这里需要借用libsvm的python包,需要一下几个处理步骤:(1)到libsvm官网(http://www.csie.ntu.edu.tw/~cjlin/libsvm/)下载.gz包,解压缩到一个目录(2)在解压的根目录make命令(3)再到解压缩根目录下的pyth...
阅读全文
摘要:Hard-Margin的约束太强了:要求必须把所有点都分开。这样就可能带来overfiiting,把noise也当成正确的样本点了。Hard-Margin有些“学习洁癖”,如何克服这种学习洁癖呢?沿用pocket算法的思想,修改一下优化目标函数的形式,补上一个错分点的惩罚项CΣ...。(1)C越大,...
阅读全文
摘要:考虑dual SVM 问题:如果对原输入变量做了non-linear transform,那么在二次规划计算Q矩阵的时候,就面临着:先做转换,再做内积;如果转换后的项数很多(如100次多项式转换),那么耗费的时间就比较多。能否在计算Q矩阵这一步的时候,把transform+inner product...
阅读全文
摘要:这节课内容介绍了SVM的核心。首先,既然SVM都可以转化为二次规划问题了,为啥还有有Dual啥的呢?原因如下:如果x进行non-linear transform后,二次规划算法需要面对的是d`+1维度的N个变量,以及N个约束如果d`的维度超大,那么二次规划解起来的代价就太大了。因此,SVM的精髓就在...
阅读全文
摘要:首先从介绍了Large_margin Separating Hyperplane的概念。(在linear separable的前提下)找到largest-margin的分界面,即最胖的那条分界线。下面开始一步步说怎么找到largest-margin separating hyperplane。接下来...
阅读全文
摘要:作业四的代码题目主要是基于ridge regression来做的,并加上了各种cross-validation的情况。由于ridge regression是有analytic solution,所以直接求逆矩阵就OK了,过程并不复杂。只有在做cross-validation的时候遇上了些问题。#en...
阅读全文
摘要:这一节主要讲如何通过数据来合理的验证模型好不好。首先,否定了Ein来选模型和Etest来选模型。(1)模型越复杂,Ein肯定越好;但是Eout就不一定了(见上一节的overfitting等)(2)Etest是偷窥训练集,也没有效果下面,集中讨论已有的数据集切分成train data和test dat...
阅读全文