zoukankan      html  css  js  c++  java
  • 机器学习实战

    花了一段时间,总算把《机器学习实战》粗读了一遍,重点就在这个粗读上。

    这本书的确不错,机器学习的几个经典算法都涉及了,每个算法都有1、2个实际例子进行说明,都有实实在在的代码,让我想起了linus的“talk is cheap, show me the code”那句名言。

    但多年来养成的习惯,从来都是喜欢粗读一遍,然后再找一些其它书和材料对照着细读。这本书也不例外,反而觉得挺适合自己的这种粗读方式,迅速了解机器学习的经典算法、代码的具体实现以及应用实例。相比开始时的一堆公式,这种了解方式更适合自己带着问题学习的风格。

    机器学习可分为监督式学习和非监督式学习两类算法。监督式学习解决<x, y>这类数据的分类和回归问题,而非监督式学习解决<x>这类数据的分组和内在规则的发现。

    对于监督式学习的分类算法,最简单易理解的是k-近邻算法,通过计算待划分数据与训练样本之间的距离,通过计算最接近样本的类别概率从而得到带划分样本的分类。这种算法精度高,对异常值敏感度低,然而从原理上就决定了它的计算复杂度和空间复杂度都很高。适用的数据可以是数值型或标称型。

    “决策树算法应该是数据挖掘里应用最广泛的算法了”。这个分类算法理解起来也并不困难,需要搞清楚的两点是信息熵增益计算和寻找最佳的划分特征,最后采用递归方式建立树。python做这类计算是太方便了,真不知用C++这种语言实现起来会有多麻烦。适用数据为数值型或标称型。

    朴素贝叶斯算法利用贝叶斯公式计算已知输入集下各种分类的概率,概率大的分类胜出。算法流程也不算复杂,只适用于标称型数据。

    Logistic回归算法的核心在于回归系数(权值)的调整,找出分类超平面,书中采用的是梯度上升算法寻找最佳参数。不过采用梯度法寻优都有容易陷入局部最优的缺陷。

    支持向量机作为机器学习里比较难的一种算法,这本书理论知识太少相反不易理解了,所以此次也就不求理解的读了一遍,没啥特别感想,肯定得找本系统一点的书研读该算法。

    Adaboost算法感觉上更像一个算法框架,通过不断迭代构造简单的弱分类器和更新样本权重,最终实现一种强分类器,挺有意思的一种算法。其中的弱分类器可以是随便一种分类算法。

    对于回归问题,目的在于预测数据。

    标准线性回归算法就是解冗余线性方程组,简单的矩阵计算即可解得回归系数。但这种粗放处理方式带来的一个问题就是欠拟合,所以又有一种局部加权线性回归算法提出,这个算法把<x>赋予权重,与待预测输入数据xd接近的<x>权重大,原理它的权重小。这样一处理,参数调好的情况下能够更好的抓住数据的潜在模式。对于样本点不足以匹敌特征数的情况,统计学家们引入了“岭回归”的概念,即在权重计算公式中引入了一个惩罚项。当然有比这种做法更好的,有lasso以及性能与lasso匹敌但更易实现的前向逐步回归算法。这个前向逐步回归算法属于贪心算法,对每一个特征的权重每一步都尝试加或减一点,看看全体样本的估计误差是不是本次迭代中最小的。

    树回归算法与决策树同源,处理上有差异。这一块粗略看了,原理上懂的似是而非,还需要多一些原理和数学上的了解,下一步的细读计划中也需要重点关注该算法。这也是机器学习里非常重要的一个方法。

    无监督学习算法的目的是找出数据中的规律,而不是得到输出量什么的。K-均值聚类算法与k-近邻算法略微相似,随机找k个质心,然后计算每一个数据点到各个质心的距离,离哪个质心近,就归到那一类去。所有数据点走完一遍后,类别发生改变,质心通过该类的数据求均值算出,循环上述过程,直到质心不再改变。

    Apriori算法寻找数据中的频繁项和关联规则。像是超市里,买的最多的是不是零食,买了零食的是不是多半买饮料之类问题。Apriori的核心思想是如果一个项目集合是非频繁集合,那么它的所有超集必然也是非频繁的。正是这个原理,大大减少了测试的计算量,通过指定最小支持度只关注有用的数据组合。FP-Growth算法是更厉害的一种算法,需要构建FP树,然后从中挖掘频繁项目集合。构建过程稍显繁琐,这块也好似理解了,但还没有到能够讲述出来的程度,需要进一步深化,多些理论铺垫。

    书的最后一部分是对数据化简的几种方法,PCA主成份分析在于计算协方差矩阵,保留指定的最大的N个特征向量然后重建减维后的数据。SVD简化方法也是一个跟矩阵论攀上关系的算法,这一块仍得仔细阅读,深挖理论根基。

    书的最后一章介绍了大数据和MapReduce,粗略翻过,以后工作中也许少不了,但毕竟是工具,得上述方法掌握了之后,这些东西在具体应用中学习不会是多麻烦的一个事。

    总而言之,这本书仍要重新阅读一遍,不过下一遍更多的是把它当作一个《实例解析》这样一种性质的书来读了,通过更系统、更理论的了解其它材料,用其它语言来实现它给出的实例试试。

  • 相关阅读:
    最深叶节点的最近公共祖先
    ML-Agents(十)Crawler
    ML-Agents(九)Wall Jump
    ML-Agents(八)PushBlock
    ML-Agents(七)训练指令与训练配置文件
    Unity Editor扩展编辑器中显示脚本属性
    ML-Agents(六)Tennis
    数据结构(二)—栈
    ML-Agents(五)GridWorld
    ML-Agents(四)3DBall补充の引入泛化
  • 原文地址:https://www.cnblogs.com/robert-cai/p/3493086.html
Copyright © 2011-2022 走看看