zoukankan      html  css  js  c++  java
  • 【基础算法整理】

     一、SVM

      1.详细解释https://www.cnblogs.com/EstherLjy/p/9327872.html  和 https://blog.csdn.net/amds123/article/details/53696027

      2.推导总结:

         

     

     

      3.问题分析:

      暂略,有坑再填。

    二、PCA

      1.基本思想和详细解释

      基本思想:将样本投影到某平面上,使得投影后的样本间比较分散,即方差最大。采用的方法是,去中心化后将其投到标准正交基上。做降维的时候是无监督的。

      详细参考链接:https://www.cnblogs.com/EstherLjy/p/9328228.html 和 https://blog.csdn.net/weixin_37824397/article/details/61196119

      2.推导总结:

         

     

      3.计算步骤:

       

    三、LDA

      1.基本思想和详细解释

      基本思想:给定训练样例,设法将样例投影到一个平面上,使得投影投同类样例离得近,不同类样例离得远。做降维的时候是有监督的。

      详细参考链接: https://www.cnblogs.com/EstherLjy/p/9328861.html和 https://www.cnblogs.com/pinard/p/6244265.html

      2.推导总结:

          

     

      3.计算步骤:

      

     

      如果要分类,则训练集分别进行投影,测试集先投影再寻找投影后距离最小的训练集样本的标签即是预测标签。

      4.与PCA比较:

      相同点:均可用于数据降维;均采用了矩阵特征分解的思想;

      不同点:PCA无监督而LDA有监督;LDA降维维度<=N-1,PCA无限制;LDA选择分类性能最好的方向,PCA选择整体方差最大的方向。

    四、adaboost

      1.Boosting思想:

      先从初始训练集中训练出一个基学习器,再根据学习器的表现对训练样本分布进行调整,使得先前集学习器做错的训练样本在后续受到更多关注,然后基于调整后的样本分布来训练下一个基学习器,如此重复进行,直至基学习器数目达到事先指定的值T,最终将这T个基学习器进行加权结合。

      2.AdaBoost算法:

      过程:首先初始权重为平均值,然后循环产生多个分类器,最后将这多个分类器进行加权组合。产生多个分类的过程是,计算基于当前数据分布的预测输出,然后计算误差,如果误差误差太大则直接舍弃这个分类器,否则就更新分类的权重(误差越大权重越小),接着更新当前数据分布(分错的误差大,分对的误差小),继续下一次的循环,直到分类器个数满足要求。

     

      3.推导:

      基于加性模型的推导方式,即基学习器的线性组合,最小化指数损失函数。指数损失函数最小化,分类错误率也将最小化,说明指数损失函数是分类任务原本0/1损失函数的一致的替代损失函数,且这个替代函数是连续可微的。

      详细推导见链接。

      4.问题:

      对无法接受带权样本的基学习算法,可采用重采样法处理。

      5.优缺点:

      分类精度高;不容易过拟合;对异常值敏感。

      6.GBDT(梯度下降树):

      见https://www.cnblogs.com/EstherLjy/p/9372414.html

      7.链接:

      https://www.cnblogs.com/EstherLjy/p/9371130.html

    五、朴素贝叶斯

      1.思想:

      基于贝叶斯公式来估计后验概率P(c|x)的主要困难在于,类条件概率是所有属性上的联合概率,难以从有限的训练样本中直接估计得到。所以朴素贝叶斯采用了“属性条件独立性假设”,即对已知类别,假设所有属性相互独立。

      2.推导:

     

      

      3.过程:

      朴素贝叶斯的训练过程就是基于训练集D来估计类先验概率P(c),并为每个属性估计条件概率P(Xi|c)。

      (1)计算上述式子。

      (2)对测试样本选取上述式子最大的c。

      4.平滑:

      为了避免其他属性携带的信息被训练集中未出现的属性值抹去,在估计概率时通常要进行平滑,常用拉普拉斯修正,具体公式为:

     

      其中N是类别数,Ni是滴i个属性可能的取值数。

      5.半朴素贝叶斯

      (1)基本思想:

      适当考虑一部分属性间的相互依赖信息,从而既不需要进行完全概率计算,也不至于忽略了比较强的属性依赖关系。

    六、EM

      1.基本思想:

      一种迭代式的、用于估计参数隐变量的方法,基本思想是,若参数已知,则可根据训练数据推断出最优隐变量的值(E步),若隐变量已知,则可对参数做极大似然估计(M步)。

      2.过程:

      对隐变量求期望,对参数求最大似然。

     

       

      3.优缺点:

      对初始值敏感,初始值的选择直接影响收敛效率和能否得到全局最优解。是一种非梯度优化算法,比梯度下降方法更容易不陷入局部最优解。

      4.初始值选择:

      多选几个取最优的一个;具体问题具体分析,判定边界,在范围内随机取。

    七、BP

      参考 https://www.cnblogs.com/EstherLjy/p/9396139.html

    八、SVD

      详细参考:https://blog.csdn.net/shenziheng1/article/details/52916278

    九、谱聚类

      详细参考:https://www.cnblogs.com/EstherLjy/p/9432651.html

    十、决策树

      1.思想:

      对样本按照树的形式进行构建和划分,每一个样本有多个属性,选取一个属性将样本分成两个节点,叶节点即是该样本所属类别,直到不可分或者树的高度达到一定限制。关键在于划分属性的选择。

      2.过程:

      即:每次先检查一下样本在类别和属性上是否可分,然后选择其中一个属性分成两类。

     

      3.ID3决策树:

      信息增益越大越好。信息增益=信息熵-用属性a划分后得到的信息熵=纯度的提升量。可以分成多个节点,但是不能处理连续值情况。采用贪心算法,每次选择使得信息增益最大的划分属性。

       

        

      4.C4.5决策树:

      信息增益准则对可取值数目较多的属性有所偏好,为减少这种偏好带来的不利影响,C4.5决策树采用增益率选择最优划分属性。可以处理连续值情况,需要扫描排序。

     

      注意:增益率对可取值数目少的属性有偏好,所以C4.5采用启发式:先从候选划分属性中找出信息增益高于平均水平的属性,再从中选择属性增益率最高的。

      5.剪枝:

      作用:防止过拟合。

      包括:预剪枝与后剪枝。

      预剪枝:在决策树生成过程中,对每个节点在划分前先进行估计,若当前节点的划分不能带来决策树繁华性能的提升,则停止划分并将当前节点标记为叶节点。

      后剪枝:先从训练集生成一棵完整决策树,然后自底向上对非叶节点进行考察,若该节点对应的子树替换为叶节点能带来决策树泛化能力的提升,则将该子树替换为叶节点。

      判断泛化性能:预留法——预留一部分验证集做性能评估。

      连续值处理:二分法。

      缺失值处理:将同一个样本以不同的概率划分到不同的子节点中去。

      6.参考:

      https://www.cnblogs.com/EstherLjy/p/9372074.html

    十一、随机森林

      1.思想:

      RF在以决策树为基学习器构建bagging集成的基础上,进一步在决策树的训练过程中引入了随机属性选择。具体来说,传统决策树在选择划分属性时是在当前节点的属性集合中选择一个最优属性,而在RF中,对基决策树的每个节点,先从该节点的属性集合中随机选择一个包含k个属性的子集,然后再从这个子集中选择一个最优属性用于划分,这里的参数K控制了随机性的引入程度,推荐值k=log2d。

      2.优点:

      简单,容易实现,计算开销小,而且性能强大,每棵树都是独立的可以并行训练。

      3.学习器结合的好处:

      学习任务假设空间大,可能有多个假设在训练集达到同等性能,单学习器可能泛化性能可能不佳;可减低陷入局部最小点的风险;扩大了假设空间。

     

  • 相关阅读:
    wait与sleep区别?
    oracle死锁查询
    atomic 原子操作的类
    买票问题
    0001.第一个多线程demo--分批处理数据
    01: JavaScript实例
    01: 运维工作梳理
    04: 使用BeautifulSoup封装的xss过滤模块
    04: 打开tornado源码剖析处理过程
    03: 自定义异步非阻塞tornado框架
  • 原文地址:https://www.cnblogs.com/EstherLjy/p/9326307.html
Copyright © 2011-2022 走看看