目录

一、无监督学习

无监督学习的类型

*1. 1 降维动机

*1.2 降维弊端

无监督学习的挑战

二、数据预处理

(1)数据清洗

a 缺失值的处理

删除变量

定值补充

统计量填充 如:均值或中位数

插值法填充

模型填充

哑变量填充

b 离群点的处理

具体的处理手段

c 噪声处理

(2)数据变换

a 规范化

b 离散化

离散化原因

离散化方法

c 稀疏化

(3)数据集成

a 实体识别问题

b 冗余问题

c 数据值的冲突和处理

(4)数据规约

a 维度规约

b 维度变换

主成分分析和因子分析

奇异值分解

聚类

线性组合

流行学习​​​​​​​


         以云计算、大数据、人工智能为引领的新一轮技术进步正在融入各行各业,在这样一个转型阶段,人工智能备受关注。人工智能取得革命性进步背后的推手,其实是机器学习(Machine Learning)。由机器学习驱动的人工智能领域在过去十多年中经历了一些惊人的变化,它从一个纯粹的学术研究领域开始,到现在已经看到广泛的行业正在采用机器学习技术。跨越多个领域的应用正在蓬勃发展,包括推荐系统、自动驾驶技术、图像、语音、文本处理等技术正在多个领域广泛应用,并取得了巨大的商业价值。机器学习是人工智能的组成部分,是人工智能的核心。
由于多个领域的广泛应用,催生了巨大的人才需求,为此,近年来,各高校纷纷开设智能科学与技术专业、人工智能专业、数据科学与大数据专业。传统的计算机科学与技术专业、软件工程专业也开设了人工智能方向,而机器学习是其中重要的核心课程,学习和掌握机器学习技术具有巨大的社会需求。在此背景下,希望这本以面向应用为主的机器学习教材可以帮助读者更好、更快地进入机器学习领域。

        机器学习其实是一门多领域交叉学科,它涉及计算机科学、概率统计、函数逼近论、最优化理论、控制论、决策论、算法复杂度理论、实验科学等多个学科。机器学习也因此有许多不同的具体定义,分别因学科视角不同而有差异。但总体上讲,其关注的核心问题是如何用计算的方法模拟人类的学习行为,从历史经验中获取规律(或模型),并将其应用到新的类似场景中。
机器学习是用算法指导计算机利用已知数据自主构建合理的模型,并利用此模型对新的情境给出判断的过程。它不同于传统软件程序,因为传统软件由人编写指令,软件按照这些预先编写的逻辑规则运行,输出结果。机器学习则是通过大量数据的输入,机器学习算法从中主动寻求规律(模型),评估模型的性能,然后用学习到的模型在新的数据上得出结论,自主解决问题。
机器学习之所以重要,是因为它可以为复杂问题提供解决方案。相对于传统程序设计,这些解决方案具有更高的鲁棒性和更多的策略动态。因为计算机程序使数据处理过程得以自动化,它通常是线性的、基于过程和规则逻辑的。而有些复杂问题,想通过传统程序设计方法来解决通常不可行。如下面这些问题,可以描述,却不能通过传统程序解决。这类问题具有如下特点:

(1) 无法界定输入数据的属性范围。

(2) 数据属性太多,无法设计出逻辑去实现程序的目标。

(3) 规则太复杂,无法设计出实现目标的所有逻辑。

(4) 可以收集输入数据的样例,需要将样例中的规律推广到更广泛的数据上。

        这类问题对基于过程和因果逻辑的传统程序解决方案来说很难实现,或者即使实现了,但其性能也很差。总体上来说,传统程序设计基于因果逻辑,而机器学习采用的算法基于概率统计和经验反馈。


第1章 机器学习基础

1.1机器学习

1.1.1什么是机器学习

1.1.2从数据中学习

1.1.3机器学习能够解决的问题

1.2机器学习的分类

1.2.1学习方式

1.2.2算法的分类

1.3机器学习的范围

1.4编程语言与开发环境

1.4.1选择Python的原因

1.4.2安装开发环境

1.4.3Scikit-learn

1.5第一个机器学习应用: 鸢尾花分类

1.5.1特征数据与标签数据

1.5.2训练数据与测试数据

1.5.3构建机器学习模型

1.5.4预测与评估

1.6本章小结

习题


第2章监督学习

2.1监督学习概念与术语

2.1.1监督学习工作原理

2.1.2分类与回归

2.1.3泛化

2.1.4欠拟合

2.1.5过拟合

2.1.6不收敛

2.2K近邻算法

2.2.1K近邻分类

2.2.2K近邻回归

2.3朴素贝叶斯

2.3.1贝叶斯定理

2.3.2朴素贝叶斯算法步骤

2.3.3在Scikit-learn中使用贝叶斯分类

2.4决策树

2.4.1决策树的基本思想

2.4.2决策树学习算法

2.4.3构造决策树

2.4.4决策树的优化与可视化

2.4.5决策树回归

2.5线性模型

2.5.1线性回归

2.5.2岭回归与Lasso回归

2.5.3多项式回归

2.5.4线性分类模型

2.6逻辑回归

2.6.1逻辑回归模型介绍

2.6.2逻辑回归算法实现

2.7支持向量机

2.7.1支持向量

2.7.2线性SVM分类

2.7.3核技巧

2.7.4SVM回归

2.7.5Scikit-learn SVM参数

2.8集成学习方法

2.8.1集成学习

2.8.2Bagging和Pasting

2.8.3随机森林

2.8.4提升法

2.9人工神经网络

2.9.1从生物神经元到人工神经元

2.9.2感知器学习

2.9.3神经网络的训练过程

2.9.4神经网络应用案例

2.10分类器的不确定度估计

2.10.1决策函数

2.10.2预测概率

2.11本章小结

习题


第3章无监督学习与数据预处理

3.1无监督学习

3.1.1无监督学习的类型

3.1.2无监督学习的挑战

3.2数据预处理

3.2.1数据清洗

3.2.2数据变换

3.2.3数据集成

3.2.4数据规约

3.3降维

3.3.1数据压缩

3.3.2数据可视化

3.3.3降维的主要方法

3.3.4PCA

3.3.5利用PCA实现半导体制造数据降维

3.4聚类

3.4.1K-Means聚类

3.4.2均值偏移聚类

3.4.3DBSCAN

3.4.4高斯混合模型的期望最大化(EM)聚类

3.4.5层次聚类

3.5本章小结

习题


第4章特征工程

4.1特征理解

4.2特征增强

4.2.1EDA

4.2.2处理数据缺失

4.2.3标准化和归一化

4.3特征构建

4.3.1特征构建的基础操作

4.3.2特征构建的数值变量扩展

4.3.3文本变量处理

4.4特征选择

4.4.1单变量特征选择

4.4.2模型特征选择

4.4.3迭代特征选择

4.5特征转换

4.5.1PCA

4.5.2LDA

4.6特征学习

4.6.1数据的参数假设

4.6.2受限玻尔兹曼机(RBM)

4.6.3词嵌入

4.7本章小结

习题


第5章模型评估与优化

5.1算法链与管道

5.1.1用管道方法简化工作流

5.1.2通用的管道接口

5.2交叉验证

5.2.1K折交叉验证

5.2.2分层K折交叉验证

5.3模型评价指标

5.3.1误分类的不同影响

5.3.2混淆矩阵

5.3.3分类的不确定性

5.3.4准确率✌召回率曲线

5.3.5受试者工作特征(ROC)与AUC

5.3.6多分类指标

5.3.7回归指标

5.3.8在模型选择中使用评估指标

5.4处理类的不平衡问题

5.4.1类别不平衡问题

5.4.2解决类别不平衡问题

5.5网格搜索优化模型

5.5.1简单网格搜索选择超参数

5.5.2验证集用于选择超参数

5.5.3带交叉验证的网格搜索

5.6本章小结

习题


第6章机器学习应用案例

6.1电影推荐系统

6.1.1推荐系统基础

6.1.2推荐引擎算法

6.1.3相似度指标

6.1.4电影推荐系统实战

6.2情感分析系统

6.2.1情感分析概述

6.2.2导入数据集

6.2.3词袋模型

6.2.4TF-IDF

6.2.5数据预处理

6.2.6训练模型

6.2.7模型评估及调优

6.3房价预测系统

6.3.1案例背景

6.3.2数据处理及可视化分析

6.3.3训练模型

6.3.4模型评估

6.3.5模型调优

6.4人脸识别

6.4.1概述

6.4.2加载数据集

6.4.3训练模型

6.4.4测试模型

6.4.5PCA主成分分析

6.4.6模型调优

6.5本章小结

习题


无监督学习的类型

无监督学习的挑战

数据预处理

降维算法及其应用

聚类算法及其应用


一、无监督学习

无监督学习的类型

两种:数据集变换与聚类。聚类将数据划分成不同的组,每组包含相似的项目。

数据集的无监督变换是创建数据新的表示的算法,降维的一个常见应用是为了可视化将数据降为二维。另一个应用:找到“构成”数据的各个组成部分。

*1. 1 降维动机

用较少的特征就可以概括其重要特性;新的表示可能更容易被人或机器学习算法所理解!

某此选定的特征可能高度相关,因此在某种程度上是多余的。在这种情况下,降维技术对于将特征压缩到低维子空问非常有价值。降低特征空间维数的优点是减少存储空间、提高算法运行的速度。在某些情况下,如果数据集包含大量无用的特征或噪声(即数据集具有较低的信噪比),那么降维也可以提高模型预测的性能。

*1.2 降维弊端

无监督学习的挑战

评估算法是否学到了有用的东西,无监督学习算法一般用于不包含任何标签信息的数据,所以算法不知道正确的输出应该是什么。因此很难判断一个模型是否“表现很好”。

通常来说,评估无监督算法结果的唯一方法就是人工检查。

无监督算法通常可用于探素,而不是作为大型自动化系统的一部分。无监督算法的另一个常见应用是作为监督算法的预处理步骤。学习数据的一种新表示,有时可以提高监督算法的精度,或者可以减少内存占用和时间开销。


二、数据预处理

通常可以通过把特征数据变换为[0,1]的取值范围或者均值为0和方差为1的标准正态分布来实现。

(1)数据清洗

解决数据的不一致问题,“清洗”数据:填补缺失值、光滑噪声数据、平滑或删除离群点。

a 缺失值的处理

删除变量

定值补充

统计量填充 如:均值或中位数

插值法填充

随机插值法、多重插补法、热平台插补法、拉格朗日插值法、牛顿插值法

模型填充

哑变量填充

b 离群点的处理

存在异常值是数据分布的常态,处于特定分布区城或范围之外的数据通常被定义为异常或噪声。异常分为两种:①“伪异常”是由于特定的业务运营动作产生的,是正常反应业务的状态,而不是数据本身的异常:②“真异常”不是由于特定的业务运营动作产生的,而是数据本身分布异常,即离群点。主要有以下检测离群点的方法。

在数据处理阶段将离群点作为影响数据质量的异常点考虑,而不是作为通常所说的异常检测目标点,因而一般采用较为简单直观的方法,结合箱线图和 MAD 的统计方法判断变量的离群点。

具体的处理手段

(1)根据异常点的数量和影响,考虑是否将该条记录删除,这样信息损失多。

(2)若对数据做了 log-scale 对数变换后消除了异常值,则此方法生效,且不损失信息。

(3)使用平均值或中位数替代异常点,简单高效,信息的损失较少。

(4)在训练树模型时,树模型对离群点的鲁棒性较高,无信息损失,不影响模型训练效果。

c 噪声处理

噪声是变量的随机误差和方差,是观测点和真实点之间的误差,即 obs=x\epsilon。通常的处理办法:对数据进行分箱操作,等频或等宽分箱,然后用每个箱的平均数、中位数或者边界值(对不同数据分布,处理方法不同)代替箱中所有的数,起到平滑数据的作用。另外一种做法是建立该变量和预测变量的回归模型,根据回归系数和预测变量,反解出自变量的近似值。

(2)数据变换

a 规范化

特别是基于距离的挖掘方法:聚类、KNN、SVM一定要进行规范化处理。

x_{norm}^{(i)}=\frac{x^{(i)}-x_{min}}{x_{max}-x_{min}}

通过最大、最小比例的调整实现归一化是一种常用的技术,这对有界区间值的问题很有用。标准化对于许多机器学习算法来说更为实用,特别是梯度下降等优化算法。

标准化的过程为:

x_{std}^{(i)}=\frac{^{x(i)-u_{x}}}{\sigma _{x}}

b 离散化

数据离散化是指将连续的数据进行分段,使其成为一段段离散化的区间。分段的原则有基于等距离、等频率或优化的方法。数据离散化的原因有以下几点:

离散化原因

①模型需要;

②离散化的特征相对于连续型特征更容易理解;

③可以有效地克服数据中隐藏的缺陷,使模型结果更加稳定。

离散化方法

等频法

等宽法

聚类法

c 稀疏化

稀疏化处理既有利于模型快速收敛,又能提升模型的抗噪能力

(3)数据集成

a 实体识别问题

数据库和数据仓库有元数据——关于数据的数据,这种元数据可以帮助避免模式集成中的错误。

b 冗余问题

用相关性检测冗余:数值型变量可以计算相关系数矩阵,标称型变量可计算卡方检验。

c 数据值的冲突和处理

不同数据源在统一合并时,保持规范化,去重。

(4)数据规约

数据规约技术可以用来得到数据集的规约表示,它小得多,但仍然接近地保持原数据的完整性。这样在规约后的数据集上挖掘将更有效,并产生相同(或几乎相同)分析结果。

a 维度规约

用于数据分析的数据可能包含数以百计的属性,其中大部分属性与挖掘任务不相关,是元余的。维度规约通过删除不相关的属性来减少数据量,并保证信息的损失最小。

属性子集选择:目标是找出最小属性集,使得数据类的概率分布尽可能地接近使用所有属性的原分布。在压缩的属性集上挖掘还有其他的优点:它减少了出现在发现模式上的属性的数日,使得模式更易于理解。

逐步向前选择

该过程由空属性集开始,选择原属性集中最好的属性,并将它添加到该集合中。其后的每次迭代将原属性集剩下的属性中的最好的属性添加到该集合中。

逐步向后删除

该过程由整个属性集开始。每步删除尚在属性集中的最坏属性。

向前选择和向后删除的结合

向前选择和向后删除方法可以结合在一起,每步选择一个最好的属性,并在剩余属性中删除一个最坏的属性。

b 维度变换

主成分分析PCA和因子分析FA

PCA 通过空间映射的方式,将当前维度映射到更低的维度,使得每个变量在新空间的方差最大;FA 则是找到当前特征向量的公因子(维度更小),用公因子的线性组合来描述当前的特征向量。

奇异值分解SVD

SVD的降维导致可解释性较低,且计算量比 PCA 大,一般用在稀疏矩阵上降维,例如图片压缩、推荐系统。

聚类

将某一类具有相似性的特征聚到单个变量,从而大大降低维度。

线性组合

将多个变量做线性回归,根据每个变量的表决系数,赋予变量权重,可将该类变量根据权重组合成一个变量。

流行学习

流行学习中的一些复杂的非线性方法,可参考sklearn的LLE Example。


Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐