机器学习实战之机器学习主要任务

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

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

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

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

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

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

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

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

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

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

 

   无监督学习的用途
k-均值    最大期望算法
DBSCAN      Parzen窗设计

 

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

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

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

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

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

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

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

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

3)数据中是否有异常值

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

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

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

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

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

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

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

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

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

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

posted @ 2017-04-27 17:37  卑微的蜗牛  阅读(3924)  评论(0编辑  收藏  举报