Lec 7机器学习算法——降维、PCA、聚类与分类
Lec 7 机器学习算法——降维、PCA、聚类与分类(Machine Learning Algorithms)
对应 MIT CTL.SC4x · Supply Chain Technology and Systems · 第 7 讲
核心参考:SC4x Key Concept Document (Summer 2019) & MITx MicroMasters SCM 课程大纲
TL;DR
- 主成分分析(PCA)通过正交变换实现高维特征降维,化解维度灾难并消除多重共线性。
- K-Means 聚类无监督识别客户群体与物料分类,肘部法则与轮廓系数指导最优簇数选取。
- 决策树与随机森林(Random Forest)集成算法在物流履约时效预测与供应商违约风险评估中表现卓越。
量纲归一化是距离度量的生命线
在将 K-Means 聚类应用于物料分类(如同时输入 SKU 年出货金额数百万元与出货频次几十次)时,若不进行标准化,欧氏距离计算将被数值庞大的金额特征完全主导,频次特征几乎彻底失效。在调用任何基于距离度量的聚类与降维算法前,必须先执行 Z-Score 标准化(StandardScaler),避免伪相关的失真聚类结果。
1. 本讲的定位
Lec6 建立了机器学习的整体分类和"模型好坏怎么判断"的标准;本讲深入到具体算法:每种模型有不同的性质,各自适合不同类型的任务。核心内容包括:如何在不损失信息的前提下减少特征数量(降维/PCA)、如何在没有标签时把记录分组(聚类)、如何做分类并比较不同分类器的准确性(含敏感性与特异性)。
2. 降维(Dimensionality Reduction)
降维是指减少分析中包含的特征数量这一大类技术的统称,常用于特征很多的分析场景。
- 试图随意或凭直觉手动减少维度,往往效果很差;
- 分析结果需要被人理解,因此应当是可处理、可解读的(tractable);
- 纳入的特征数量越多,所需的样本量也越大;
- 不应该仅凭直觉决定纳入或剔除某个特征——应该使用专门的降维技术,如主成分分析(PCA);
- 汇总统计量(summary statistics)本身也是一种降维手段。
3. 主成分分析(PCA, Principal Component Analysis)
PCA 是一种数学方法,用于为分析或可视化目的降低维度。它利用变量之间的相关性,把原始数据变换为新的维度/特征,使得前几个维度就包含了数据集中绝大部分的信息(方差)。PCA 会基于数据的分布,判断哪些变量信息量最大,并计算出数据集内现有变量的、信息量最高的线性组合。PCA 特别适合高维度数据集。
关键性质:
- 不丢失信息——只是把信息集中到了前几个成分中;
- 与线性回归的思路本质相同,只是没有因变量:
- 线性回归的解,恰好就是第一主成分;
- 排除掉第一主成分所解释的信息后,PCA 再计算出信息量第二大的成分,然后是第三大,依此类推;
- 这些线性组合构成一组新的变量,可以被用来从新的坐标轴角度观察数据;
- 各成分按重要性排序,因此除了前几个成分外,其余的都可以舍弃,只保留最重要的信息,且成分数量可以很少;
- 成分表中的系数,给出了每个原始变量在该成分中所占的比例;
- 系数的正负号表示在该特定成分中,两个变量是正相关还是负相关;
- 仅凭系数数值本身很难解读各成分的含义,配合可视化(画图) 通常能大幅提升理解程度。
数学形式:
PC1 = (a·var1 + b·var2 + c·var3 + …)
PC2 = (d·var1 + e·var2 + f·var3 + …)
PC3 = (g·var1 + h·var2 + i·var3 + …)
4. 聚类(Clustering)
聚类是降维思路的另一种体现方式——关注的是每个点与其他点之间距离的远近。核心思路:把数据点划分为若干簇(cluster),使得簇内部点之间的距离,小于簇与簇之间的距离。
- 聚类有助于识别彼此特征相似的记录群组;
- 当数据没有标签时,聚类可以先把记录分组,供进一步深入检查;
- 深入检查每个簇内的记录后,用户可以理解"是什么原因导致这些记录被归为一类",以及"为什么另一些记录被单独分到别的簇"。
4.1 K-means 聚类
k-means 聚类首先要选定簇的数量 k,然后在数据空间中随机放置 k 个簇中心,接着不断重复以下步骤直到收敛:
- 每个数据点被归类到离它最近的簇中心所在的簇;
- 计算每个簇的质心(centroid);
- 把簇中心更新为该质心所在位置。
注意点:
- k-means 本身不会帮你确定合适的簇数量——这个 k 值需要用户凭直觉或对数据的先验知识来设定;
- 算法可能因为簇中心的初始随机位置不同,最终收敛到多个不同的解,其中一些解会优于另一些。
5. 分类(Classifications)
- 聚类和 PCA 让用户看到数据中的模式,这是在没有标签指导下能做到的极限;
- 有监督学习时,标签会被纳入学习过程:
- 无监督问的问题:哪些特征最重要或最有意思?
- 有监督问的问题:哪些特征最能解释这些组别之间的差异?
- 分类方法:每条记录都归属于某个类别/类;根据记录其他特征的取值,预测一条新记录所属的类别;
- 回归方法:某个变量依赖于其他一些或全部变量;根据自变量的取值预测因变量的数值。
5.1 分类树(Classification Trees)
分类树通过为特征找到最优切分点来拆分数据,用来按类别切分数据。树状图会展示每个节点的类别构成,以及到达该节点的数据点的相对数量。
剪枝(Tree Pruning):
- 剪枝会从树中移除与过拟合相关的规则;
- 剪枝后的新树会漏掉少数原本能被正确分类的点,但只保留有意义的规则,对新数据的泛化能力更强。
5.2 朴素贝叶斯分类器(Naïve Bayes Classifier)
- 朴素贝叶斯算法对每条记录,独立考虑每个特征的取值,计算该记录落入每个类别的概率;
- 随后,依据贝叶斯法则(Bayes' rule),把各特征对应的概率组合起来,从而确定每条新记录最可能所属的类别;
- 几乎完全不受过拟合影响——单个数据点的影响力很小;对数据所做的假设也非常少。
5.3 随机森林(Random Forest)
随机森林是一种集成分类器(ensemble classifier),使用多棵不同的分类树。这些树是基于原始训练集中随机抽样的记录生成的。结果中还附带准确率信息和变量重要性信息。
- 无需剪枝;
- 树可以一直生长,直到每个节点只包含极少量观测值;
- 预测效果优于单棵分类树;
- 无需调参。
6. 比较预测器的准确性
6.1 交叉验证(Cross-Validation)
- 模型应该擅长对未标注数据做分类,而不是单纯"复述"已经被分类过的数据;
- 把数据随机划分为训练集和测试集:
- 构建树时隐藏测试集;
- 计算准确率时隐藏训练集;
- 计算出的准确率代表了模型在未见过的数据上的表现;
- 有一些技术可以把这个过程重复多次,确保每条记录恰好只被用作一次测试集中的样本,例如 k 折交叉验证(k-folds)。
6.2 模型比较
存在若干标准的性能度量指标,可以运行多个模型并比较这些指标:准确率(Accuracy)、精确率(Precision)、召回率(Recall),以及其他指标。具体应用场景决定了哪些性能指标对特定任务而言最为重要。
7. 敏感性与特异性(Sensitivity and Specificity)
敏感性与特异性是衡量分类测试性能的统计指标:
- 敏感性(Sensitivity):衡量实际为正的结果中,被正确归类的比例;
- 特异性(Specificity):衡量实际为负的结果中,被正确归类的比例。
举例:如果需要衡量一项测试"始终能检测出问题"的能力,应关注敏感性;如果需要衡量分类器"不产生假阳性判断"的能力,应关注特异性。
7.1 ROC 曲线
- ROC(Receiver Operating Characteristic,受试者工作特征)曲线:针对不同的判定阈值(cut-off point),描绘真阳性率(敏感性) vs 假阳性率(100 - 特异性);
- 曲线上的每一个点,都对应某个特定判定阈值下的一对敏感性/特异性数值;
- 一个具有完美区分能力的测试(两个分布没有重叠),其 ROC 曲线会经过左上角(100% 敏感性,100% 特异性);
- ROC 曲线越靠近左上角,测试的整体准确性越高。
7.2 混淆矩阵(Confusion Matrix)
混淆矩阵是一张表,常用来描述机器学习算法在真实值已知的测试数据集上的表现。示例:
| Predicted High | Predicted Low | |
|---|---|---|
| Actual High | 100 | 20 |
| Actual Low | 10 | 200 |
该表告诉我们:
- 存在两个可能的预测类别:"high" 和 "low"(比如预测用户平均消费水平的"高消费"或"低消费"客户);
- 分类器总共做出了 330 次预测;
- 在这 330 次预测中,分类器预测"high" 110 次,预测"low" 220 次;
- 而实际情况中,样本里有 100 个是高消费者,200 个是低消费者。
8. 本讲小结与学习目标回顾
- 进一步认识机器学习算法及其使用方式;
- 熟悉降维技术及其适用场景;
- 认识何时可以用聚类作为一种降维手段;
- 复习分类树、随机森林等不同分类方法;
- 学会如何比较预测器的准确性;
- 熟悉敏感性和特异性作为二分类测试的指标。
下一讲(Lec 8):数据、数据库、机器学习都讲完了,进入企业系统的世界——从供应链最核心的信息系统骨干ERP 开始。