机器学习的期末复习笔记。(实时更新)
目前更新到第二章!
第一章 机器学习概述
- 什么是机器学习?
- 机器学习算法有哪些?
- 机器学习能够为我们做什么?
1.什么是机器学习?
1.1 机器学习的基本概念
- 在很多时候,机器学习被赋予了更广义的名字:人工智能(AI,Artificial Intelligence)
- 计算机是否能够“思考”?
- 人工智能的简洁定义:努力将通常由人类完成的智力任务自动化。
- AI适合用来解决定义明确的逻辑问题,比如下国际象棋,但它难以给出明确的规则来解决更加复杂、模糊的问题,比如图像分类、语音识别和语言翻译。
- 机器学习的概念来自于“计算机器和智能”中提出的一个问题:对于计算机而言,除了“我们命令它做的任何事情”之外,它能否自我学习执行特定任务的方法?计算机能否通过观察数据自动学会数据处理规则?
- 新的编程范式:输入的是数据和从这些数据中预期得到的答案,系统输出的是规则,这些规则随后可应用于新的数据,并使计算机自主生成答案。
- 机器学习是一种从数据当中发现复杂规律,并利用规律对未来时刻、未知状况进行预测和判定的方法,是当下被认为最有可能实现人工智能的方法。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。
机器学习与人脑学习比较
人脑:总结经验------>发现规律------>预测未来
电脑:训练数据------>建立模型------>预测未知属性
1.2 基本的机器学习术语
- 数据集(Dataset):数据是进行机器学习的基础,所有数据的集合称为数据集。
- 样本(Sample):数据集中每条记录是关于一个事件或对象的描述,称为样本。
- 属性(Attribute)或特征(Feature):每个样本在某方面的表现或性质。
- 特征向量(Feature Vector):每个样本的特征对应的特征空间中的一个坐标向量。
- 学习(Learning)或者训练(Training):从数据中学得模型的过程,这个过程通过执行某个学习算法来完成。
- 训练数据(Training Data):训练过程中使用的数据。
- 训练样本(Training Sample):训练数据的每个样本。
- 训练集:训练样本组成的集合。
- 标签(Label):训练数据中可能会指出训练结果的信息。
- 测试(Test):学习到模型后,使用其进行预测的过程。
- 泛化能力(Generalization):学习到的模型适用于新样本的能力。机器学习的目标是使得学习到的模型能很好得适用于新样本,而不是仅仅在训练样本上适用。
训练集是训练样本组成的集合。为什么不可以是训练数据组成的集合?
在机器学习中,"训练集"特指经过严格划分、预处理和标注的专门用于模型训练的结构化样本集合,它必须与验证集、测试集配套使用,并满足特定的统计特性要求;而"训练数据"是更广义的概念,泛指所有可用于训练的数据资源,可能包含未处理的原始数据,不需要配套其他数据集或满足严格的数据规范。学术界更推荐使用"训练集"这一精确术语来指代模型训练阶段使用的结构化数据子集。
而训练样本是经过预处理和标注的结构化数据实例,用于机器学习模型的训练。每个训练样本代表一个经过处理的观测数据点。
维度 | 训练数据 (Training Data) | 训练样本 (Training Sample) |
---|---|---|
定义 | 原始数据集合(未处理) | 经过预处理后的单个数据实例 |
形态 | 可能是杂乱的非结构化数据 | 结构化/标准化的特征向量或矩阵 |
用途 | 需要清洗和特征工程 | 直接输入模型训练 |
存储形式 | 数据库/CSV/日志文件等 | NumPy数组/Tensor/DataFrame |
1.3 机器学习的组成
- 机器学习中的经验称为模型,机器学习的过程即根据一定的性能度量准则对模型参数进行近似求解,以使得模型在面对新数据时能够给出相应的指导。
机器学习算法要素: 数据、模型、性能度量准则。
1.3.1 数据
- 数据是机器学习算法的原材料,其中蕴含了数据的分布规律。生产实践中直接得到的一线数据往往是“脏数据” ,可能包含大量缺失值、冗余值,而且不同维度下的数据的量纲往往也不尽相同,需要先期的特征工程对数据进行预处理。
- 数据形式:数字化数据、图像数据,语音数据,文本数据等。
1.3.2 模型
- 如何从众多机器学习模型中选择一个来对数据建模,是一个依赖于数据特点和研究人员经验的问题。常见的机器学习算法主要有逻辑回归、最大熵模型、k-近邻算法、决策树、朴素贝叶斯分类器、支持向量机、高斯混合模型、隐马尔可夫模型、降维、聚类、深度学习等。
模型和算法的关系?
在机器学习中,算法是用于从数据中学习模式的数学过程或计算步骤(如梯度下降、决策树分裂规则),而模型则是算法运行后生成的具体结果(如训练得到的权重参数或决策树结构)。二者的关系可以类比为:算法是"方法"(如烹饪步骤),模型是"产物"(如做好的菜肴)。选择算法(如SVM、随机森林)决定了模型的学习方式,而最终评估和部署的是训练完成的模型(如SVM的分类超平面、随机森林的树集合)。理解这种"算法生成模型"的层级关系,是正确应用机器学习的关键基础。
1.3.3 性能度量准则
- 性能度量准则用于指导机器学习模型进行模型参数求解,这一过程称为训练。训练的目的是使性能度量准则在给定数据集上达到最优。训练一个机器学习模型往往需要对大量的参数进行反复调整或者搜索,这一过程称为调参。对于其中在训练之前调整设置的参数,称之为超参数。
2.机器学习算法
按照不同的划分准则,机器学习算法可以分为不同的类型。
1.模型预测输出的连续性:分类问题、回归问题。
2.是否包含标签及多少:监督学习、半监督学习、无监督学习。
3.是否用于生成新数据:生成模型、判别模型。
2.1 模型预测输出的连续性
2.1.1 分类问题
- 根据模型预测输出的连续性,可以将机器学习算法适配的问题划分为分类问题和回归问题。分类问题以离散随机变量或者离散随机变量的概率分布作为预测输出,回归问题以连续变量作为预测输出。
问题类型 | 输出形式 | 典型场景 | 评估指标 |
---|---|---|---|
分类 | 离散类别(0/1/A/B/C) | 图像识别、风险评级 | 准确率、F1分数 |
回归 | 连续数值(如3.14) | 房价、温度、销售额预测 | 均方误差(MSE)、R² |
2.1.1 分类问题的概念
用于分类任务的机器学习模型称为分类模型或分类器。
分类任务的目标是通过训练样本构建合适的分类器𝐶(𝑋),完成对目标的分类。
分类类别只有两类的分类任务称为二值分类或二分类,这两个类别分别称为正类和负类,通常用+1和-1分别指代。
分类类别多于两类的分类任务通常称之为多值分类。
分类算法有:k近邻方法、决策树方法、 朴素贝叶斯分类方法等。
简单说来,分类所要解决的问题是将一个事件或者对象划分到给定的类别上。例如,斯坦福大学的研究人员已经基于深度学习训练了一种诊断皮肤癌的算法,该算法使用“130,000张代表超过2,000种不同疾病的皮病变图像”进行训练,来检测皮肤癌或黑色素瘤。
2.1.2 分类问题详细示例
给定一组数据(训练集),如右图,一条记录都可由一组 (x, y) 来表示, x 代表属性集 ,y 代表类别标号,是经典的鸢尾花数据集示例,包含4个特征和3个类别:
花萼长度 (cm) | 花萼宽度 (cm) | 花瓣长度 (cm) | 花瓣宽度 (cm) | 类别标签 (y) |
---|---|---|---|---|
5.1 | 3.5 | 1.4 | 0.2 | 山鸢尾 (0) |
7.0 | 3.2 | 4.7 | 1.4 | 变色鸢尾 (1) |
6.3 | 3.3 | 6.0 | 2.5 | 维吉尼亚鸢尾 (2) |
- 特征 (x):前4列是数值型特征。
- 标签 (y):最后一列是类别(离散值)。 以Python的
scikit-learn
库为例:
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
# 加载数据
data = load_iris()
X = data.data # 特征 (x)
y = data.target # 标签 (y)
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)
# 训练分类模型(随机森林)
model = RandomForestClassifier()
model.fit(X_train, y_train)
# 预测新数据
new_data = [[5.0, 3.0, 1.5, 0.2]] # 新样本的特征
predicted_class = model.predict(new_data) # 输出预测类别
print("预测类别:", predicted_class)
2.1.2 回归问题
回归任务是通过若干带有标注的样本数据构造出一个预测模型R(X),使得R(X)的预测输出尽可能符合真实值,并称R(X)为回归模型。使用计算机学习出的模型进行预测得到的是连续值。
回归模型的典型应用有银行信贷评分、人脸/人体关键点估计、年龄估计、股市预测等。
2.1.3 分类VS回归
2.1.3.1 输出不同
- 分类问题输出的是物体所属的类别,回归问题输出的是给定样本的属性值或值区间。
- 分类问题输出的值是离散的(有限个类别)、定性的,回归问题输出的值是连续的(范围内任意值)、定量的。
2.1.3.2 目的不同
- 分类的目的是为得到决策面,用于对数据集中的数据进行分类。
- 回归的目的是为了得到最优拟合线,这个线可以最好接近数据集中的各个点。
2.1.3.3 结果不同
- 分类的结果没有逼近,最终结果只有一个。
- 回归是对真实值的一种逼近预测,值是不确定的。
2.2是否包含标签及多少
2.2.1 监督学习
- 根据样本集合当中是否包含标签以及包含标签的多少,可以将机器学习分为监督学习、半监督学习和无监督学习。
- 监督学习是指样本集合中包含标签的机器学习。
- 基本思想:通过标注值告诉模型在给定输入的情况下应该输出什么值,由此获得尽可能接近真实映射方式的优化模型。即将预测结果与训练数据的实际结果进行比较,不断的调整预测模型,直到模型的预测结果达到一个预期的准确率。
- 这种利用带标注样本调整模型参数的学习方式,能够提升模型性能。
- 典型例子:分类和回归模型、决策树、贝叶斯模型、支持向量机、深度学习。
2.2.2 无监督学习
- 有标注样本集合的获取往往需要耗费大量的人力、财力。有时也希望从无标注数据中挖掘新的信息,比如电商平台根据用户特征对用户进行归类,以实现商品的精准化推荐。
- 基本思想:数据并不被特别标识,计算机自行学习分析数据内部的联系、规律、特征等,进而得出一定的结果(如内部结构、主要成分等)。
- 训练样本的类标识是未知的,要学习的类集合或数量也可能未知。
- 典型例子:聚类算法、降维算法是最典型的无监督学习算法。
2.2.3 半监督学习
- 半监督学习介于监督学习和非监督学习之间,输入数据部分被标识,部分没有被标识,没标识数据的数量常常远远大于有标识数据数量。
- 基本思想:同时从有标签数据和无标签数据中进行经验学习。这种学习模型可以用来进行预测,但是模型首先需要学习数据的内在结构以便合理的组织数据来进行预测。
- 典型例子:主要分为半监督分类,半监督回归,半监督聚类和半监督降维算法。
2.2.4 强化学习
- 根据反馈信息来调整机器行为以实现自动决策的一种机器学习方式。
- 强化学习主要由智能体和环境两个部分组成。智能体是行为的实施者,由基于环境信息的评价函数对智能体的行为做出评价,若智能体的行为正确,则由相应的回报函数给予智能体正向反馈信息以示奖励,反之则给予智能体负向反馈信息以示惩罚。
- 典型算法:Q-Learning算法、Monte-Carlo Learning算法。
2.2.5 强化学习vs监督学习、无监督学习
- 监督学习需要的是标签数据,通过训练获得模型来推断那些不在训练集中的样本的标签应该是什么,监督学习的主要目的是总结概括。强化学习需要的是带有回报的交互数据,agent需要通过从自己的经验中学习如何使自己的利益最大化。
- 非监督学习一般是寻找未标注数据中同一类的结构信息,而强化学习专注于为agent实现reward最大化。
2.3 是否用于生成新数据
2.3.1 生成模型
- 生成模型是指通过机器学习算法从训练集中学习到输入和输出的联合概率分布P(X,Y)。对于新给定的样本,计算x与不同标记之间的联合分布概率,选择其中最大的概率对应的标签作为预测输出。
- 典型的生成模型有朴素贝叶斯分类器、高斯混合模型、隐马尔可夫模型、生成对抗网络等。
2.3.2 判别模型
- 判别模型计算的是一个条件概率分布P(X,Y),即后验概率分布。
- 典型的判别模型有逻辑回归、决策树、支持向量机、神经网络、k-近邻算法。
- 由于生成模型学习的是样本输入与标签的联合概率分布,所以可以从生成模型的联合概率分布中进行采样,从而生成新的数据,而判别模型只是一个条件概率分布模型,只能对输入进行判定。
3.机器学习模型评估
3.1 训练和泛化误差
- 通常首先将数据划分为训练集、验证集和测试集三个部分。训练集用于对模型的参数进行训练;验证集用于对训练的进行验证挑选、辅助调参;而测试集则用于测试训练好的模型的泛化能力。
- 在训练集上,训练过程中使用训练误差来衡量模型对训练数据的拟合能力,在测试集上,则使用泛化误差来测试模型的泛化能力。
- 在模型得到充分训练的条件下,训练误差与泛化误差之间的差异越小说明模型的泛化性能越好,得到一个泛化性能好的模型是机器学习的目的之一。训练误差和测试误差往往选择的是同一性能度量函数,只是作用的数据集不同。
3.2 过拟合和欠拟合
现象 | 训练误差 | 测试误差 | 模型表现 |
---|---|---|---|
欠拟合 | 高 | 高 | 简单模型(如线性)无法捕捉规律 |
过拟合 | 极低 | 高 | 复杂模型(如高阶多项式)死记硬背 |
- 欠拟合:用一次多项式(直线)拟合,训练集和测试集误差都很高,连曲线趋势都抓不住。
- 过拟合:用十五次多项式,训练误差接近零,但测试误差爆炸(如x>10时预测完全失控)
当训练损失较大时,说明模型不能对数据进行很好的拟合,称这种情况为欠拟合;当训练误差小且明显低于泛化误差时,称这种情况为过拟合。此时模型的泛化能力在在较弱。