1. DBSCAN聚类
原理:DBSCAN是一种基于密度的聚类算法,其核心思想是通过密度来划分簇。算法使用两个参数:ε(邻域半径)和MinPts(邻域内最少点数)。对于每个数据点,算法计算其ε邻域内的点数,如果点数大于或等于MinPts,则该点为核心点。以核心点为中心,逐步扩展其邻域内的点,形成簇。既不是核心点也不是边界点的点被标记为噪声点。
应用领域:广泛应用于地理信息系统(如城市规划、地理数据聚类)、市场细分(如客户群体划分)、图像处理(如图像分割)等领域。
应用示例:在城市规划中,通过对城市中不同区域的人口密度数据进行DBSCAN聚类,可以识别出高密度居住区、商业区和低密度居住区等,帮助规划者合理布局城市功能区域。
求解过程:
- 数据预处理:将犯罪事件的地理位置坐标提取出来,形成二维数据集。
- 参数选择:通过可视化或经验选择合适的ε(邻域半径)和MinPts(邻域内最少点数)。例如,ε=0.01(对应1公里范围),MinPts=5。
- 运行DBSCAN算法:
- 对每个数据点,计算其ε邻域内的点数。
- 如果点数大于或等于MinPts,则该点为核心点,以该点为中心扩展簇。
- 如果点数小于MinPts,则标记为噪声点。
- 结果分析:最终得到多个簇,每个簇代表一个犯罪热点区域。噪声点可能表示孤立的犯罪事件。
数据:犯罪事件的地理位置坐标(经度和纬度)
数据示例:
点编号 | 经度 | 纬度
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
计算过程:
- 参数选择:
- ε(邻域半径):0.02(约2公里)
- MinPts(邻域内最少点数):3
- 计算每个点的邻域:
- 计算点1的ε邻域:点2、点3在点1的ε邻域内。
- 计算点2的ε邻域:点1、点3、点4在点2的ε邻域内。
- 计算点3的ε邻域:点1、点2、点4、点5在点3的ε邻域内。
- 以此类推,计算所有点的ε邻域。
- 确定核心点、边界点和噪声点:
- 核心点:点2、点3、点4、点5、点6、点7、点8、点9、点10(因为它们的ε邻域内点数≥MinPts)。
- 边界点:点1(ε邻域内点数<MinPts,但属于某个核心点的邻域)。
- 噪声点:无(所有点都属于某个簇或边界)。
- 构建簇:
- 从点2开始,扩展簇:点2 → 点3 → 点4 → 点5 → 点6 → 点7 → 点8 → 点9 → 点10。
- 点1属于点2的簇,作为边界点。
- 结果:
- 簇1:{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
- 无噪声点。
2. 降维算法
- 原理:降维算法旨在将高维数据映射到低维空间,同时保留数据的主要特征。常见的降维算法有PCA(主成分分析)和LDA(线性判别分析)。PCA通过寻找数据的主成分方向,将数据投影到这些方向上,从而实现降维。LDA则通过寻找能够最大化类间距离和最小化类内距离的投影方向,实现降维。
- 应用领域:在机器学习中,用于优化神经网络的输入数据,提高训练速度和泛化能力;在聚类算法中,通过去除噪声和无关维度,改善聚类效果。
- 应用示例:在图像识别中,使用PCA对图像数据进行降维,将高维的像素数据映射到低维空间,然后输入到神经网络中进行训练,可以加快网络的训练速度,并提高识别准确率。
求解过程:
- 数据预处理:对基因表达矩阵进行标准化处理,使每个基因的表达值均值为0,方差为1。
- 计算协方差矩阵:计算基因表达矩阵的协方差矩阵。
- 求解特征值和特征向量:对协方差矩阵进行特征分解,得到特征值和特征向量。
- 选择主成分:根据特征值的大小选择前k个主成分(例如,选择累积方差贡献率达到85%的主成分)。
- 降维:将原始数据投影到主成分方向上,得到降维后的数据。
- 应用效果:通过降维后的数据,生物学家可以更清晰地分析样本之间的差异,找出与疾病相关的基因。
数据示例:
样本 | 基因1 | 基因2 | 基因3
1 | 2 | 3 | 4
2 | 5 | 6 | 7
3 | 8 | 9 | 10
计算过程:
- 数据标准化:
- 基因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
- 计算协方差矩阵:
Cov=\begin{bmatrix} 1 & 1 & 1 \\ 1 & 1 & 1 \\ 1 & 1 & 1 \end{bmatrix} - 求解特征值和特征向量:
- 特征值:λ1 = 3,λ2 = 0,λ3 = 0
- 特征向量:v1 = [1, 1, 1],v2 = [-1, 0, 1],v3 = [0, -1, 1]
- 选择主成分:
- 选择特征值最大的特征向量v1作为主成分。
- 降维:
- 将原始数据投影到主成分方向上:
降维后的数据=\begin{bmatrix} -1 \\ 0 \\ 1 \end{bmatrix}
- 将原始数据投影到主成分方向上:
3. 朴素贝叶斯分类
- 原理:基于贝叶斯定理和特征条件独立假设。假设每个特征之间相互独立,对于给定的新样本x,计算其属于每个类别的概率P(yk|x),并选择概率最大的类别作为预测结果。
- 应用领域:广泛应用于文本分类(如垃圾邮件检测、新闻分类)、医疗诊断(如疾病预测)等领域。
- 应用示例:在垃圾邮件检测中,通过分析邮件内容的词汇特征,使用朴素贝叶斯分类器判断邮件是否为垃圾邮件。
求解过程:
- 数据预处理:将邮件文本内容进行分词处理,提取词汇特征。
- 计算先验概率:计算每个类别(垃圾邮件和非垃圾邮件)的先验概率P(y)。
- 计算条件概率:对于每个词汇特征,计算其在每个类别下的条件概率P(x|y)。
- 分类:对于新邮件,计算其属于垃圾邮件和非垃圾邮件的后验概率P(y|x),选择概率较大的类别作为预测结果。
- 应用效果:通过朴素贝叶斯分类器,公司能够自动过滤掉大部分垃圾邮件,提高了员工的工作效率。
数据示例:
邮件内容 | 标签
"免费领奖" | 垃圾邮件
"会议通知" | 非垃圾邮件
"优惠活动" | 垃圾邮件
"项目报告" | 非垃圾邮件
计算过程:
- 数据预处理:
- 分词:将邮件内容分词,得到词汇集合{免费, 领奖, 会议, 通知, 优惠, 活动, 项目, 报告}。
- 计算先验概率:
- P(垃圾邮件) = 2/4 = 0.5
- P(非垃圾邮件) = 2/4 = 0.5
- 计算条件概率:
- 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
- 以此类推,计算所有条件概率。
- 分类:
- 对于新邮件“免费优惠”,计算后验概率:
- 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 | 25 | 5 | 良好 | 否
2 | 30 | 7 | 良好 | 否
3 | 35 | 10 | 不良 | 是
4 | 40 | 12 | 不良 | 是
计算过程:
- 数据预处理:
- 将信用记录转换为数值:良好 = 1,不良 = 0。
- 构建决策树:
- 计算基尼不纯度:
- 初始基尼不纯度: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
- 年龄:选择分裂点32.5,计算分裂后的基尼不纯度:
- 计算基尼不纯度:
- 选择信用记录作为分裂特征。
- 递归构建决策树:
- 左子树(信用记录=良好):所有样本违约情况为“否”,停止分裂。
- 右子树(信用记录=不良):所有样本违约情况为“是”,停止分裂。
- 结果:
- 决策树:
信用记录 = 良好 -> 预测:不违约
信用记录 = 不良 -> 预测:违约
5. 随机森林集成分类器详解
- 原理:随机森林是一种集成学习算法,通过构建多个决策树并将它们的预测结果进行投票或平均,提高分类或回归的准确性。在构建每个决策树时,随机选择一部分样本和特征,从而增加模型的多样性。
- 应用领域:在生物信息学(如基因表达数据分析)、图像识别、金融风险预测等领域有广泛应用。
- 应用示例:在生物信息学中,通过分析基因表达数据,使用随机森林算法预测疾病的发生风险。
求解过程:
- 数据预处理:对图像进行预处理,提取特征(如纹理特征、形状特征等)。
- 构建随机森林:
- 随机选择部分样本和特征,构建多个决策树。
- 对每个决策树,使用基尼不纯度作为分裂标准,递归地构建二叉树。
- 集成预测:对于新图像,将特征输入到所有决策树中,通过投票方式确定最终的预测结果。
- 应用效果:随机森林能够准确地诊断乳腺癌,辅助医生进行诊断,提高了诊断效率和准确性。
数据示例:
图像编号 | 纹理特征 | 形状特征 | 标签
1 | 0.5 | 0.6 | 正常
2 | 0.7 | 0.8 | 癌症
3 | 0.6 | 0.7 | 癌症
4 | 0.4 | 0.5 | 正常
计算过程:
- 数据预处理:
- 将数据分为训练集和测试集。
- 构建随机森林:
- 随机选择部分样本和特征,构建多个决策树(例如,构建3棵决策树)。
- 构建决策树:
- 第1棵决策树:
- 随机选择样本:图像1、图像2
- 随机选择特征:纹理特征
- 选择最优分裂点:0.6
- 构建决策树:
- 第1棵决策树:
纹理特征 < 0.6 -> 预测:正常
纹理特征 ≥ 0.6 -> 预测:癌症
- 第2棵决策树:
- 随机选择样本:图像2、图像3
- 随机选择特征:形状特征
- 选择最优分裂点:0.7
- 构建决策树:
```
形状特征 < 0.7 -> 预测:正常
形状特征 ≥ 0.7 -> 预测:癌症
```
- 第3棵决策树:
- 随机选择样本:图像1、图像4
- 随机选择特征:纹理特征
- 选择最优分裂点:0.5
- 构建决策树:
```
纹理特征 < 0.5 -> 预测:正常
纹理特征 ≥ 0.5 -> 预测:癌症
```
- 集成预测:
- 对于新图像(纹理特征=0.65,形状特征=0.75):
- 第1棵决策树预测:癌症
- 第2棵决策树预测:癌症
- 第3棵决策树预测:癌症
- 最终预测:癌症(3票中癌症占多数)。
- 对于新图像(纹理特征=0.65,形状特征=0.75):
6. 支持向量机
- 原理:支持向量机(SVM)是一种基于间隔最大化的分类算法。通过寻找一个超平面,将不同类别的数据点分开,并使得间隔最大。对于非线性可分数据,SVM可以通过核函数将数据映射到高维空间,在高维空间中寻找最优超平面。
- 应用领域:在图像识别、文本分类、生物医学等领域有广泛应用。
- 应用示例:在图像识别中,通过提取图像的特征,使用SVM分类器对图像进行分类,如识别手写数字。
求解过程:
- 数据预处理:将图像数据进行归一化处理,提取像素值作为特征。
- 选择核函数:选择合适的核函数(如RBF核)。
- 训练SVM模型:
- 通过优化间隔最大化问题,求解支持向量和最优超平面。
- 使用训练数据训练SVM模型。
- 预测:对于新图像,提取特征后输入到SVM模型中,预测其对应的数字。
- 应用效果:SVM能够高精度地识别手写数字,广泛应用于数字识别系统。
数据示例:
图像编号 | 像素1 | 像素2 | ... | 像素784 | 标签
1 | 0.1 | 0.2 | ... | 0.3 | 3
2 | 0.4 | 0.5 | ... | 0.6 | 7
计算过程:
-
数据预处理:
- 将图像数据归一化到[0, 1]范围。
-
选择核函数:
- 使用RBF核函数:K(x,y)=exp(−γ∥x−y∥2),其中γ是一个参数。
-
训练SVM模型:
- 优化间隔最大化问题:
αmin21i,j∑αiαjyiyjK(xi,xj)−i∑αi
约束条件:
$ 0≤αi≤C,i∑αiyi=0$ - 使用拉格朗日乘子法和序列最小优化(SMO)算法求解α。
- 优化间隔最大化问题:
-
计算支持向量和最优超平面:
- 支持向量:满足αi>0的样本点。
- 最优超平面:f(x)=∑iαiyiK(x,xi)+b
-
预测:
- 对于新图像xnew:
f(xnew)=i∑αiyiK(xnew,xi)+b - 根据f(xnew)的值判断数字类别。
- 对于新图像xnew:
7. 关联规则挖掘
- 原理:关联规则挖掘旨在发现数据集中项之间的有趣关系。通过计算项集的支持度和置信度,挖掘出频繁项集和强关联规则。
- 应用领域:在零售业(如购物篮分析)、医疗数据分析(如药物相互作用分析)、网络安全等领域有广泛应用。
- 应用示例:在零售业中,通过分析顾客的购物记录,挖掘出关联规则,如“购买面包的顾客
求解过程:
- 数据预处理:将购物记录转换为事务数据集。
- 计算频繁项集:
- 使用Apriori算法或FP-Growth算法,计算频繁项集。
- 设置最小支持度阈值(如0.05),筛选出频繁项集。
- 生成关联规则:
- 对每个频繁项集,生成关联规则。
- 设置最小置信度阈值(如0.7),筛选出强关联规则。
数据示例:
事务编号 | 购买商品
1 | {牛奶, 面包, 黄油}
2 | {牛奶, 面包}
3 | {牛奶, 黄油}
4 | {面包, 黄油}
5 | {牛奶, 面包, 黄油, 蜜饯}
计算过程:
- 计算频繁项集:
- 设置最小支持度阈值: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
- 生成关联规则:
- 设置最小置信度阈值: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
- 结果:
- 强关联规则:
- {牛奶} → {面包}(置信度 = 0.75)
- {面包} → {牛奶}(置信度 = 0.75)
- {牛奶} → {黄油}(置信度 = 0.75)
- {黄油} → {牛奶}(置信度 = 0.75)
- 强关联规则:
{面包} → {黄油}(置信度 = 0.75) - {黄油} → {面包}(置信度 = 0.75)