Chapter1 机器学习基础

发布时间 2023-04-06 10:28:38作者: gao79138

机器学习的一些预备知识


何为机器学习?

我的理解是:机器学习就是从海量的数据中找到这些数据背后所蕴含的规律/意义(提取有用的信息)并利用这些信息来解决实际问题的一门学科。

机器学习可以做什么?

人脸识别、垃圾邮件分类、产品推荐、手写数字识别等等

关键术语

img

根据上述的图片解释一下相关术语:
    1. 特征(属性):上述图片中的列(体重(克)、脚蹼、后背颜色、翼展)。 
    2. 实例(样本):上述图片中的每一行。
    3. 训练集(训练样本集):训练样本的集合,上述的图片就是包含六个训练样本的训练集。
    4. 目标变量:机器学习算法预测的结果。如上述图片的种属。需要注意的是:训练样本集必须提前知道目标变量的值,以便于确定特征与目标变量之间的关系。
    5. 类别:分类问题中的目标变量称为类别。
    6. 测试集(测试样本集):测试样本的集合。一般来说,当机器学习的程序开始运行时我们先使用训练集来训练该程序。训练完成后,我们再使用测试集(不提供测试样本的目标变量)来进行测试。之后比较程序预测的目标变量和测试样本的目标变量之间的差异来得出该程序的精确度。
    7. 知识表示:使用了机器学习算法的程序通常都会产生结果。这个结果的形式就是知识表示。(例如:我们可以以概率分布的形式来阐述结果或以规则集的形式来阐述结果)(当然知识表示也可以仅仅是一个样本)

注意:上述案例阐述了机器学习是如何解决分类问题的。

一些概念辨析

1. 什么是监督学习和无监督学习?
    监督学习指的就是先通过训练集(既有特征也有标签)来训练,之后再让机器自己找到特征和目标变量(标签)之间的联系。之后,当存在只有特征而没有目标变量(标签)的样本时,机器可以自行预测出该样本的目标变量(标签)。监督学习分为两种:分类和回归。
        1.1 分类主要针对离散型数据。(目标变量为标称型变量)(标称型变量指变量只在有限目标集中取值)
        1.2 回归主要针对连续型数据。(目标变量为数值型变量)(数值型变量指变量在无限目标集中取值)
    无监督学习指训练集只有特征没有目标变量(标签)。机器通过自行寻找相似特征的样本把它们进行归类。无监督学习常用的算法为聚类算法。

2. 聚类和分类的区别
    聚类和分类最明显的区别就是类别已知/未知。若类别已知就是分类,反之就是聚类。
    分类指的就是机器提取样本的特征来将该样本分到已知的类别。(例如:机器查看动物的图片,提取该动物的特征,进而将该动物分到对应的已知的类别)分类属于有监督学习。
    聚类指的就是机器提取样本的特征,将特征相似的众多样本聚成一类,从而聚成几个类别(需要注意的是:聚类中的类别是未知的,你也不知道最后会聚成几类。而分类当中的类别是已知的)聚类属于无监督学习。

监督学习和无监督学习所用到的算法

img

如何选择合适的算法

1. 想要选择合适的算法,必须要考虑如下两个问题:
    1.1 使用机器学习算法的目的?
    1.2 需要分析和收集的数据是什么?
2. 首先考虑使用机器学习算法的目的。
    If 想要预测目标变量的值,可以选择监督学习算法。
        If 目标变量类型为离散型
            分类算法
        If 目标变量类型为连续型
            回归算法
    If 不想要预测目标变量的值,可以选择无监督学习算法。
        If 将数据划分为离散的组
            聚类算法
            If 还需要估计数据与每个分组的相似程度
                密度估计算法
3. 考虑数据问题
    3.1 特征值是连续型变量还是离散型变量?
    3.2 特征值是否存在缺失值,什么原因缺失?
    3.3 特征值是否存在异常值?
    3.4 某个特征发生的频率如何?

注意:我们只能在一定程度上缩小算法的选择范围。一般并不存在最好的算法或者可以给出最好结果的算法,同时还要尝试不同算法的执行效果。并且如何选择合适的算法这件事并不是固定的,需要具体问题具体分析。

开发机器学习程序的步骤

1. 收集数据
    可以采用很多方法采集数据。包括但不限于:网络爬虫、使用公开可用的数据源等。
2. 准备输入数据
    得到数据之后,需要确保数据格式符合要求和特定算法的要求。
3. 分析输入数据
    数据格式符合要求之后,接下来需要人工分析输入数据。包括但不限于:查看数据是否为空值、异常值以及对于这些值怎么处理。这一步的主要作用就是确保数据集中没有垃圾数据。
4. 训练算法
    分析完输入数据之后,我们需要将数据输入到算法来进行训练。从中抽取知识或信息。得到的知识或信息需要存储为计算机可以处理的形式。方便后续步骤使用。
    注意:这里的训练算法指监督学习。如果是无监督学习因为不存在目标变量值则不需要事先训练,直接测试算法即可。
5. 测试算法
    根据第四步所得到的知识或信息之后,我们需要评估算法的准确率。对于监督学习必须已知评估算法的目标变量值(测试集的目标变量值)。对于无监督学习也必须用其它的评测手段来检测算法的成功率。
6. 使用算法
    将机器学习算法转换为应用程序。检验是否可以在实际环境中正常工作。