After Width: | Height: | Size: 17 KiB |
After Width: | Height: | Size: 29 KiB |
After Width: | Height: | Size: 46 KiB |
After Width: | Height: | Size: 23 KiB |
After Width: | Height: | Size: 19 KiB |
After Width: | Height: | Size: 9.2 KiB |
@ -1,2 +1,2 @@
|
||||
# 第二章 数据探索
|
||||
# 第二章 认识数据
|
||||
|
||||
|
@ -1,4 +1,5 @@
|
||||
# 3.1:为什么要数据预处理
|
||||
# 3.1 为什么要数据预处理
|
||||
|
||||
数据挖掘其实就是从数据中学习到规律,再将学习到的规律对未知的数据进行分析。数据的质量直接影响到模型学习的好坏,而我们最开始获取的数据其中绝大多数是“有毛病”的,不利于后期进行分析。所以我们在分析前需要进行数据的预处理。
|
||||
|
||||
`sklearn.preprocessing`包提供了几个常用的函数和转换类型,用它们将一个原始的特征向量转化为一个更适于数据分析的表示形式。一般来说,学习算法收益于数据集的标准形式。如果数据中存在异常点,稳健的数据规范或转换是更适合的。
|
@ -1 +1,50 @@
|
||||
# 4.2:k-近邻算法原理
我们已经知道,如何判别一个样本属于哪个类型,主要是看离它最近的几个样本中哪个类型的数量最多,则该样本属于数量最多的类型。这里,存在两个问题:
- 何为最近
- 如果有两个类型的样本数一样且最多,那么最终该样本应该属于哪个类型
### 距离度量
关于何为最近,大家应该自然而然就会想到可以用两个样本之间的距离大小来衡量,我们常用的有两种距离:
- 欧氏距离:欧氏距离是最容易直观理解的距离度量方法,我们小学、初中和高中接触到的两个点在空间中的距离一般都是指欧氏距离。
![欧氏距离](knn4.jpg)
二维平面上欧式距离计算公式:
$$
d_{12} = \sqrt{(x^{(1)}_1-x^{(2)}_1)^2+(x^{(1)}_2-x^{(2)}_2)^2}
$$
`n`维平面上欧氏距离计算公式:
$$
d_{12}=\sqrt{\sum\limits_{i=1}^n(x^{(1)}_i-x^{(2)}_i)^2}
$$
- 曼哈顿距离:顾名思义,在曼哈顿街区要从一个十字路口开车到另一个十字路口,驾驶距离显然不是两点间的直线距离。这个实际驾驶距离就是“曼哈顿距离”。曼哈顿距离也称为“城市街区距离”。
![曼哈顿距离](knn5.jpg)
二维平面上曼哈顿距离计算公式:
$$
d_{12}=|x^{(1)}_1-x^{(2)}_1|+|x^{(1)}_2-x^{(2)}_2|
$$
`n`维平面上曼哈顿计算公式:
$$
d_{12}=\sum\limits_{i=1}^n|x^{(1)}_i-x^{(2)}_i|
$$
### 加权投票
`knn`算法最后决定样本属于哪个类别,其实好比就是在投票,哪个类别票数多,则该样本属于哪个类别。而如果出现票数相同的情况,我们可以给每一票加上一个权重,用来表示每一票的重要性,这样就可以解决票数相同的问题了。很明显,距离越近的样本所投的一票应该越重要,此时我们可以将距离的倒数作为权重赋予每一票。
![](knn7.jpg)
如上图,虽然蓝色正方形与红色三角形数量一样,但是根据加权投票的规则,绿色的圆应该属于蓝色正方形这个类别。
|
||||
# 4.2 k-近邻算法原理
|
||||
|
||||
我们已经知道,如何判别一个样本属于哪个类型,主要是看离它最近的几个样本中哪个类型的数量最多,则该样本属于数量最多的类型。这里,存在两个问题:
|
||||
|
||||
- 何为最近
|
||||
- 如果有两个类型的样本数一样且最多,那么最终该样本应该属于哪个类型
|
||||
|
||||
### 距离度量
|
||||
|
||||
关于何为最近,大家应该自然而然就会想到可以用两个样本之间的距离大小来衡量,我们常用的有两种距离:
|
||||
|
||||
- 欧氏距离:欧氏距离是最容易直观理解的距离度量方法,我们小学、初中和高中接触到的两个点在空间中的距离一般都是指欧氏距离。
|
||||
|
||||
![欧氏距离](knn4.jpg)
|
||||
|
||||
二维平面上欧式距离计算公式:
|
||||
|
||||
$$
|
||||
d_{12} = \sqrt{(x^{(1)}_1-x^{(2)}_1)^2+(x^{(1)}_2-x^{(2)}_2)^2}
|
||||
$$
|
||||
|
||||
`n`维平面上欧氏距离计算公式:
|
||||
|
||||
$$
|
||||
d_{12}=\sqrt{\sum\limits_{i=1}^n(x^{(1)}_i-x^{(2)}_i)^2}
|
||||
$$
|
||||
|
||||
- 曼哈顿距离:顾名思义,在曼哈顿街区要从一个十字路口开车到另一个十字路口,驾驶距离显然不是两点间的直线距离。这个实际驾驶距离就是“曼哈顿距离”。曼哈顿距离也称为“城市街区距离”。
|
||||
|
||||
![曼哈顿距离](knn5.jpg)
|
||||
|
||||
二维平面上曼哈顿距离计算公式:
|
||||
|
||||
$$
|
||||
d_{12}=|x^{(1)}_1-x^{(2)}_1|+|x^{(1)}_2-x^{(2)}_2|
|
||||
$$
|
||||
|
||||
`n`维平面上曼哈顿计算公式:
|
||||
|
||||
$$
|
||||
d_{12}=\sum\limits_{i=1}^n|x^{(1)}_i-x^{(2)}_i|
|
||||
$$
|
||||
|
||||
### 加权投票
|
||||
|
||||
`knn`算法最后决定样本属于哪个类别,其实好比就是在投票,哪个类别票数多,则该样本属于哪个类别。而如果出现票数相同的情况,我们可以给每一票加上一个权重,用来表示每一票的重要性,这样就可以解决票数相同的问题了。很明显,距离越近的样本所投的一票应该越重要,此时我们可以将距离的倒数作为权重赋予每一票。
|
||||
|
||||
![](knn7.jpg)
|
||||
|
||||
如上图,虽然蓝色正方形与红色三角形数量一样,但是根据加权投票的规则,绿色的圆应该属于蓝色正方形这个类别。
|
After Width: | Height: | Size: 49 KiB |
After Width: | Height: | Size: 39 KiB |
After Width: | Height: | Size: 40 KiB |
After Width: | Height: | Size: 68 KiB |
@ -1,2 +1,2 @@
|
||||
# 第八章 Apriori
|
||||
# 第八章 Apriori算法
|
||||
|
||||
|
@ -0,0 +1,40 @@
|
||||
# 8.1 关联规则与Apriori算法
|
||||
|
||||
## 什么是关联规则
|
||||
|
||||
顾名思义,关联规则就是发现数据背后存在的某种规则或者联系。举个例子:通过调研超市顾客购买的东西,可以发现 30% 的顾客会同时购买薯片和可乐,而在购买薯片的顾客中有 80% 的人购买了可乐,这就存在一种隐含的关系:`薯片->可乐`,也就是说购买薯片的顾客会有很大可能购买可乐,因此商场可以将薯片和可乐放在同一个购物区,方便顾客购买。这样一来,很有可能会在无形之中提高超市的销售业绩。
|
||||
|
||||
|
||||
![](1.jpg)
|
||||
|
||||
|
||||
## 怎样挖掘关联规则
|
||||
|
||||
想要从海量数据中挖掘出关联规则是一件比较麻烦的事情,因为主要问题在于,寻找物品的不同组合是一项十分耗时的任务,所需的计算代价很高,蛮力搜索方法并不能解决这个问题,所以需要用更智能的方法在合理的时间范围内找到**频繁项集**。而 Apriori 算法能够帮助我们从**频繁项集**中挖掘出**关联规则**。
|
||||
|
||||
## 频繁项集与关联规则
|
||||
|
||||
刚刚提到了一个新名词:频繁项集,频繁项集表示的是经常出现在一起的物品的集合。而关联规则指的是两个物品之间可能存在很强的某种关系。
|
||||
|
||||
假设现在这样的一份数据:
|
||||
|
||||
|
||||
| 票号 | 商品 |
|
||||
|:-:|:-:|
|
||||
| 233 | 薯片 西瓜 |
|
||||
| 234 | 抹布 可乐 纸巾 电池 |
|
||||
| 235 | 薯片 可乐 纸巾 果汁 |
|
||||
| 236 | 西瓜 薯片 可乐 纸巾 |
|
||||
| 237 | 西瓜 薯片 可乐 果汁 |
|
||||
|
||||
现在想要找到频繁项集,但是频繁应该怎样来定义或者量化呢?通常来说,会根据项集的支持度和可信度来衡量项集是否频繁。
|
||||
|
||||
一个项集的支持度表示的是数据集中包含该项集的记录所占的比例。从上表中可知,`{薯片}`的支持度为 4/5 。`{薯片, 可乐}`的支持度为 3/5 。很明显,支持度这个指标是针对于项集的。
|
||||
|
||||
而可信度是针对关联规则而言的。例如`{可乐}->{纸巾}`的可信度为`支持度({可乐,纸巾})/支持度({可乐})`,即`{可乐}->{纸巾}`的可信度为 0.75 。这个 0.75 意味着对于包含可乐的所有记录,这个关联规则对其中 75% 的记录都适用。
|
||||
|
||||
支持度和可信度是用来量化关联分析是否成功的方法。假设想找到支持度大于 0.8 的所有项集 ,应该如何去做?一个办法是生成一个物品所有可能组合的清单,然后对每一种组合统计它出现的频繁程度,但当物品成千上万时,上述做法非常非常慢。此时就可以使用 Apriori 算法来寻找频繁项集,并从频繁项集中挖掘出关联规则。
|
||||
|
||||
|
||||
|
||||
|
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 5.5 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 7.1 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 6.9 KiB |
After Width: | Height: | Size: 20 KiB |
@ -1,11 +1,12 @@
|
||||
{
|
||||
"plugins": [
|
||||
"fontsettings",
|
||||
"sharing",
|
||||
"lunr",
|
||||
"search",
|
||||
"highlight",
|
||||
"livereload",
|
||||
"katex"
|
||||
]
|
||||
"title":"数据挖掘",
|
||||
"author":"敖凌文",
|
||||
"language":"zh-hans",
|
||||
"pdf":{
|
||||
"toc":true,
|
||||
"pageNumbers":false,
|
||||
"fontSize":16,
|
||||
"paperSize":"a4"
|
||||
},
|
||||
"plugins": ["katex"]
|
||||
}
|