iohannes
Published on 2025-04-11 / 3 Visits

常见数据挖掘算法

1. DBSCAN聚类

原理:DBSCAN是一种基于密度的聚类算法,其核心思想是通过密度来划分簇。算法使用两个参数:ε(邻域半径)和MinPts(邻域内最少点数)。对于每个数据点,算法计算其ε邻域内的点数,如果点数大于或等于MinPts,则该点为核心点。以核心点为中心,逐步扩展其邻域内的点,形成簇。既不是核心点也不是边界点的点被标记为噪声点。
应用领域:广泛应用于地理信息系统(如城市规划、地理数据聚类)、市场细分(如客户群体划分)、图像处理(如图像分割)等领域。
应用示例:在城市规划中,通过对城市中不同区域的人口密度数据进行DBSCAN聚类,可以识别出高密度居住区、商业区和低密度居住区等,帮助规划者合理布局城市功能区域。
求解过程

  1. 数据预处理:将犯罪事件的地理位置坐标提取出来,形成二维数据集。
  2. 参数选择:通过可视化或经验选择合适的ε(邻域半径)和MinPts(邻域内最少点数)。例如,ε=0.01(对应1公里范围),MinPts=5。
  3. 运行DBSCAN算法
    • 对每个数据点,计算其ε邻域内的点数。
    • 如果点数大于或等于MinPts,则该点为核心点,以该点为中心扩展簇。
    • 如果点数小于MinPts,则标记为噪声点。
  4. 结果分析:最终得到多个簇,每个簇代表一个犯罪热点区域。噪声点可能表示孤立的犯罪事件。
    数据:犯罪事件的地理位置坐标(经度和纬度)
    数据示例
点编号  | 经度   | 纬度
1      | 34.05  | -118.25
2      | 34.06  | -118.26
3      | 34.07  | -118.27
4      | 34.08  | -118.28
5      | 34.09  | -118.29
6      | 34.10  | -118.30
7      | 34.11  | -118.31
8      | 34.12  | -118.32
9      | 34.13  | -118.33
10     | 34.14  | -118.34

计算过程

  1. 参数选择
    • ε(邻域半径):0.02(约2公里)
    • MinPts(邻域内最少点数):3
  2. 计算每个点的邻域
    • 计算点1的ε邻域:点2、点3在点1的ε邻域内。
    • 计算点2的ε邻域:点1、点3、点4在点2的ε邻域内。
    • 计算点3的ε邻域:点1、点2、点4、点5在点3的ε邻域内。
    • 以此类推,计算所有点的ε邻域。
  3. 确定核心点、边界点和噪声点
    • 核心点:点2、点3、点4、点5、点6、点7、点8、点9、点10(因为它们的ε邻域内点数≥MinPts)。
    • 边界点:点1(ε邻域内点数<MinPts,但属于某个核心点的邻域)。
    • 噪声点:无(所有点都属于某个簇或边界)。
  4. 构建簇
    • 从点2开始,扩展簇:点2 → 点3 → 点4 → 点5 → 点6 → 点7 → 点8 → 点9 → 点10。
    • 点1属于点2的簇,作为边界点。
  5. 结果
    • 簇1:{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
    • 无噪声点。

2. 降维算法

  • 原理:降维算法旨在将高维数据映射到低维空间,同时保留数据的主要特征。常见的降维算法有PCA(主成分分析)和LDA(线性判别分析)。PCA通过寻找数据的主成分方向,将数据投影到这些方向上,从而实现降维。LDA则通过寻找能够最大化类间距离和最小化类内距离的投影方向,实现降维。
  • 应用领域:在机器学习中,用于优化神经网络的输入数据,提高训练速度和泛化能力;在聚类算法中,通过去除噪声和无关维度,改善聚类效果。
  • 应用示例:在图像识别中,使用PCA对图像数据进行降维,将高维的像素数据映射到低维空间,然后输入到神经网络中进行训练,可以加快网络的训练速度,并提高识别准确率。
    求解过程
  1. 数据预处理:对基因表达矩阵进行标准化处理,使每个基因的表达值均值为0,方差为1。
  2. 计算协方差矩阵:计算基因表达矩阵的协方差矩阵。
  3. 求解特征值和特征向量:对协方差矩阵进行特征分解,得到特征值和特征向量。
  4. 选择主成分:根据特征值的大小选择前k个主成分(例如,选择累积方差贡献率达到85%的主成分)。
  5. 降维:将原始数据投影到主成分方向上,得到降维后的数据。
  6. 应用效果:通过降维后的数据,生物学家可以更清晰地分析样本之间的差异,找出与疾病相关的基因。
    数据示例
样本   | 基因1 | 基因2 | 基因3
1     | 2     | 3     | 4
2     | 5     | 6     | 7
3     | 8     | 9     | 10

计算过程

  1. 数据标准化
    • 基因1:均值 = 5,标准差 = 3.03
    • 基因2:均值 = 6,标准差 = 3.03
    • 基因3:均值 = 7,标准差 = 3.03
    • 标准化后的数据:
样本  | 基因1 | 基因2 | 基因3
1     | -1    | -1    | -1
2     | 0     | 0     | 0
3     | 1     | 1     | 1
  1. 计算协方差矩阵
    Cov=\begin{bmatrix} 1 & 1 & 1 \\ 1 & 1 & 1 \\ 1 & 1 & 1 \end{bmatrix}
  2. 求解特征值和特征向量
    • 特征值:λ1 = 3,λ2 = 0,λ3 = 0
    • 特征向量:v1 = [1, 1, 1],v2 = [-1, 0, 1],v3 = [0, -1, 1]
  3. 选择主成分
    • 选择特征值最大的特征向量v1作为主成分。
  4. 降维
    • 将原始数据投影到主成分方向上:
      降维后的数据=​\begin{bmatrix} -1 \\ 0 \\ 1 \end{bmatrix}

3. 朴素贝叶斯分类

  • 原理:基于贝叶斯定理和特征条件独立假设。假设每个特征之间相互独立,对于给定的新样本x,计算其属于每个类别的概率P(yk|x),并选择概率最大的类别作为预测结果。
  • 应用领域:广泛应用于文本分类(如垃圾邮件检测、新闻分类)、医疗诊断(如疾病预测)等领域。
  • 应用示例:在垃圾邮件检测中,通过分析邮件内容的词汇特征,使用朴素贝叶斯分类器判断邮件是否为垃圾邮件。
    求解过程
  1. 数据预处理:将邮件文本内容进行分词处理,提取词汇特征。
  2. 计算先验概率:计算每个类别(垃圾邮件和非垃圾邮件)的先验概率P(y)。
  3. 计算条件概率:对于每个词汇特征,计算其在每个类别下的条件概率P(x|y)。
  4. 分类:对于新邮件,计算其属于垃圾邮件和非垃圾邮件的后验概率P(y|x),选择概率较大的类别作为预测结果。
  5. 应用效果:通过朴素贝叶斯分类器,公司能够自动过滤掉大部分垃圾邮件,提高了员工的工作效率。
    数据示例
邮件内容          | 标签
"免费领奖"         | 垃圾邮件
"会议通知"         | 非垃圾邮件
"优惠活动"         | 垃圾邮件
"项目报告"         | 非垃圾邮件

计算过程

  1. 数据预处理
    • 分词:将邮件内容分词,得到词汇集合{免费, 领奖, 会议, 通知, 优惠, 活动, 项目, 报告}。
  2. 计算先验概率
    • P(垃圾邮件) = 2/4 = 0.5
    • P(非垃圾邮件) = 2/4 = 0.5
  3. 计算条件概率
    • P(免费|垃圾邮件) = 1/2 = 0.5
    • P(免费|非垃圾邮件) = 0/2 = 0
    • P(领奖|垃圾邮件) = 1/2 = 0.5
    • P(领奖|非垃圾邮件) = 0/2 = 0
    • P(会议|垃圾邮件) = 0/2 = 0
    • P(会议|非垃圾邮件) = 1/2 = 0.5
    • 以此类推,计算所有条件概率。
  4. 分类
    • 对于新邮件“免费优惠”,计算后验概率:
      • P(垃圾邮件|免费, 优惠) = P(免费|垃圾邮件) × P(优惠|垃圾邮件) × P(垃圾邮件) = 0.5 × 0.5 × 0.5 = 0.125
      • P(非垃圾邮件|免费, 优惠) = P(免费|非垃圾邮件) × P(优惠|非垃圾邮件) × P(非垃圾邮件) = 0 × 0.5 × 0.5 = 0
    • 选择概率较大的类别:垃圾邮件。

4. 经典算法CART分析

  • 原理:CART(分类与回归树)是一种决策树算法,通过递归地将数据集划分为两个子集,构建二叉树。对于分类问题,使用基尼不纯度作为分裂标准;对于回归问题,使用均方误差作为分裂标准。
  • 应用领域:在金融风险评估、市场营销决策、医疗诊断等领域有广泛应用。
  • 应用示例:在金融风险评估中,通过分析客户的收入、信用记录等特征,使用CART算法构建决策树,预测客户违约的概率。
    求解过程
  1. 数据预处理:将数据分为训练集和测试集。
  2. 构建决策树
    • 选择基尼不纯度作为分裂标准。
    • 递归地将数据集划分为两个子集,构建二叉树。
    • 对每个节点,选择最优的特征和分裂点,使基尼不纯度最小化。
  3. 剪枝:通过交叉验证等方法对决策树进行剪枝,防止过拟合。
  4. 预测:使用训练好的决策树对新客户进行违约风险预测。
  5. 应用效果:银行能够提前识别高风险客户,采取措施降低违约率。
    数据示例
客户编号 | 年龄 | 收入(万元) | 信用记录 | 违约情况
1        | 25   | 5            | 良好     | 否
2        | 30   | 7            | 良好     | 否
3        | 35   | 10           | 不良     | 是
4        | 40   | 12           | 不良     | 是

计算过程

  1. 数据预处理
    • 将信用记录转换为数值:良好 = 1,不良 = 0。
  2. 构建决策树
    • 计算基尼不纯度:
      • 初始基尼不纯度:Gini = 1 - (0.5² + 0.5²) = 0.5
    • 选择最优分裂特征和分裂点:
      • 年龄:选择分裂点32.5,计算分裂后的基尼不纯度:
        • 左子树(年龄<32.5):Gini = 0.5
        • 右子树(年龄≥32.5):Gini = 0.5
      • 收入:选择分裂点8.5,计算分裂后的基
        尼不纯度: - 左子树(收入<8.5):Gini = 0 - 右子树(收入≥8.5):Gini = 0.5 - 信用记录:选择分裂点0.5,计算分裂后的基尼不纯度: - 左子树(信用记录=良好):Gini = 0 - 右子树(信用记录=不良):Gini = 0
  • 选择信用记录作为分裂特征。
  1. 递归构建决策树
    • 左子树(信用记录=良好):所有样本违约情况为“否”,停止分裂。
    • 右子树(信用记录=不良):所有样本违约情况为“是”,停止分裂。
  2. 结果
    • 决策树:
信用记录 = 良好 -> 预测:不违约
信用记录 = 不良 -> 预测:违约

5. 随机森林集成分类器详解

  • 原理:随机森林是一种集成学习算法,通过构建多个决策树并将它们的预测结果进行投票或平均,提高分类或回归的准确性。在构建每个决策树时,随机选择一部分样本和特征,从而增加模型的多样性。
  • 应用领域:在生物信息学(如基因表达数据分析)、图像识别、金融风险预测等领域有广泛应用。
  • 应用示例:在生物信息学中,通过分析基因表达数据,使用随机森林算法预测疾病的发生风险。
    求解过程
  1. 数据预处理:对图像进行预处理,提取特征(如纹理特征、形状特征等)。
  2. 构建随机森林
    • 随机选择部分样本和特征,构建多个决策树。
    • 对每个决策树,使用基尼不纯度作为分裂标准,递归地构建二叉树。
  3. 集成预测:对于新图像,将特征输入到所有决策树中,通过投票方式确定最终的预测结果。
  4. 应用效果:随机森林能够准确地诊断乳腺癌,辅助医生进行诊断,提高了诊断效率和准确性。
    数据示例
图像编号 | 纹理特征 | 形状特征 | 标签
1        | 0.5      | 0.6      | 正常
2        | 0.7      | 0.8      | 癌症
3        | 0.6      | 0.7      | 癌症
4        | 0.4      | 0.5      | 正常

计算过程

  1. 数据预处理
    • 将数据分为训练集和测试集。
  2. 构建随机森林
    • 随机选择部分样本和特征,构建多个决策树(例如,构建3棵决策树)。
  3. 构建决策树
    • 第1棵决策树:
      • 随机选择样本:图像1、图像2
      • 随机选择特征:纹理特征
      • 选择最优分裂点:0.6
      • 构建决策树:
纹理特征 < 0.6 -> 预测:正常
纹理特征 ≥ 0.6 -> 预测:癌症
-   第2棵决策树:
    -   随机选择样本:图像2、图像3
    -   随机选择特征:形状特征
    -   选择最优分裂点:0.7
    -   构建决策树:
	```
	形状特征 < 0.7 -> 预测:正常
	形状特征 ≥ 0.7 -> 预测:癌症
	 ```      
-   第3棵决策树:
    -   随机选择样本:图像1、图像4
    -   随机选择特征:纹理特征
    -   选择最优分裂点:0.5
    -   构建决策树:
 ```
 纹理特征 < 0.5 -> 预测:正常
 纹理特征 ≥ 0.5 -> 预测:癌症
 ```
  1. 集成预测
    • 对于新图像(纹理特征=0.65,形状特征=0.75):
      • 第1棵决策树预测:癌症
      • 第2棵决策树预测:癌症
      • 第3棵决策树预测:癌症
    • 最终预测:癌症(3票中癌症占多数)。

6. 支持向量机

  • 原理:支持向量机(SVM)是一种基于间隔最大化的分类算法。通过寻找一个超平面,将不同类别的数据点分开,并使得间隔最大。对于非线性可分数据,SVM可以通过核函数将数据映射到高维空间,在高维空间中寻找最优超平面。
  • 应用领域:在图像识别、文本分类、生物医学等领域有广泛应用。
  • 应用示例:在图像识别中,通过提取图像的特征,使用SVM分类器对图像进行分类,如识别手写数字。
    求解过程
  1. 数据预处理:将图像数据进行归一化处理,提取像素值作为特征。
  2. 选择核函数:选择合适的核函数(如RBF核)。
  3. 训练SVM模型
    • 通过优化间隔最大化问题,求解支持向量和最优超平面。
    • 使用训练数据训练SVM模型。
  4. 预测:对于新图像,提取特征后输入到SVM模型中,预测其对应的数字。
  5. 应用效果:SVM能够高精度地识别手写数字,广泛应用于数字识别系统。
    数据示例
图像编号 | 像素1 | 像素2 | ... | 像素784 | 标签
1        | 0.1   | 0.2   | ... | 0.3     | 3
2        | 0.4   | 0.5   | ... | 0.6     | 7

计算过程

  1. 数据预处理

    • 将图像数据归一化到[0, 1]范围。
  2. 选择核函数

    • 使用RBF核函数:K(x,y)=exp(−γ∥x−y∥2),其中γ是一个参数。
  3. 训练SVM模型

    • 优化间隔最大化问题:
      αmin​21​i,j∑​αi​αj​yi​yj​K(xi​,xj​)−i∑​αi​
      约束条件:
      $ 0≤αi​≤C,i∑​αi​yi​=0$
    • 使用拉格朗日乘子法和序列最小优化(SMO)算法求解α
  4. 计算支持向量和最优超平面

    • 支持向量:满足αi​>0的样本点。
    • 最优超平面:f(x)=∑i​αi​yi​K(x,xi​)+b
  5. 预测

    • 对于新图像xnew​
      f(xnew​)=i∑​αi​yi​K(xnew​,xi​)+b
    • 根据f(xnew​)的值判断数字类别。

7. 关联规则挖掘

  • 原理:关联规则挖掘旨在发现数据集中项之间的有趣关系。通过计算项集的支持度和置信度,挖掘出频繁项集和强关联规则。
  • 应用领域:在零售业(如购物篮分析)、医疗数据分析(如药物相互作用分析)、网络安全等领域有广泛应用。
  • 应用示例:在零售业中,通过分析顾客的购物记录,挖掘出关联规则,如“购买面包的顾客
    求解过程
  1. 数据预处理:将购物记录转换为事务数据集。
  2. 计算频繁项集
    • 使用Apriori算法或FP-Growth算法,计算频繁项集。
    • 设置最小支持度阈值(如0.05),筛选出频繁项集。
  3. 生成关联规则
    • 对每个频繁项集,生成关联规则。
    • 设置最小置信度阈值(如0.7),筛选出强关联规则。
      数据示例
事务编号 | 购买商品
1        | {牛奶, 面包, 黄油}
2        | {牛奶, 面包}
3        | {牛奶, 黄油}
4        | {面包, 黄油}
5        | {牛奶, 面包, 黄油, 蜜饯}

计算过程

  1. 计算频繁项集
    • 设置最小支持度阈值:0.4
    • 计算1项集的频繁项集:
      • {牛奶}:支持度 = 4/5 = 0.8
      • {面包}:支持度 = 4/5 = 0.8
      • {黄油}:支持度 = 4/5 = 0.8
      • {蜜饯}:支持度 = 1/5 = 0.2(不频繁)
    • 计算2项集的频繁项集:
      • {牛奶, 面包}:支持度 = 3/5 = 0.6
      • {牛奶, 黄油}:支持度 = 3/5 = 0.6
      • {面包, 黄油}:支持度 = 3/5 = 0.6
    • 计算3项集的频繁项集:
      • {牛奶, 面包, 黄油}:支持度 = 2/5 = 0.4
  2. 生成关联规则
    • 设置最小置信度阈值:0.7
    • 从频繁项集{牛奶, 面包}生成规则:
      • {牛奶} → {面包}:置信度 = 3/4 = 0.75
      • {面包} → {牛奶}:置信度 = 3/4 = 0.75
    • 从频繁项集{牛奶, 黄油}生成规则:
      • {牛奶} → {黄油}:置信度 = 3/4 = 0.75
      • {黄油} → {牛奶}:置信度 = 3/4 = 0.75
    • 从频繁项集{面包, 黄油}生成规则:
      • {面包} → {黄油}:置信度 = 3/4 = 0.75
      • {黄油} → {面包}:置信度 = 3/4 = 0.75
  3. 结果
    • 强关联规则:
      • {牛奶} → {面包}(置信度 = 0.75)
      • {面包} → {牛奶}(置信度 = 0.75)
      • {牛奶} → {黄油}(置信度 = 0.75)
      • {黄油} → {牛奶}(置信度 = 0.75)

{面包} → {黄油}(置信度 = 0.75) - {黄油} → {面包}(置信度 = 0.75)