Skip to content

Commit a60f599

Browse files
committed
修正了部分文档中的笔误
1 parent d06eb65 commit a60f599

5 files changed

+92
-69
lines changed

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,15 @@ k 最近邻算法(kNN)是一种用于分类和回归的非参数统计方法
77
我们可以用距离(distance)来衡量特征空间中两个实例之间的相似度,常用的距离度量包括闵氏距离、马氏距离、余弦距离、编辑距离等。闵氏距离全称闵可夫斯基距离(Minkowski Distance),对于两个 $\small{n}$ 维向量 $\small{\mathbf{x}=(x_{1}, x_{2}, \cdots, x_{n})}$ 和 $\small{\mathbf{y}=(y_{1}, y_{2}, \cdots, y_{n})}$ ,它们之间的距离可以定义为:
88

99
$$
10-
d(\mathbf{x}, \mathbf{y}) = (\sum_{i=1}^{n}{|x_{i} - y_{i}|}^{p})^{\frac{1}{p}}
10+
d(\mathbf{x}, \mathbf{y}) = (\sum_{i=1}^{n}{\vert x_{i} - y_{i} \rvert}^{p})^{\frac{1}{p}}
1111
$$
1212

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

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

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

2121
当 $\small{p = 2}$ 时,闵氏距离退化为**欧几里得距离**,即:
@@ -27,7 +27,7 @@ $$
2727
当 $\small{p \to \infty}$ 时,闵氏距离成为**切比雪夫距离**,即:
2828

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

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

Day81-90/83.决策树和随机森林.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,15 +27,15 @@ $$
2727
很显然,知道的信息越多,随机变量(数据集)的不确定性就越小。这些信息,可以是直接针对我们想了解的随机事件的信息,也可以是和我们关心的随机事件相关的其他事件的信息。在数学上可以严格的证明这些相关的信息也能够降低或消除不确定性,为此我们定义**条件熵**,它表示在给定特征 $\small{A}$ 的条件下,数据集 $\small{D}$ 的不确定性。条件熵的公式如下所示:
2828

2929
$$
30-
H(D|A) = \sum_{v \in A}\frac{|D_{v}|}{|D|}H(D_{v})
30+
H(D \vert A) = \sum_{v \in A}\frac{\lvert D_{v} \rvert}{\lvert D \rvert}H(D_{v})
3131
$$
3232

33-
上面的公式中,我们让 $\small{v}$ 取得特征 $\small{A}$ 所有可能的取值,其中 $\small{D_{v}}$ 代表特征 $\small{A}$ 取值为 $\small{v}$ 的样本子集, $\small{\frac{|D_{v}|}{|D|}}$ 代表权重,即特征取值为 $\small{v}$ 的样本比例。可以证明 $\small{H(D) \ge H(D|A)}$ ,也就是说多了特征 $\small{A}$ 的信息之后,数据集 $\small{D}$ 的不确定性下降了。当然,还要注意等号成立的情况,也就是说增加了特征 $\small{A}$ 的信息,但是 $\small{D}$ 的不确定没有下降,也就是说我们获取的信息与要研究的内容没有关系。
33+
上面的公式中,我们让 $\small{v}$ 取得特征 $\small{A}$ 所有可能的取值,其中 $\small{D_{v}}$ 代表特征 $\small{A}$ 取值为 $\small{v}$ 的样本子集, $\small{\frac{\lvert D_{v} \rvert}{\lvert D \rvert}}$ 代表权重,即特征取值为 $\small{v}$ 的样本比例。可以证明 $\small{H(D) \ge H(D \vert A)}$ ,也就是说多了特征 $\small{A}$ 的信息之后,数据集 $\small{D}$ 的不确定性下降了。当然,还要注意等号成立的情况,也就是说增加了特征 $\small{A}$ 的信息,但是 $\small{D}$ 的不确定没有下降,也就是说我们获取的信息与要研究的内容没有关系。
3434

3535
有了上面的铺垫,接下来我们就可以给出**信息增益**的定义,它是在得到特征 $\small{A}$ 的信息后,数据集 $\small{D}$ 的不确定性减少的程度。换句话说,信息增益是一种描述数据集确定性增加的量,特征的信息增益越大,特征的分类能力就越强,在给定该特征后数据集的确定性就越大。信息增益可以通过下面的数学公式直观的描述:
3636

3737
$$
38-
g(D, A) = E(D) - E(D|A)
38+
g(D, A) = E(D) - E(D \vert A)
3939
$$
4040

4141
计算信息熵和信息增益的函数如下所示:
@@ -104,7 +104,7 @@ $$
104104
R(D, A) = \frac{g(D, A)}{E_{A}(D)}
105105
$$
106106

107-
其中, $\small{E_{A}(D) = -\sum_{i=1}^{n}{\frac{|D_{i}|}{|D|}log_{2}\frac{|D_{i}|}{|D|}}}$ , $\small{n}$ 表示特征 $\small{A}$ 的取值个数,简单的说 $\small{E_{A}(D)}$ 就是特征 $\small{A}$ 的信息熵,而信息增益比就是特征 $\small{A}$ 的信息增益和特征 $\small{A}$ 的信息熵的比值。我们用下面的函数来计算信息增益比,调用该函数可以输出四个特征对应的信息增益比。
107+
其中, $\small{E_{A}(D) = -\sum_{i=1}^{n}{\frac{\lvert D_{i} \rvert}{\lvert D \rvert}log_{2}\frac{\lvert D_{i} \rvert}{\lvert D \rvert}}}$ , $\small{n}$ 表示特征 $\small{A}$ 的取值个数,简单的说 $\small{E_{A}(D)}$ 就是特征 $\small{A}$ 的信息熵,而信息增益比就是特征 $\small{A}$ 的信息增益和特征 $\small{A}$ 的信息熵的比值。我们用下面的函数来计算信息增益比,调用该函数可以输出四个特征对应的信息增益比。
108108

109109
```python
110110
def info_gain_ratio(x, y):
@@ -163,7 +163,7 @@ $$
163163
可以看出,随着数据集纯度越来越高,基尼指数的值越来越小。如果数据集 $\small{D}$ 根据特征 $\small{A}$ 划分为 $\small{k}$ 个部分,那么在给定特征 $\small{A}$ 的前提条件下,数据集的基尼指数可以定义为:
164164

165165
$$
166-
G(D, A) = \sum_{i=1}^{k}\frac{|D_{i}|}{|D|}G(D_{i})
166+
G(D, A) = \sum_{i=1}^{k}\frac{\lvert D_{i} \rvert}{\lvert D \rvert}G(D_{i})
167167
$$
168168

169169
根据上面的公式,我们可以设计出如下所示的计算基尼指数的函数,大家可以对照上面的公式看看是否能够理解下面的代码,或者通过调用下面的函数看看鸢尾花数据集的哪个特征可以对原始数据集或者训练集做出最好的划分。经典决策树算法中的 CART 算法就是基于基尼指数进行特征选择的。

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

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,19 +7,19 @@
77
贝叶斯定理是概率论中的一个重要定理,它描述了如何从主观经验或已知事实出发,通过收集到的样本数据(证据)来更新对事件发生概率的认知(信念)。贝叶斯定理的数学表达式为:
88

99
$$
10-
P(A|B) = \frac{P(B|A)}{P(B)} \cdot P(A)
10+
P(A \vert B) = \frac{P(B \vert A)}{P(B)} \cdot P(A)
1111
$$
1212

13-
其中, $\small{P(A)}$ 是事件 $\small{A}$ 发生的**先验概率**,我们可以理解为已知事实或主观经验(**主观概率**); $\small{P(B|A)}$ 是在事件 $\small{A}$ 发生的条件下事件 $\small{B}$ 发生的 条件概率,通常也称之为**似然性**(likelihood), $\small{P(B)}$ 是事件 $\small{B}$ 发生的(全)概率,这两个概率可以通过我们收集到的样本数据(证据)获得; $\small{P(A|B)}$ 是在事件 $\small{B}$ 发生的条件下事件 $\small{A}$ 发生的条件概率,即收集到样本数据后对事件 $\small{A}$ 发生概率的重新认知,称之为**后验概率**。贝叶斯定理告诉我们一个重要的事实:可以从已知的事实或主观经验出发,通过收集到的证据来更新我们对某个事件发生概率的认知,简单的说就是**可以通过已知的事实和收集的证据来推断出未知的真相**
13+
其中, $\small{P(A)}$ 是事件 $\small{A}$ 发生的**先验概率**,我们可以理解为已知事实或主观经验(**主观概率**); $\small{P(B \vert A)}$ 是在事件 $\small{A}$ 发生的条件下事件 $\small{B}$ 发生的 条件概率,通常也称之为**似然性**(likelihood), $\small{P(B)}$ 是事件 $\small{B}$ 发生的(全)概率,这两个概率可以通过我们收集到的样本数据(证据)获得; $\small{P(A \vert B)}$ 是在事件 $\small{B}$ 发生的条件下事件 $\small{A}$ 发生的条件概率,即收集到样本数据后对事件 $\small{A}$ 发生概率的重新认知,称之为**后验概率**。贝叶斯定理告诉我们一个重要的事实:可以从已知的事实或主观经验出发,通过收集到的证据来更新我们对某个事件发生概率的认知,简单的说就是**可以通过已知的事实和收集的证据来推断出未知的真相**
1414

1515
回到上面李女士购买飞机延误险的例子,假设本次航班是从成都双流国际机场飞往北京首都国际机场,执飞的航空公司是四川航空,起飞地天气为雨天(小雨),温度为8°C,东北风2级,降落地天气为晴天,温度4°C,西北风2级。为了更简单的让大家理解贝叶斯定理,我们对这里的条件稍作简化,只保留天气中的降水信息,暂不考虑温度和风速等其他因素,对应到上面的贝叶斯定理有:
1616

1717
$$
18-
P(延误|起飞机场=双流,到达机场=首都,起飞天气=小雨,降落天气=晴天,执飞航司=川航) = \\
19-
\frac{P(起飞机场=双流,到达机场=首都,起飞天气=小雨,降落天气=晴天,执飞航司=川航|延误)}{P(起飞机场=双流,到达机场=首都,起飞天气=小雨,降落天气=晴天,执飞航司=川航)} \cdot P(延误)
18+
P(延误 \vert 起飞机场=双流,到达机场=首都,起飞天气=小雨,降落天气=晴天,执飞航司=川航) = \\
19+
\frac{P(起飞机场=双流,到达机场=首都,起飞天气=小雨,降落天气=晴天,执飞航司=川航 \vert 延误)}{P(起飞机场=双流,到达机场=首都,起飞天气=小雨,降落天气=晴天,执飞航司=川航)} \cdot P(延误)
2020
$$
2121

22-
上面公式等号左边就是李女士想知道的当前航班延误的概率,等号右边的部分其实就是历史数据和当前信息,计算这个概率的关键在于计算出似然性,即 $\small{P(起飞机场=双流,到达机场=首都,起飞天气=小雨,降落天气=晴天,执飞航司=川航|延误)}$ 到底是多少,那么这个条件概率又该如何计算呢?
22+
上面公式等号左边就是李女士想知道的当前航班延误的概率,等号右边的部分其实就是历史数据和当前信息,计算这个概率的关键在于计算出似然性,即 $\small{P(起飞机场=双流,到达机场=首都,起飞天气=小雨,降落天气=晴天,执飞航司=川航 \vert 延误)}$ 到底是多少,那么这个条件概率又该如何计算呢?
2323

2424
### 朴素贝叶斯
2525

@@ -28,14 +28,14 @@ $$
2828
假设我们有一个特征集合 $\small{X = \{x_1, x_2, \ldots, x_n\}}$ 和一个类别 $\small{C}$ ,朴素贝叶斯算法假设:
2929

3030
$$
31-
P(X|C) = P(x_1|C) \cdot P(x_2|C) \cdot \ldots \cdot P(x_n|C)
31+
P(X \vert C) = P(x_1 \vert C) \cdot P(x_2 \vert C) \cdot \ldots \cdot P(x_n \vert C)
3232
$$
3333

3434
这个假设大大简化了计算复杂性,使得我们可以只计算每个特征在给定类别下的概率,而不需要考虑特征之间的相互作用,对应到上面购买飞机延误险的例子,我们可以用下面的方式来计算似然性:
3535

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

4141
### 算法原理
@@ -55,7 +55,7 @@ $$
5555
2. **计算条件概率**
5656

5757
$$
58-
P(x_{j}|C_{i}) = \frac{n_{i,j}}{n_{i}}
58+
P(x_{j} \vert C_{i}) = \frac{n_{i,j}}{n_{i}}
5959
$$
6060

6161
其中, $\small{n_{i,j}}$ 是在类别 $\small{C_{i}}$ 中,特征 $\small{x_{j}}$ 出现的次数。
@@ -65,13 +65,13 @@ $$
6565
在预测阶段,给定一个待分类样本 $\small{X}$ ,朴素贝叶斯算法通过以下步骤来计算其属于每个类别的后验概率:
6666

6767
$$
68-
P(C_{i}|X) = \frac{P(X|C_{i})}{P(X)} \cdot P(C_{i})
68+
P(C_{i} \vert X) = \frac{P(X \vert C_{i})}{P(X)} \cdot P(C_{i})
6969
$$
7070

7171
上面的公式中, $\small{P(X)}$ 对应到每个类别都是一个常量,可以忽略掉它,再结合独立性假设有:
7272

7373
$$
74-
P(C_{i}|X) \propto P(C_{i}) \cdot P(x_1|C_{i}) \cdot P(x_2|C_{i}) \cdot \ldots \cdot P(x_n|C_{i})
74+
P(C_{i} \vert X) \propto P(C_{i}) \cdot P(x_1 \vert C_{i}) \cdot P(x_2 \vert C_{i}) \cdot \ldots \cdot P(x_n \vert C_{i})
7575
$$
7676

7777
这样,我们可以选择具有最高后验概率的类别作为预测结果。

Day81-90/86.K-Means聚类算法.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,13 +33,13 @@ $$
3333
首先随机选择 $\small{K}$ 个点作为初始质心 $\small{\mu_{1}, \mu_{2}, \cdots, \mu_{K}}$ ,对于每个数据点 $\small{x_{j}}$ ,计算到每个质心的距离,选择距离最近的质心,即:
3434

3535
$$
36-
C_{i} = \lbrace {x_{j} \ | \ {\lVert x_{j} - \mu_{i} \rVert}^{2} \le {\lVert x_{j} - \mu_{k} \rVert}^{2} \ \text{for all} \ k \ne i} \rbrace
36+
C_{i} = \lbrace {x_{j} \ \vert \ {\lVert x_{j} - \mu_{i} \rVert}^{2} \le {\lVert x_{j} - \mu_{k} \rVert}^{2} \ \text{for all} \ k \ne i} \rbrace
3737
$$
3838

3939
更新质心为簇中所有点的均值,即:
4040

4141
$$
42-
\mu_{i} = \frac{1}{|C_{i}|}\sum_{x \in C_{i}} x
42+
\mu_{i} = \frac{1}{\lvert C_{i} \rvert}\sum_{x \in C_{i}} x
4343
$$
4444

4545
重复上面两个动作,直到质心不再变化或变化小于某个阈值,这就确保了算法的收敛性。

0 commit comments

Comments
 (0)