Skip to content

Commit 7127780

Browse files
committed
更新了机器学习部分的文档
1 parent a1003a7 commit 7127780

File tree

4 files changed

+134
-15
lines changed

4 files changed

+134
-15
lines changed

Day81-90/81.浅谈机器学习.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
人工智能无疑是最近几年热度极高的一个词,从2016年谷歌 DeepMind 团队开发的 AlphaGo 围棋程序战胜人类顶尖棋手,到2017年基于 Transformer 架构的 NLP 模型发布,再到2023年 OpenAI 推出基于 GPT-4 的 ChatGPT 以及人工智能在医疗、自动驾驶等领域的深度应用,人工智能的热潮到达了自1956年达特茅斯会议以来前所未有的高度,可以说几乎每个人的生活都或多或少的受到了人工智能的影响。人工智能是计算机科学的一个重要分支,涉及计算机模拟智能行为的能力以及机器模仿人类智能行为的能力。研究人工智能的主要目标是开发出能够独立做出决策的系统,从而在医疗、工程、金融、教育、科研、公共服务等诸多领域帮助人类更高效的工作。人工智能的英文是“*artificial intelligence*”,因此通常被简称为 *AI*,人工智能包含了诸多的内容,我们经常说到的机器学习、深度学习、自然语言处理、计算机视觉、强化学习、数据挖掘、专家系统、工业机器人、自动驾驶等都属于人工智能的范畴。狭义的人工智能通常只能执行特定的任务,会聊天的人工智能通常不会开车,会开车的人工智能通常不会下棋;广义的人工智能需要具备通用智能,能够执行任何人类智能可以执行的任务;而更进一步的能够超越人类智能的人工智能,我们称之为超人工智能。
44

5-
本课程我们主要探讨人工智能中的机器学习(Machine Learning)。机器学习是人工智能的一个子领域,关注如何通过数据和算法来使计算机系统从经验中学习并进行预测或决策。简单的说,机器学习是实现人工智能的一种方法,有很多 AI 系统都是通过机器学习技术开发的。有的时候,我们也用数据挖掘(Data Mining)这个词来指代机器学习,所谓的数据挖掘就是从数据中提取有用的信息和知识,分析和解释数据中的模式和趋势,最终达成预测未来趋势和行为的目标。当然,我们在提到这两个词的时候,表达的侧重点还是有所区别,数据挖掘主要关注知识发现,而机器学习侧重于构建和优化预测模型。
5+
本课程我们主要探讨人工智能中的机器学习(Machine Learning)。机器学习是人工智能的一个子领域,关注如何通过数据和算法来使计算机系统从经验中学习并进行预测或决策。简单的说,机器学习是实现人工智能的一种方法,有很多 AI 系统都是通过机器学习技术开发的。在一些特定场景,人们也用数据挖掘(Data Mining)这个词来指代机器学习,所谓的数据挖掘就是从数据中提取有用的信息和知识,分析和解释数据中的模式和趋势,最终达成预测未来趋势和行为的目标。当然,我们在提到这两个词的时候,表达的侧重点还是有所区别,数据挖掘主要关注知识发现,而机器学习侧重于构建和优化预测模型。当下,还有一个非常热门的概念和研究领域叫深度学习(Deep Learning),它是机器学习的一个子领域,特别侧重于使用多层神经网络(深度神经网络)来进行数据处理和学习。深度学习在处理图像、语音和自然语言等复杂数据时表现出色,能够自动学习数据的层次化特征,从而降低人工干预的需求。当然,深度学习模型通常比传统的机器学习模型更复杂,且需要更多的数据和计算资源
66

77
### 人工智能发展史
88

Day81-90/82.k最近邻算法.md

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,39 +12,39 @@ $$
1212

1313
其中, $\small{p \ge 1}$ ,虽然 $\small{p \lt 1}$ 可以计算,但不再严格满足距离的定义,通常不被视为真正的距离。
1414

15-
当 $\small{p = 1}$ 时,闵氏距离退化为**曼哈顿距离**,即
15+
当 $\small{p = 1}$ 时,闵氏距离即**曼哈顿距离**
1616

1717
$$
1818
d(\mathbf{x}, \mathbf{y}) = \sum_{i=1}^{n} \lvert x_{i} - y_{i} \rvert
1919
$$
2020

21-
当 $\small{p = 2}$ 时,闵氏距离退化为**欧几里得距离**,即
21+
当 $\small{p = 2}$ 时,闵氏距离即**欧几里得距离**
2222

2323
$$
2424
d(\mathbf{x}, \mathbf{y}) = \sqrt{\sum_{i=1}^{n}(x_{i} - y_{i})^{2}}
2525
$$
2626

27-
当 $\small{p \to \infty}$ 时,闵氏距离成为**切比雪夫距离**,即
27+
当 $\small{p \to \infty}$ 时,闵氏距离即**切比雪夫距离**
2828

2929
$$
3030
d(\mathbf{x}, \mathbf{y}) = \underset{i}{max}(\lvert x_{i} - y_{i} \rvert)
3131
$$
3232

33-
其他的距离度量方式我们等用到的时候再为大家介绍。在使用k 最近邻算法做分类时,我们的数据集通常都是数值型数据,此时直接使用欧几里得距离是一个不错的选择。
33+
其他的距离度量方式我们等用到的时候再为大家介绍。在使用 k 最近邻算法做分类时,我们的数据集通常都是数值型数据,此时直接使用欧几里得距离是一个不错的选择。
3434

3535
<img src="res/02_distance_measurement.jpeg" style="zoom:38%;">
3636

3737
### 数据集介绍
3838

39-
接下来为大家隆重介绍一下我们后续会使用到的一个重要的数据集——鸢尾花数据集(iris dataset)。鸢尾花数据集是机器学习领域中最著名、最经典的数据集之一,由英国统计学家 *Ronald A. Fisher*于1936年在他的论文*《The Use of Multiple Measurements in Taxonomic Problems》*中首次引入,被广泛用于机器学习算法的入门和实验。
39+
接下来为大家隆重介绍一下我们后续会使用到的一个重要的数据集——鸢尾花数据集(iris dataset)。鸢尾花数据集是机器学习领域中最著名、最经典的数据集之一,由英国统计学家 *Ronald A. Fisher* 于 1936 年在他的论文*《The Use of Multiple Measurements in Taxonomic Problems》*中首次引入,被广泛用于机器学习算法的入门和实验。
4040

4141
<img src="res/02_iris_dataset.png" style="zoom:38%;">
4242

43-
鸢尾花数据集共有150条样本,其中包含3种类型的鸢尾花,分别是山鸢尾(Iris setosa)、多彩鸢尾(Iris versicolor)和为吉尼亚鸢尾(Iris virginica),如上图所示,每种各有50条样本。样本数据包含了4个特征(features)和1个类别标签(class label),4个特征分别是花萼长度(Sepal length)、花萼宽度(Sepal width)、花瓣长度(Petal length)、花瓣宽度(Petal width),都是以厘米为单位的正数,数据集中的类别标签有0、1、2三个值,对应上面提到的三种鸢尾花类型。
43+
鸢尾花数据集共有 150 条样本,其中包含 3 种类型的鸢尾花,分别是山鸢尾(Iris setosa)、多彩鸢尾(Iris versicolor)和为吉尼亚鸢尾(Iris virginica),如上图所示,每种各有50条样本。样本数据包含了 4 个特征(features)和 1 个类别标签(class label),4 个特征分别是花萼长度(Sepal length)、花萼宽度(Sepal width)、花瓣长度(Petal length)、花瓣宽度(Petal width),都是以厘米为单位的正数,数据集中的类别标签有 0、1、2 三个值,对应上面提到的三种鸢尾花类型。
4444

4545
#### 数据集的加载
4646

47-
我们可以通过著名的 Python 机器学习库 scikit-learn 来加载这个数据集,scikit-learn 包含了各种分类、回归、聚类算法,同时还提供了多层感知机、支持向量机、随机森林等模型,覆盖了从数据预处理、特征工程到模型训练、模型评估和参数调优等各项功能,如下图所示。我们推荐大家使用这个库来完成机器学习中的各种操作,scikit-learn 的[官方网站](https://scikit-learn.org/stable/)上面还提供了用户指南、API文档和案例等内容,有兴趣的读者可以自行访问。
47+
我们可以通过著名的 Python 机器学习库 scikit-learn 来加载这个数据集,scikit-learn 包含了各种分类、回归、聚类算法,同时还提供了多层感知机、支持向量机、随机森林等模型,覆盖了从数据预处理、特征工程到模型训练、模型评估和参数调优等各项功能,如下图所示。我们推荐大家使用这个库来完成机器学习中的各种操作,scikit-learn 的[官方网站](https://scikit-learn.org/stable/)上面还提供了用户指南、API 文档和案例等内容,有兴趣的读者可以自行访问。
4848

4949
<img src="res/02_scikit-learn_introduction.png">
5050

@@ -84,7 +84,7 @@ y = iris.target
8484

8585
#### 数据集的划分
8686

87-
通常,我们需要将原始数据划分成训练集和测试集,其中训练集是为了训练模型选择的数据,而测试集则是为了测试模型训练效果保留的数据。对于上面的鸢尾花数据集,我们可以选择80%的数据(120条)作为训练集,保留20%的数据(30条)作为测试集,下面的代码用 NumPy 实现了对数据集的划分。
87+
通常,我们需要将原始数据划分成训练集和测试集,其中训练集是为了训练模型选择的数据,而测试集则是为了测试模型训练效果保留的数据。对于上面的鸢尾花数据集,我们可以选择 80% 的数据(120 条)作为训练集,保留 20% 的数据(30 条)作为测试集,下面的代码用 NumPy 实现了对数据集的划分。
8888

8989
```python
9090
# 将特征和标签堆叠到同一个数组中
@@ -110,7 +110,7 @@ X_train, X_test, y_train, y_test = train_test_split(X, y, train_size=0.8, random
110110
111111
### kNN分类的实现
112112

113-
下面我们先不用 scikit-learn 而是用基础的数据科学库 NumPy 和 SciPy 来实现 kNN 算法,这样做的目的是帮助大家更好的理解算法原理,在此基础上我们再感受 scikit-learn 的强大并明白其中类、函数、参数等为什么要如此设定,相信大家坚持看下去一定能体会到我的良苦用心
113+
下面我们先不用 scikit-learn 而是用基础的数据科学库 NumPy 和 SciPy 来实现 kNN 算法,这样做的目的是帮助大家更好的理解算法原理,在此基础上我们再感受 scikit-learn 的强大并明白其中类、函数、参数等为什么要如此设定。
114114

115115
#### 基于NumPy的实现
116116

@@ -154,7 +154,8 @@ def make_label(X_train, y_train, X_one, k):
154154

155155
```python
156156
def predict_by_knn(X_train, y_train, X_new, k=5):
157-
"""KNN算法
157+
"""
158+
KNN算法
158159
:param X_train: 训练集中的特征
159160
:param y_train: 训练集中的标签
160161
:param X_new: 待预测的样本构成的数组

Day81-90/84.朴素贝叶斯算法.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ $$
3434
这个假设大大简化了计算复杂性,使得我们可以只计算每个特征在给定类别下的概率,而不需要考虑特征之间的相互作用,对应到上面购买飞机延误险的例子,我们可以用下面的方式来计算似然性:
3535

3636
$$
37-
P(起飞机场=双流,到达机场=首都,起飞天气=小雨,降落天气=晴天,执飞航司=川航 \vert 延误) = \\
37+
P(起飞机场=双流,到达机场=首都,起飞天气=小雨,降落天气=晴天,执飞航司=川航 \vert 延误) = \\\\
3838
P(起飞机场=双流 \vert 延误) \times P(到达机场=首都 \vert 延误) \times P(起飞天气=小雨 \vert 延误) \times P(降落天气=晴天 \vert 延误) \times P(执飞航司=川航 \vert 延误)
3939
$$
4040

@@ -282,7 +282,7 @@ array([[1. , 0. , 0. ],
282282
2. **运算开销较小**。预测需要用到的概率在训练阶段都已经准好了,当新数据来了之后,只需要获取对应的概率值并进行简单的运算就能获得预测的结果。
283283
3. **受噪声和无关属性影响小**
284284

285-
当然,由于做了“特征相互独立”这个假设,朴素贝叶斯算法的缺点也相当明显,因为在实际应用中,特征之间很难做到完全独立,尤其是维度很高的数据,如果特征之间的相关性较大,那么分类的效果就会变得很差。为了解决这个问题,在朴素贝叶斯算法的基础上又衍生出了一些新的方法,包括:半朴素贝叶斯(One Dependent Estimator)、AODE(Averaged One Dependent Estimator)、K依赖朴素贝叶斯、朴素贝叶斯网络、高斯混合朴素贝叶斯等,有兴趣的读者可以自行了解。
285+
当然,由于做了“特征相互独立”这个假设,朴素贝叶斯算法的缺点也相当明显,因为在实际应用中,特征之间很难做到完全独立,尤其是维度很高的数据,如果特征之间的相关性较大,那么分类的效果就会变得很差。为了解决这个问题,在朴素贝叶斯算法的基础上又衍生出了一些新的方法,包括:半朴素贝叶斯(One Dependent Estimator)、AODE(Averaged One Dependent Estimator)、K 依赖朴素贝叶斯、朴素贝叶斯网络、高斯混合朴素贝叶斯等,有兴趣的读者可以自行了解。
286286

287287
### 总结
288288

0 commit comments

Comments
 (0)