zoukankan      html  css  js  c++  java
  • 机器学习实战之机器学习主要任务

    之前已经看过,李航的统计与学习方法,对于机器学习相关算法的理论有了一定的了解,但是感觉对于实际的代码编写还有所欠缺,然后就打算花时间将机器学习实战这本书好好看一下,顺便学习一下python

          估计看本书的读者大多都会忽略本书的第一章节,但是第一章我也是认真的看了一遍,里面讲了机器学习的重要性,机器学习的主要任务,以及比较重要的如何选取合适的机器学习算法,最后总结了机器学习开发应用程序的重要步骤

          下面我就来一一进行总结和整理:
    (1)机器学习的重要性

         机器学习的重要性不言而喻,它可以帮助我们解决生活当中的很多问题,比如预测鸟的种类,有时我们不可能在发现一种我们不知道的鸟的种类时,去请教鸟类的专家,这个时候,如果我们根据目前已有的关于鸟种类特征的数据,我们就可以训练得到相关预测鸟类别的模型,当满足精度要求后,我们就可以通过输入相关的特征,从而预测出鸟的类别。因为,我们只是想获取鸟类的相关信息,而不需要大费周章的去预约一个鸟类相关的专家

         总之,机器学习确确实实给我们的生活带来很多方便,并且一直在推动社会的发展

    (2)机器学习的主要任务

         分类是机器学习的一项主要任务,主要是将实例数据划分到合适的分类中。机器学习的另外一项任务是回归,主要是预测数值型的数据,比如通过数据值拟合曲线等。

         分类和回归属于监督学习,这类算法必须知道预测什么,即目标变量的分类信息

         与监督学习相对应的是无监督学习,此时数据没有类别信息,也不会给定目标值。在无监督学习中,将数据集合分成由类似的对象组成的多个类的过程称为"聚类";将寻找描述数据统计值的过程称之为密度估计

      监督学习的用途  
    k近邻算法     线性回归
    朴素贝叶斯算法      局部加权线性回归
    支持向量机       Ridge回归
    决策树        lasso最小回归系数设计
       无监督学习的用途
    k-均值    最大期望算法
    DBSCAN      Parzen窗设计

    1 使用机器学习算法的目的,想要完成什么任务,比如是预测明天下雨的概率还是对投票者按照兴趣分组;
    想要选择合适的算法,必须考虑以下两个问题:
    (3)如何选择合适的算法

          首先考虑机器学习算法的目的。如果想要预测目标变量的值,则可以选择监督学习算法,否则可以选择无监督学习。确定选择监督学习算法后,需要进一步明确目标变量的类型,如果目标变量是离散型,则可以选择分类算法;如果是连续型,则需要选择回归算法。

          如果不想预测目标变量的值,就选择无监督学习方法。进一步分析是否需要将数据划分为离散的组。如果需要并且不需要估计数据与每个分组的相似程度,那么可以选择聚类算法。否则可以选择密度估计算法。

    2 需要分析和收集的数据是什么

         我们需要考虑实际的数据问题,应该充分了解数据,对实际数据了解的越充分,越容易创建符合实际需要的应用程序。

         主要应该了解数据的以下特征:

    1)特征值是离散型变量还是连续型变量

    2)特征值中是否有缺失的值,何种原因造成

    3)数据中是否有异常值

    4)某些特征发生的频率如何

         通过上面对数据的充分了解,可以帮助我们缩小算法的选择范围,一般并不存在最好的算法和可以给出最好效果的算法,一般发现最好算法的关键环节是反复试错的迭代过程

    (4)开发机器学习应用程序的步骤

    1 收集数据:我们可以通过很多方法手机数据,比如制作网络爬虫从网站抽取数据,也可以使用公开的数据源

    2 准备输入数据:得到数据之后,还必须确保数据格式符合要求,使用标准的数据格式可以融合算法和数据源,方便匹配操作;此外,还要为机器学习算法准备特定的数据格式,一般某些算法要求目标变量和特征值是字符串变量,而另外一些算法则可能要求是整数类型。

    3 分析输入数据:主要是人工分析得到的数据,确保数据中没有垃圾数据。

    4 训练算法:将前两步得到的格式化数据输入到算法,从中抽取信息

    5 测试算法,为了评估算法,必须测试算法工作的效果。对于监督学习,必须已知用于评估算法的目标变量值;对于无监督学习,也必须用其他评测手段来检验算法的成功率。如果不满意算法的输出结果,不改变算法的前提下,问题常常与数据的收集和准备有关

    6 使用算法:将机器学习算法转化为应用程序,执行实际任务,以检验上述步骤是否可以在实际环境中正常运行。

         总之,对待实际的问题时,我们要充分了解当前数据的信息,充分利用数据的信息,借此选择出相对较好的机器学习算法,来帮助我们更好的解决实际的问题

  • 相关阅读:
    面向对象之继承
    面向对象
    Python—文件和内建函数 open(),file()
    如何在命令行打开文件夹?
    Anaconda在win10下的安装
    Python—for循环和range()内建函数
    python—基础练习2
    python—数据类型
    python—字符编码
    python—基础练习1
  • 原文地址:https://www.cnblogs.com/zy230530/p/6775343.html
Copyright © 2011-2022 走看看