您的位置:首页 > 编程语言 > Python开发

机器学习实战(第一篇)-机器学习基础

2017-12-27 20:43 316 查看
      最近在从事一些大数据分析的项目,接触到了时下非常热门的机器学习的概念。作为刚刚进入这一行的从业人员,我也经历了迷茫期,不知道该如何去学习这一门新兴学科。在网上查阅资料的时候,也没有发现能够有由浅入深介绍机器学习知识的资料。于是,自己想结合自己的学习过程,记录我是如何学习机器学习这一门新学科的。

       与学习任何一门知识一样,我们先从基础的概念层面对机器学习做一个底层的全面理解和认知。本篇文章中我会从四个方面介绍机器学习的基础概念。

1. 机器学习的简单概述

机器学习能让我们自数据集中受到启发,换句话说,我们会利用计算机来彰显数据背后的真实含义。
机器学习就是把无序的数据转换成有用的信息。
如何使用机器学习算法进行分类:首先需要做的是算法训练,也就是学习如何分类;通常使用两套独立的样本集:训练数据和测试数据。当机器学习程序开始运行时,使用训练样本集作为算法的输入,训练完成之后输入测试样本。
通常我们为算法输入大量已分类数据作为算法的训练集。训练集是用于训练机器学习算法的数据样本集合。

2. 机器学习的主要任务

    监督学习:这类算法必须知道预测什么,即目标变量的分类信息,监督学习按目标不同分为以下两类

    分类:将实例数据划分到合适的分类中;
    回归:主要用于预测数值型数据;

    无监督学习:没有类别信息,也不会给定目标值;包含

    聚类:将数据集合分成类似的对象组成的多个类的过程;
    密度估计:将寻找描述数据统计值的过程

3. 如何选择合适的算法

    选择算法的时候必须考虑下面两个问题:一.使用机器学习的目的,想要完成何种任务,比如是预测明天下雨的概率还是对投票者按照兴趣分组;二.需要分析或收集的数据是什么。
    首先考虑使用机器学习算法的目的:如果想要预测目标变量的值,则可以选择监督学习算法,否则可以选择无监督学习方法。
     确定使用监督学习算法之后,需要进一步确定目标变量类型,如果目标变量是离散型,如是/否、1/2/3、A/B/C等,则可以选择分类器算法;如果目标变量是连续型的数值,如0.0-100.00,-999-999,则需要选择回归算法。
      如果不想预测目标变量的值,则可以选择无监督学习算法。进一步分析是否需要将数据划分为离散的组。如果这是唯一的需求,则使用聚类算法;如果还需要估计数据与每个分组的相似程度,则需要使用密度估算算法。
      其次需要考虑的是数据问题。在实施具体机器学习策略之前,我们应该充分了解数据,对实际数据了解的越充分,越容易创建符合实际需求的应用程序。主要应该了解数据的以下特性:

特征值是离散型变量还是连续型变量;
特征值是否存在缺失的值;
何种原因造成缺失值;
数据中是否存在异常值;
某个特征发生的频率如何

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

     一般在开发机器学习应用程序时,我们可以遵循以下的步骤:

收集数据:我们可以使用很多方法收集样本数据。如:制作网络爬虫从网站上抽取数据、从RSS反馈或API中得到信息、设备发送过来的实测数据(风速、水温)。提取数据的方法非常多,为了节省时间与精力,可以使用公开可用的数据源;
准备输入数据:得到数据后,还必须确保数据格式符合要求,一般我们可以使用Python语言的List类型,使用这种标准数据格式可以融合算法和数据源,方便匹配操作;此外,我们还需要为机器学习算法准备特定的数据格式。
分析输入数据:此步骤主要是人工分析以前得到的数据。为了确保前两步有效,最简单的方法就是使用文本编辑器打开数据文件,查看数据是否为空值。此外,还可以进一步浏览数据,分析是否可以识别出模式;数据是否存在明显的异常值;这一步主要是确保数据集中没有垃圾数据。
训练算法:机器学习算法从这一步才真正开始学习。我们将前面得到的格式化数据输入到算法,从中抽取知识或信息。这里得到的知识需要存储为计算机可以处理的格式,方便后续步骤使用。如果使用无监督学习算法,由于不存目标变量值,故而也不需要训练算法,所有与算法相关的内容都集中在第五步。
测试算法:这一步将实际使用第四步机器学习中得到的知识信息。为了评估算法,必须测试算法工作的效果。对于监督学习,必须已知用于评估算法的目标变量值;对于无监督学习,也必须用其他的评估手段来检测算法的成功率。无论哪种情形,如果不满意算法的输出结果,则可以回到第四步,改正并加以测试。
使用算法:将机器学习算法转换为应用程序,执行实际任务,以检验上述步骤是否可以在实际环境中正常工作。

5. 学习机器学习的工具

       工欲善其事,必先利其器。鉴于此,我们需要首先确定我们将要使用的工具。我学习过程中选用的是Python,主要有以下三个原因:Python的语法清晰;易于操作纯文本文件;使用广泛,存在大量的开发文档。
    
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息