省创每日打卡内容记录
blue:2020/04/13
今天主要看了SVM regression以及SVM背后一些看不懂的数学原理。SVM regression 和classification的不同在于,它是在epsilon限制下尽可能增加囊括的instance,而classification是增加margin和减少violation的trade-off。
前面提到SVC的权衡,这就需要在cost function中增加constraint项,用QP法进行解决。Dual Problem是解决原始问题的另外一种方法(是一种下限的求法),并且在feature数比instance数更多时,速度更快。
然后 填了前面kernel trick的坑,增加feature维度进行点积可以用原始维度点积的平方代替,这就让多项式transformation的扩展能力提升。
blue:2020/04/15
今天看了第六章决策树,决策树是一种很强的机器学习算法,它能够解决回归分类等很多问题,并且是下一章随机森林算法的组成部分。
决策树的基本结构很像数据结构中的树,从树的根出发分出很多枝节直到尽头leaf nodes,每个节点都是一个判断,在sklearn中决策树都是binary的,只有是与非。这种结构可以让预测速度很快(在树的结构平衡的时候,这个算法与二分法很类似为O(log2m))。除此之外,它不怎么需要对数据进行处理,比如说scaling。
决策树的一个节点有一些特定参数(sample:满足这个节点的数据量,value满足的这些数据属于各个class的数量,gini:这个节点的杂质比率impunity)。决策树的cost function是要让每个节点分出的child的杂志率以一定比重最小(数据越多比重越大),简单来说这是一种贪婪算法,追求的是单步最优(比如说小偷偷东西第一选择是先放入体积能够承受的最大价值商品),但是这不一定是全体最优,不过这可以简化计算量。Regression的规则也是相似的,只不过把杂质率或者熵值换成了均方误差。
决策树特定的计算原理决定了它的分类方法是有迹可循的,知道了它的分类标准手工也可以进行分类。这与神经网络不同,虽然能够得出正确的结果,但是很难直到它是为什么能够做出这样的决定(white box versus black box)
决策树是很容易overfitting的,因为没有一个参数能够最优先干预树的形成,一般来说hyperparameter有干预树的深度,leaf node的最小数据量等等。
最后谈谈决策树的缺点,决策树的分类边界是与坐标轴正交的(不是大于就是小于)这使得数据的分布方向会极大影响树的结构。再来,树的形成是具有一定的随机因素的,也就是说:有可能相同数据,每次跑出来的结构都不一样,缺乏稳定性,这个问题下一章的Random Forests能将其解决。
blue:2020/04/16
今天看了部分第七章Ensemble learning集成学习,这一步往往发生在机器学习的最后,当我们已经训练出一个良好的模型,想要再更进一步的时候,是一个很好的选择。
集成算法的基本思想是,通过training sets训练出一系列的模型,把他们看成一群公民进行投票,对于一个新的数据,最终的预测结果取各个模型中选择最多的class(classification)或者取它们预测值的average(regression)。(在分类的层面上,这种方式成为hard voting。对应的还有一个soft voting,是将各个predictor分类的概率去平均,这种方法往往比hard voting好,因为confident votes的权重更大。)这种方式得出的预测值正确率很可能比单一模型更高。
这背后的数学原理是大数定律,虽然说我将training sets分给了多个模型进行训练,降低了单个模型的准确率。但是就像我投100次硬币到投掷1000次硬币来估计正反面的概率,虽然投掷少少的几次,我的估计值偏差很大,但是投掷的数量(使用模型的数量)达到一定程度,我还是能逼近一个满意的成果。当然,大数定律有个前提就是每次实验要是独立的,这要求我们使用的模型直接的关联性要小,比如我们要选择原理差距很大的模型,或者我们要对training set进行独立抽样。确保每个模型之间不会发生相似的错误,使得错误聚集。
除此之外,集成算法还有一个优势,就是各个模型可以独立使用一个CPU或者GPU核平行运算,提高计算速度。
最后来谈谈使用集成算法的几个方法(今天就看了一个),第一个是bagging or pasting。bagging就是对数据(或者feature,只抽样feature是random subspace,两个都抽是random patches)进行有放回的抽样,而pasting就是不放回的抽样。有放回的抽样可以增加数据的多样性,使得偏差略增或是不变,而方差降低。
Random Forests就是集成算法中的一种,它将多个决策树集成在了一起。只不过还增加了在分节点时的随机性:原本是找局部最优分类的feature,现在是随机选去subset的feature进行选取。
blue:2020/04/17
看完第七章啦,接下来我就直接转战深度学习了。其他以后再看。今天直接按名字顺序讲新的ensemble algorithm
1、Extra-Tree,全称Extremely randomized tree。一种特殊地随机森林,顾名思义它非常随机,不仅筛选的feature是随机组,就连阈值也是随机的,这意味着更小的variance
2、Boosting, 继bagging之后第二大集成方法。
第一种算法AdaBoost:和bagging平行训练模型不同,Adaboost是成长型的,首先训练第一代,然后根据第一代的准确性给予第一代权重,并把提高判断错误的instance的权重,然后用这些赋予新权重的instance去训练下一代模型,这样一代一代的产生足够多的模型。最后预测的时候选择指向同个class权重和最大的结果。
第二种Gradient Boosting,也是一代传一代,但是第二代是把第一代的残差作为label,进行训练。最后的结果是所有模型预测值之和(regression)。
3、Stacking:套娃算法,想法是将原本的soft voting或者hard voting用一个训练好的模型替代,比如(设置两个layer):讲training set分成两个部分,一个部分训练第一层模型,然后将第二个部分输入第一层得到预测值来训练第二层。想要训练多少层就要分成多少个sub training set。