《机器学习实战》总结——第一章:机器学习基础

一、机器学习基础

1.1 何谓机器学习

机器学习就是将无序的数据转换成有用的信息。

机器学习横跨计算机科学、工程技术和统计学等多个学科,需要多学科的专业知识。

✨✨✨1.1.1 传感器和海量数据
移动计算和传感器产生的海量数据意味着未来我们将面临着越来越多的数据,如何从数据中抽取有价值的信息将是一个非常重要的课题。

✨✨✨1.1.2 机器学习非常重要
大量的经济活动都依赖于信息,我们不能再海量的数据中迷失,机器学习有助于我们穿越数据雾霭,从中抽取出有用的信息。

1.2 关键术语

机器学习的主要任务就是分类

最终我们决定使用某个机器学习算法进行分类,首先需要做的就是算法训练,即学习如何分类。
——训练集:通常我们为算法输入大量已分类数据作为算法的训练集。训练集是用于训练机器学习算法的数据样本集合。

——目标变量:机器学习算法的预测结果。分类算法中的目标变量的类型通常是标称型的;回归算法中的目标变量通常是连续型的。

训练样本集必须明确知道目标变量的值,以便机器学习算法可以发现特征和目标变量之间的关系。

我们通常将分类问题中的目标变量称为类别,并假定分类问题只存在有限个数的类别。

《机器学习实战》总结——第一章:机器学习基础

???????? 特征或者属性通常是训练样本集的列,它们是独立测量得到的结果,多个特征联系在一起共同组成一个训练样本。

《机器学习实战》总结——第一章:机器学习基础

为了测试机器学习算法的效果,通常采用两套独立的样本集:
——训练数据:当机器学习程序开始运行时,使用训练样本集作为算法的输入。

输入测试样本时并不提供测试样本的目标变量,由程序决定样本属于哪个类别。

——测试数据:训练完成后输入测试样本。

比较测试样本预测的目标变量值和实际样本类别之间的差别,就可以精确的计算出算法的实际精确度。

1.3 机器学习的主要任务

机器学习的任务:

  1. 分类:将实例数据划分到合适的分类中。
  2. 回归:预测数值型数据。
    《机器学习实战》总结——第一章:机器学习基础

监督学习:分类和回归都属于监督学习。因为它必须知道预测什么,即目标变量的分类信息。

无监督学习:此时的数据没有类别信息,也不会给定目标值。

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

无监督学习可以减少数据特征的维度,以便我们可以使用二维或三维图形更加直观地展示数据信息。

《机器学习实战》总结——第一章:机器学习基础

1.4 如何选择合适的算法

上表的算法中选择实际可用的算法,必须考虑两个问题:

  1. 使用机器学习算法的目的,想要算法完成何种任务;
  2. 需要分析或收集的数据是什么。

✨✨ 首先需要考虑使用机器学习算法的目的。
① 如果想要预测目标变量的值,则可以选择监督学习算法

  • 确定监督学习算法后,需要进一步确定目标变量类型。
    • 目标变量是离散型
      如:是/否、1/2/3、A/B/C或者红/黄/黑 等。
    • 目标变量是连续型
      如:0.0~100.00、-999~999、-∞~+∞

② 如果不想要预测目标变量的值,则可以选择无监督学习算法

  • 进一步分析是否需要将数据划分成离散的组。
    • 如果这是唯一的需求,则使用聚类算法
    • 如果还需要估计数据和每一个分组的相似程度,则需要使用密度估计算法

✨✨ 其次需要考虑的是数据问题。
主要应该了解数据的以下特征:
特征值是离散型变量还是连续型变量,特征值中是否存在缺失的值,何种原因造成缺失值,数据中是否存在异常值,某个特征发生的频率如何等等。充分了解上面的数据特征可以缩短选择机器学习算法的时间。

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

  1. 收集数据。

收集样本数据。

  1. 准备输入数据。

确保数据格式符要求。

  1. 分析输入数据。

确保数据集中没有垃圾数据。

  1. 训练算法。

将前两步得到的数据输入到算法中,从而抽取知识或者信息。

  • 若采用无监督学习算法,由于不存在目标变量值,故而也不需要训练算法、所有与算法相关的内容都集中在第五步。
  1. 测试算法。

这步将实际使用第四步机器学习得到的知识信息。为了评估算法,必须测试算法工作的效果。

  • 对于监督学习,必须已知用于估算算法的目标变量值;
  • 对于无监督学习,也必须用其他的评测手段来检测算法的成功率。
  1. 使用算法。

将机器学习算法转换成应用程序,执行实际操作,以检验上述步骤是否可以在实际环境中正常工作。

1.6 Python语言的优势

Python作为机器学习算法编程语言的3大原因:

  1. python语法清晰
  2. 易于操作纯文本文件
  3. 使用广泛,存在大量的开发文档

✨✨✨ 1.6.1 可执行伪代码
Python具有清晰的语法结构,大家称为可执行伪代码