> ## Documentation Index
> Fetch the complete documentation index at: https://base.bangwu.me/llms.txt
> Use this file to discover all available pages before exploring further.

# Data mining

> Course notes on data mining covering CRISP-DM workflow, Apriori association rules, K-Means clustering, decision tree classification, and TF-IDF text mining.

# 数据挖掘

以下是根据课件所示的总结，推荐看完课件再看总结。大体上还是以理解为主，自行斟酌。

## 1.数据挖掘概述

数据挖掘概述、数据准备与数据相似度计算、关联模式挖掘、聚类分析、数据分类技术、文本挖掘技术。

### 1.1 数据挖掘的定义与数据挖掘过程

背景：新时代，数据越来越多——数据是数据时代生产力的革命性要素。【技术进步的推动：存储器的飞速发展与处理器的发展】，但是出现的问题就是淹没在数据中，不能定制合适的决策。随着各个领域的发展，数据挖掘渐渐形成。

`数据挖掘`(Data Mining)的定义：从大量的、不完全的、有噪声的、模糊的、随机的实际应用数据中，提取隐含在其中的、人们事先不知道的、但又是潜在有用的信息和知识的过程。

* 数据源必须是真实的、大量的、含有噪声的
* 发现的是用户感兴趣的知识
* 发现的知识要可接受、可理解、可运用
* 并不要求发现放之四海皆准的知识，仅支持特定的问题的发现

数据挖掘标准流程：`CRISP-DM`

```python theme={"theme":{"light":"github-light","dark":"github-dark"}}
商业理解->数据理解->数据准备(最花费时间)->建立模型->模型评估->模型部署
```

### 1.2 基本数据类型

非依赖型数据和依赖型数据

1. `非依赖型数据`：二维表，行是一组记录，列是一组字段
2. `依赖型数据`：具有时间、空间或结构上的依赖关系，改变次序、位置有影响。如时间序列数据、图数据等

### 1.3 数据挖掘的分类与常用技术

有监督又被称为“有老师的学习”，无监督被称为“没有老师的学习”。还有一个强化学习。

![bangwu\_20240622142834](https://cdn.bangwu.top/img/bangwu_20240622142834.webp)

常用技术有：`分类技术`、`回归分析`、`关联规则`、`聚类分析`、`偏差检测`。

数据分析是“后见之明”，数据挖掘是“先见之明”

## 2.数据准备与相似度计算

### 2.1 数据的详细理解

数据->信息->知识->智慧【不是，怎么又是这个。。。。】

`数据`是数据对象和它们属性的集合。

`属性值`是赋给一个属性的**数字的**或**字符的**值。

### 2.2 特征提取与类型转换

`特征提取`是将低级特征类型转换为高级特征类型的过程。【说白了就是说白了】

类型转换可以用到的方法有：离散化、二元化、特征词量化等

### 2.3 数据清洗

数据预处理的功能之一，就是发现并纠正数据文件中可识别错误的步骤，包括对噪声、缺失值、异常值的处理。

### 2.4 相似度与距离

`相似性度量` (Similarity Measurement) 用于衡量两个元素之间的相似性程度或两者之间的距离 (Distance)。`距离度量`的是指元素之间的不相似性 (Dissimilarity)。

1. 简单属性之间的相似性或相异性
   ![bangwu\_20240622150002](https://cdn.bangwu.top/img/bangwu_20240622150002.webp)

2. 数据对象之间的相异性（距离度量）

   ​ 注：以下的 x, y 不是点值，而是向量 x(x1, x2, x3)

   * 欧氏距离

     $$
     d \left(x, y\right) = \sqrt{\sum_{i=1}^{n} \left(x_i - y_i\right)^2}
     $$

* 闵氏距离（闵可夫斯基距离）
  $$
  d \left(x, y\right) = \left(\sum_{i=1}^{n} |x_i - y_i|^p\right)^{\frac{1}{p}}
  $$
  p = 1 时，称为曼哈顿距离
  $$
  d \left(x, y\right) = \sum_{i=1}^{n} |x_i - y_i|
  $$
  p = 2 时，就是欧氏距离 ⬆️
  例如：(7, 2)和(4, 6)两个点的距离

## 3、4.关联模式挖掘

目标是确定数据项之间的关联性，常见的如商品之间的关联。

`项集`：项的集合，K 项集就是恰好包含 k 个项的项集

`支持度计数`：σ，指这个项集在总事务中出现的次数

`支持度`：就是支持度计数除以总事务数

$$
% 支持度的公式
\text{Support}(A) = \frac{\text{事务中包含项集 } A \text{ 的数量}}{\text{总事务数量}}
$$

`频繁项集`：一个项集的支持度大于等于预先设定的最小支持度

`置信度`：T 事务中已经包含 X 的情况下，包含 Y 的百分比，即条件概率。

$$
% 置信度的公式
\text{Confidence}(A \rightarrow B) = \frac{\text{Support}(A \cap B)}{\text{Support}(A)}
$$

`提升度`：指 A 项和 B 项一同出现的频率，但同时要考虑这两项各自出现的频率。

$$
% 提升度的公式
\text{Lift}(A \rightarrow B) = \frac{\text{Support}(A \cap B)}{\text{Support}(A) \times \text{Support}(B)}
$$

频繁项集的生成

* `Apriori`算法：先找频繁一项集，再找二项，以此类推。
* `FP-growth`FP 增长算法：两次扫描数据库建立一个 FP 树，避免了产生大量的候选项集。效率更高

关联规则的评估：看提升度，支持度和置信度仅用于度量

![bangwu\_20240622154249](https://cdn.bangwu.top/img/bangwu_20240622154249.webp)

## 5.聚类分析

### 5.1 聚类分析概述

“物以类聚，人以群分”，`聚类`就是在预先不知道欲划分类的情况下，根据信息
相似度原则进行信息集聚的一种方法。主要用到的是相异性的距离度量。

常用的聚类方法：基于划分的 K-means 聚类，层次聚类，DBSACN 等

### 5.2K-means 聚类

K-means 是基于划分的聚类，将样本划分成 k 个不重合的类（cluster）每个簇关联一个质心，每个点都分配给离质心最近的簇，K 的数量必须事先人工指定。![动图](https://cdn.bangwu.top/img/v2-169818722555497ae9d461a7352fabd1_b.webp)

由于初始质心的选择对结果有影响，可以有以下解决方案：

1. 多次运行聚类
2. 选择多于 K 的初始质心，然后在其中选择二
3. 二分 K-means 聚类（不易受到初始化问题的影响）

**K-means 的评估**：

$$
% SSE 公式
\text{SSE} = \sum_{i=1}^{k} \sum_{x \in C_i} \| x - \mu_i \|^2
$$

其中: k 是簇的数量 C\_i 是第 i 个簇 x 是簇 C\_i 中的一个数据点 u\_i 是簇 C\_i 的中心 | x - u\_i |^2 表示数据点 x 与簇中心 u\_i 之间的欧氏距离的平方

**SSE 值越小，表示聚类效果越好**，减少 SSE 的一个简单方法是增加 K，即簇的数量

二分 K-means 算法步骤：【**理解**】

1. **初始化**：将所有数据点作为一个簇。

2. 迭代过程：

   * 对当前簇进行二分（即将簇分成两个子簇）。
   * 使用传统的 K-means 算法对这两个子簇进行优化。
   * 选择使得总平方误差和（SSE）最小的二分结果。

3. **重复**：继续对簇进行二分，直到达到预定的簇数量 𝑘*k* 为止。

### K-Means 算法里,当邻近度函数采用(？ )的时候,合适的质心是簇中各点的中位数。

1. 曼哈顿距离。质心：中位数。目标函数：最小化对象到其簇质心的距离和
2. 平方欧几里德距离。质心：均值。目标函数：最小化对象到其簇质心的距离的平方 和
3. 余弦。质心：均值。最大化对象与其质心的余弦相似度和
4. Bregman 散度。质心：均值。目标函数：最 小化对象到其簇质心的 Bregma n 散度和

### 5.3 层次聚类

`层次聚类`(Hierarchical Clustering)是聚类算法的一种，通过计算不同类别数据点间的相似度来创建一棵有层次的嵌套聚类树。

论数据集应该聚类成多少个簇，通常是在讨论我们在什么尺度上关注这个数据集。层次聚类算法相比划分聚类算法的优点之一是可以在不同的尺度上（层次）展示数据集的聚类情况。层次聚类使用欧式距离来计算不同类别数据点间的距离（相似度）。

![img](https://cdn.bangwu.top/img/1180120-20180721004137992-1540374438.png)

基于层次的聚类算法（Hierarchical Clustering）可以是凝聚的（Agglomerative）或者分裂的（Divisive），取决于层次的划分是“自底向上”还是“自顶向下”。

凝聚的层次聚类计算两个组合数据点间距离的方法有三种，Min-单链或最短边、Max-全链或最长边、Average-组平均或平均边。方法的优劣自行斟酌。

层次聚类的问题：

* 算法复杂度较高
* 一旦决定合并两个簇，就不能撤销
* 没有可以直接最小化的目标函数
* 对噪声和异常值的**敏感**难以处理大小不同的簇和凸形状的簇

### 5.4 密度聚类

DBSCAN 作为一种典型的密度聚类方法，它的聚类原理当然是和密度有关。简单来讲，DBSCAN 一般假定样本的类别可以通过样本分布的紧密程度决定，于是先发现密度较高的点，然后把相近的高密度点逐步连成一片，进而找到不同的类别（簇）。

![](https://cdn.bangwu.top/img/document-uid214893labid6102timestamp1531806243633.png)

如上图所示，假设我们指定密度阈值 `MinPts = 4`，那么图中的红色点就是核心点，因为它们的 𝜀-邻域里包含最少 4 个点（包括自己），由于它们之间相互可达，它们形成了一个聚类。图中蓝色的点不是核心点，但它们在核心点的圆圈内，所以也属于同一个聚类，也就是边界点。而紫色点既不是核心点，又不是边界点，即被称之为异常点（噪声点）。

### 5.5 聚类算法评估

有效性度量：

* 外部指标：有监督的，提供标签（一般是人工标记）
* 内部标记：无监督的，SSE，凝聚度(WSS)和分离度(BSS)，轮廓系数
* 相对指标：用于比较两个不同的聚类过程或簇，综合内外部指标

$$
% 凝聚度 (WSS) 公式
\text{WSS} = \sum_{i=1}^{k} \sum_{x \in C_i} \| x - \mu_i \|^2
$$

$$
% 分离度 (BSS) 公式
\text{BSS} = \sum_{i=1}^{k} n_i \| \mu_i - \mu \|^2
$$

## 6.分类算法

### 6.1 分类算法概述

分类是在一群已经知道类别标号的样本中，训练一种分类器，让其能够对某种未知的样本进行分类。分类算法属于一种有监督的学习。分类算法的分类过程就是建立一种分类模型来描述预定的数据集或概念集，通过分析由属性描述的数据库元组来构造模型。分类的目的就是使用分类对新的数据集进行划分，其主要涉及分类规则的准确性、过拟合、矛盾划分的取舍等。

常用的分类算法包括：NBC（Naive Bayesian Classifier，朴素贝叶斯分类）算法、LR（Logistic Regress，逻辑回归）算法、ID3（Iterative Dichotomiser 3 迭代二叉树 3 代）决策树算法、C4.5 决策树算法、C5.0 决策树算法、SVM（Support Vector Machine，支持向量机）算法、KNN(K-Nearest Neighbor，K 最近邻近)算法、ANN（Artificial Neural Network，人工神经网络）算法等

### 6.2 分类算法评估

推荐阅读：[https://www.cnblogs.com/guoyaohua/p/classification-metrics.html](https://www.cnblogs.com/guoyaohua/p/classification-metrics.html)

### 6.3 朴素贝叶斯分类器

分类原理：利用贝叶斯公式根据某特征的先验概率计算出其后验概率，然后选择具有最大后验概率的类作为该特征所属的类。

之所以称之为”朴素”，是因为贝叶斯分类只做最原始、最简单的假设：所有的特征之间是统计独立的。

朴素贝叶斯分类器的特点：

* 对孤立噪声点、不相关属性的鲁棒性，可以忽略缺失值
* 条件独立性假设问题，采用贝叶斯网络

### 6.4 决策树

`决策树`分为`分类决策树`和`回归决策树`。有两大核心问题：

1. 决策树的生长：决策树的分枝准则，有 C5.0、CHAID、QUEST、CART。【根部节点，中间节点，停止分支】
2. 决策树的剪枝：预修剪、后修剪

`ID3算法`：计算信息增益/信息获利

`C4.5算法`：是`ID3`的修订版，采用 GainRatio 来加以改进方法，选取有最大 GainRatio 的分割变量作为准则，避免 ID3 算法过度配适的问题。

`C5.0算法`：是 C4.5 算法的修订版 ，适用在处理大数据集，采用 Boosting 方式提高模型准确率，又称为 Boosting Trees，在软件上的计算速度比较快，占用的内存资源较少。

`CART算法`：这种算法即可以用于分类，也可以用于回归问题。CART 算法使用了基尼系数取代了信息熵模型。CART 与 C4.5/C5.0 算法的最大相异之处是其在每一个节点上都是采用二分法，也就是一次只能够有两个子节点，C4.5/5.0 则在每一个节点上可以产生不同数量的分枝。

各个算法的计算可能会考到，请自行查阅。

### 6.5 神经网络

人工神经网络——`ANN`：

![bangwu\_20240622182337](https://cdn.bangwu.top/img/bangwu_20240622182337.webp)

1. ANN 是由人工神经元连接的多层网络结构。一般组成：输入层、隐藏层、输出层。
2. 网络是由一些列的结点和连接节点的线组成。
3. 节点是运算单元，接受输入、处理输入、进行输出。
4. 连线代表了节点间信息流动，可以单向、可以双向。

神经元模型**五要素**：权重、激活函数、前向传播、[反向传播](https://blog.csdn.net/weixin_37641832/article/details/104917847)、训练。

对 ANN 权重的理解：

1. 一个连接总是带有一个权重值
2. 权重初始化问题
3. 如果某个连接重要，那么它将具有比那些不重要的连接更大的权重值
4. ANN 的学习或训练就是基于输入和期望的输出来改变连接的权重
5. ANN 中输入数据与输出数据不能改变，能改变的只有权重

训练过程就是反向传播误差，调整权重，让误差越来越小。

> 看到这里可以去浏览一遍[要点回顾](https://alist.bangwu.top/%E9%98%BF%E9%87%8C%E4%BA%91-%E6%A3%92%E6%97%A0/%E8%AF%BE%E4%BB%B6/%E6%95%B0%E6%8D%AE%E6%8C%96%E6%8E%98/%E7%AC%AC7%E8%AE%B2%20%E6%A1%88%E4%BE%8B%E5%88%86%E6%9E%90%E4%B8%8E%E5%88%86%E7%BB%84%E9%A1%B9%E7%9B%AE%E8%AE%A8%E8%AE%BA.pdf)

## 7.文本挖掘

### 7.1 文本挖掘概述

`文本挖掘`是抽取有效、新颖、有用、可理解的、散布在文本文件中的有价值知识，并且利用这些知识更好地组织信息的过程。

### 7.2 文本特征提取

把从文本中抽取出的特征词进行量化来表示文本信息，转换成计算机可以识别处理的信息。

目前大多数中文文本挖掘系统都采用词作为特征项，作为特征项的词称作`特征词`。

通过构造评估函数，对特征集合中的每个特征进行评估，并对每个特征打分，这样每个词语都获得一个评估值，又称为`权值`。

**决定文本特征提取效果的主要因素是评估函数的质量**，`TF-IDF`就是一个评估函数

分词->词性标注

### 7.3 文本表示技术

![bangwu\_20240622184908](https://cdn.bangwu.top/img/bangwu_20240622184908.webp)

`文本表示`就是将文本转化成数学上的向量表示。如何把字符串转化为向量，就是文本表示的核心问题。【one-hot，word2vec】

### 7.4 文本相似度计算

相似度是相关度的一种特殊情况,包括上下位关系和同义关系。由此得出, 文本相似度越高, 则相关度越大, 但是相关度越大并不能说明相似度高。

文本相似度计算：基于字符串、基于语料库、基于知识组织、其他方法。

### 7.5 文本分类

文本分类是指根据预先定义的主题类别，按照一定的规则给文档集合中未知类别的文本自动确定一个类别。

![bangwu\_20240622185558](https://cdn.bangwu.top/img/bangwu_20240622185558.webp)

### 7.6 情感分析

情感分析是对文本进行上下文挖掘，识别和提取文本中的主观信息（积极、消极和中性），帮助企业了解其品牌、产品或服务的用户情感。

![bangwu\_20240622185720](https://cdn.bangwu.top/img/bangwu_20240622185720.webp)

### 7.7 主题模型

**主题模型**（Topic Model）在机器学习和自然语言处理等领域是用来在一系列文档中发现抽象主题的一种统计模型。直观来讲，如果一篇文章有一个中心思想，那么一些特定词语会更频繁的出现。比方说，如果一篇文章是在讲狗的，那“狗”和“骨头”等词出现的频率会高些。如果一篇文章是在讲猫的，那“猫”和“鱼”等词出现的频率会高些。而有些词例如“这个”、“和”大概在两篇文章中出现的频率会大致相等。但真实的情况是，一篇文章通常包含多种主题，而且每个主题所占比例各不相同。因此，如果一篇文章 10%和猫有关，90%和狗有关，那么和狗相关的关键字出现的次数大概会是和猫相关的关键字出现次数的 9 倍。一个主题模型试图用数学框架来体现文档的这种特点。主题模型自动分析每个文档，统计文档内的词语，根据统计的信息来断定当前文档含有哪些主题，以及每个主题所占的比例各为多少。
