zoukankan      html  css  js  c++  java
  • 机器学习的几个知识点记录(转)

    http://www.cnblogs.com/tornadomeet/archive/2012/11/12/2766458.html 

    过拟合和规则项

    Regularization中文意思是规则,指的是在overfittingunderfitting之间做平衡,通过限制参数空间来控制模型的复杂度。测试误差和训练误差之间差一个规则项,其公式为:

      

      模型越复杂说明模型越不稳定,学习到的目标函数越不光滑,也就越容易over-fitting。所以需要控制模型的复杂度,一般来说有2种方法,即减少模型中参数的个数或者减小参数的空间大小,目前用得最多的就是减小参数的空间大小,是通过规则项达到的。规则项的引入同时也需要引入一个调节的参数,该参数的大小一般通过交叉验证获得。如果规则项是2次的,则也称为ridge回归,规则项是一次的则称为lasso回归。Ridge回归的优点是解比较稳定,且允许参数的个数大于样本的个数。Lasson回归的优点是有稀疏解,不过解不一定稳定。

    如果碰到参数个数大于样本个数,这时候就不能够用参数个数来做规则化了,而是采用缩小参数空间的方法,这样的话既在统计学上对特征数量集大时有鲁棒性,同时在数值计算上方程解也具备稳定性。

    http://www.cnblogs.com/tornadomeet/archive/2012/11/06/2756361.html 

     随机深林的优点:比较适合做多分类问题;训练和预测速度快;对训练数据的容错能力,是一种有效地估计缺失数据的一种方法,当数据集中有大比例的数据缺失时仍然可以保持精度不变;能够有效地处理大的数据集;可以处理没有删减的成千上万的变量;能够在分类的过程中可以生成一个泛化误差的内部无偏估计;能够检测到特征之间的相互影响以及重要性程度;不过出现过度拟合;实现简单容易并行化。

    http://www.cnblogs.com/tornadomeet/archive/2013/03/21/2973231.html 

    PCA的具有2个功能,一是维数约简(可以加快算法的训练速度,减小内存消耗等),一是数据的可视化。

       在使用PCA前需要对数据进行预处理,首先是均值化,即对每个特征维,都减掉该维的平均值,然后就是将不同维的数据范围归一化到同一范围,方法一般都是除以最大值。但是比较奇怪的是,在对自然图像进行均值处理时并不是不是减去该维的平均值,而是减去这张图片本身的平均值。因为PCA的预处理是按照不同应用场合来定的。

       PCA的计算过程主要是要求2个东西,一个是降维后的各个向量的方向,另一个是原先的样本在新的方向上投影后的值。

      有一个观点需要注意,那就是PCA并不能阻止过拟合现象。表明上看PCA是降维了,因为在同样多的训练样本数据下,其特征数变少了,应该是更不容易产生过拟合现象。但是在实际操作过程中,这个方法阻止过拟合现象效果很小,主要还是通过规则项来进行阻止过拟合的。

    并不是所有ML算法场合都需要使用PCA来降维,因为只有当原始的训练样本不能满足我们所需要的情况下才使用,比如说模型的训练速度,内存大小,希望可视化等。如果不需要考虑那些情况,则也不一定需要使用PCA算法了。

    Whitening的目的是去掉数据之间的相关联度,是很多算法进行预处理的步骤。比如说当训练图片数据时,由于图片中相邻像素值有一定的关联,所以很多信息是冗余的。这时候去相关的操作就可以采用白化操作。数据的whitening必须满足两个条件:一是不同特征间相关性最小,接近0;二是所有特征的方差相等(不一定为1)。常见的白化操作有PCA whiteningZCA whitening

    http://www.cnblogs.com/tornadomeet/archive/2012/11/12/2766458.html

    模型平均

       Model selection model combination的不同使用体现在,如果某个模型以绝对的优势好于其他所有模型,那么这时候我们就采用model selection,因为不仅有好的性能,还可以获得好的可解释性。如果所有的模型在性能表现上都差不多,没有所谓的好坏,且模型本身又有很大的不同,这时候就可以采用model combination来大大提高其性能了。通常来说,model combinationmodel selection要稳定些。

        Bagging也是一种均一模型平均,它的所有模型的学习算法一样,只是输入样本采用bootstrip获得。因为是采用boostrip获得的,所以其训练样本有些不一定用到了,而有些则重复用到了。这样每个学习出来的model不是很稳定,因而这也扩大了model之间的差异性,提高了集群学习的性能。Bagging是减小学习的方差,而boosting是减小学习的偏差。

      最后模型平均的一个比较出名的应用场合就是把决策树改造成随机森林的例子。因为单颗决策树虽然有可解释性,能够很好的处理非均匀的特征以及是一种非线性的方法,但是它的最大缺点就是分类结果不准确,因此在样本选择和输入特征选择方面采用了随机的方法得到不同的模型后,再做平均就成了随机森林,理论和实验表明随机森林的效果要比决策树好很多。

    AdaBoosting是对分类错误的样本加大其权重来达到resamble的效果。且采用贪婪算法进行loss的函数的优化。

    机器学习中的优化问题

      机器学习中大部分问题都可以归结为参数优化问题,即找到最适合目标函数的参数,该参数一般满足使目标函数最大或者最小。

    常见的优化方法有梯度下降法,该方法是每次沿着梯度下降最快的那个方向寻找函数值,不断迭代就可以寻找到近似的极值。该方法的学习速率(即每次沿梯度方向前进的距离)和收敛速率是最值得关注的。一般来讲,如果函数是光滑且是严格为凸函数的,则其收敛速度最快,其实是光滑但不严格凸的,最慢的要数非光滑函数。因此当函数有一部分是光滑,而另一部分不光滑时,我们可以采用Proximal 梯度下降法,该方法是最近几年热门起来的,效果比梯度下降要好,更新的类似的算法还有Nestervo这个学者的Accelerated 梯度法(全是数学公式,完全看不懂)。为了求出局部极值点,一般可以采用近似泰勒展开中的H矩阵来求得,典型的算法有LBFGS。另外当需要优化的参数为一个向量时,不一定需要把这个向量的元素对等考虑,我们可以分开优化,即每次只优化参数向量中的一个,其它的保持不变,这样循环直到收敛。最后老师讲了凸函数的优化问题还可以采用Dual 梯度下降法。

    Online learning

      Online learning指的是每当来一个数据,就会学习一个最优的预测函数,其最优的准则是当前位置loss函数值最小,因此每一步的预测函数都有可能不同,这就是Online learning。其实很早前就有online learning的例子,比如说感知机学习规则。

      在了解Online learning之前需要了解regret 分析这个概率,regret指的是,Online learning中每次学习的误差减去使用用当前为止的最优函数而产生的误差的平均值,当然我们希望regret越小越好。

      Online learning的关键是需要更不断新状态。其实Online learning也是一个优化问题,我们可以把机器学习中的优化问题全部转换成对应的Online learning。比如说凸优化,梯度下降法,proximal descent。其中将proximal descent转换成online版本可以采用L1规则化,Dual averaging, 保持second order信息等。统计梯度下降可以用来优化大规模的数据,它的不同变种主要来源于不同的proximal 函数,不同的学习率,是否是dual averaging, 是否是averaging, 是否是acceleration等。

    deep learning最近非常火热,deep learning来做一些视觉问题,其效果能提高不少。Deep learning的意思是可以自动来学习一些特征,比如说在视觉的分类或者识别中,一般都是特征提取+分类器设计,并且提取到的特征的好坏直接影响了分类器的分类效果,但是在目前的计算机视觉领域,其特征的提取都是我们人工设计的,需要针对不同的应用场合来提取不同的特征,余老师开玩笑的说,计算机视觉最近10年的最大成就就是有了个SIFT特征,但是它是基于RGB图像提出的,而今各种传感器,比如Kinect等。我们又得去重新设计它的特征,难道我们还要等10年么?因此可以看出,一个通用的特征提取框架需要给出,这就是deep learning,也叫做feature learning,也就是说给了很多样本,系统能够自动去学习这些样本的特征,而不是依靠人工来设计。听起来是多么的诱人!这就更类似于AI了。Deep learning主要是确定一个算法的层次结构,这个层次结构非常重要,它的想法和人体大脑皮层的工作机制类似,因为人大脑在识别某些东西的时候也是一个层次结构的。课件中主要接受了multi-scale modelshierarchical model,structure spectrum等,但没有具体展开,只是做了一个综述性的介绍。

    Transfer learning & Semi-supervised learning

      一方面由于有些问题的训练样本数据非常少,且样本的获取代价非常高,或者是模型的训练时间特别长,另一方面由于很多问题之间有相似性,所以TL(transfer learning)就产生了。TL主要是把多个相似的task放在一起来解决,它们共享同一个输入空间和输出空间,TL常见的例子有传感器网络预测,推荐系统,图像分类等。常见的用来解决TL问题有下面几个模型,HLM(层次线性模型),NN,回归线性模型,这些模型本质上都是学校一个隐含的相同的特征空间。另外老师也讲到了TLGP(高斯过程)的对比,高斯过程是一个贝叶斯核机器的非线性算法,通过对先验样本的采用学习可以得到尖锐的后验概率模型,它是一种非参数的模型。TL方法主要分为4大类:样本之间的迁移,特征表达的迁移,模型的迁移和相关领域知识的迁移。其中特征表达的迁移和模型的迁移在数学本质上是类似的,也是学者们研究的重点。

    SSL(Semi-supervised learning)是为了达到用少量标注了的样本+大量没有标注的样本,来学习一个比单独用少量标注样本效果更好的模型。老师举了一个混合高斯分布的例子来解释SSL学习的效果,通过这个例子引出了SSL的一个通用模型。本课还简单的介绍了co-training 方法,所谓co-training,就是把表组好的数据分成几类,每一类都train一个model,然后把这些model作用到unlabel的样本上,通过优化方法达到输出一致的效果。最后介绍的Graph Laplacian以及它的harmonic 解就完全木有看懂。

    Recommendation Systems

     

    在对Recommendation Systems进行设计的一个主流方法之一是将Recommendation Systems问题看做是一个分类问题,即把用户i对所有电影打分看做是要预测的标签,而其他所有人对电影的打分看做是特征,主要采用的方法是朴素贝叶斯,KNN等(其他大部分的分类算法都可以派上用场)。Recommendation Systems问题的另一主流方法是把它看成矩阵分解(MF)问题,这在实际应用中是效果最好的。因为我们观察到的数据是很稀疏的,很多位置都是missing的,且这些数据之间内部是存在一个简单结构的,因此我们可以把需要填充的矩阵R分解成2个低秩矩阵的乘积,这可以采用SVD或者SVD+一些优化的方法来解决。

      由此可以看出,Recommendation Systems是一个典型的ML问题。

    (转) http://www.cnblogs.com/tornadomeet/archive/2012/11/12/2766458.html 

  • 相关阅读:
    生成.project、.classpath文件
    Ecelipse上添加Server
    通信安全验证
    通过jstack定位在线运行java系统故障_案例1
    自动代码复制工具
    在Visual Studio Express 2013中开发自定义控件
    通过java类文件识别JDK编译版本
    去掉java反编译(JD-GUI)生成的源文件中注释
    循环处理目录下文件框架
    java查找重复类/jar包/普通文件
  • 原文地址:https://www.cnblogs.com/llphhl/p/5808431.html
Copyright © 2011-2022 走看看