版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第6章聚类分析01第6章聚类分析理解相似性,比较分组方法,解释聚类结果数据挖掘基础及应用本章学习路线02概念与距离明确聚类对象,选择特征和距离。划分与层次理解均值迭代,观察合并与分裂。密度、图与网格比较不同方法如何定义簇。评价与应用选择评价口径,解释簇和规则。学习目标:能手算小型数据的聚类步骤,理解主要参数,并结合指标和应用问题评价结果。图6-1聚类分析知识结构图聚类:按照特征相似性分组03原始点集K=2的一种划分两幅图使用同一8点数据。右图按教材给定初始中心完成K-Means计算,颜色表示分组,不代表预先已知的类别。图6-2聚类可视化聚类与分类的区别04比较项分类聚类学习时的标签使用已知类别标签通常不使用类别标签主要问题新样本属于哪个已知类别对象在当前特征下如何分组输出含义预先定义的类别由算法得到的簇编号评价依据与真实类别比较预测表现结合结构指标、稳定性和用途簇编号本身没有业务含义。聚类完成后,需要回到原始特征解释每个簇。距离度量与特征尺度05欧氏距离:d(x,y)=√Σⱼ(xⱼ−yⱼ)²二维手算示例P=(1,2),Q=(4,6)。欧氏距离=√(3²+4²)=5。曼哈顿距离=|3|+|4|=7。尺度改变距离的贡献金额、次数和比例的单位不同。数值范围大的特征可能主导距离。标准化后仍需考虑特征权重。类别编码也要符合变量含义。标准化统一数值尺度,并不自动保证各特征对实际问题同等重要。聚类前的数据准备06定义对象一名客户、一次访问或一周学习记录。整理特征处理缺失和异常,去除无效编号。缩放与距离说明缩放方法,选择合适距离。保留解释信息保存原始单位,便于描述簇特征。同一对象的表示影响分组按消费金额聚类与按商品偏好聚类,可能得到不同的客户群。时间曲线也要区分总量差异和形状差异,再决定是否归一化。若要检验新对象上的适用性,应先划分验证数据,缩放和分组规则在训练部分确定。常见聚类方法的分组依据07方法家族分组依据代表方法划分方法围绕中心优化目标函数K-Means、K-Medoids层次聚类逐步合并或分裂形成层次凝聚层次、分裂层次密度聚类连接密集区域并识别噪声DBSCAN、OPTICS图论方法利用邻接关系或图的结构谱聚类、最小生成树网格方法统计密集网格并连接单元STING、CLIQUE不同方法采用不同的簇概念。选择时要考虑形状、密度、距离、数据规模和解释需求。K-Means的目标函数08SSE=ΣₖΣₓ∈Cₖ‖x−μₖ‖²均值作为簇中心μₖ是簇Cₖ中样本的均值。每个样本分配到一个簇。优化的是到中心的平方距离之和。目标函数的适用范围适合较紧凑的中心型分组。异常值影响均值和平方距离。复杂形状需比较其他方法。K-Means交替更新通常收敛到局部解。不同初始化可能产生不同划分。K-Means的交替更新09设定K与初值指定簇数,选择初始中心。分配样本比较到中心的距离,分到最近的簇。更新中心对簇内样本重新计算均值。检查停止条件中心变化足够小,或达到迭代上限。分配和更新解决不同问题中心固定时,最近中心分配不会增加SSE。分配固定时,用簇内均值作为中心也不会增加SSE。实际实现还需处理空簇与数值容差。比较距离时可直接比较平方距离,省略开平方不会改变最近中心的判断。教材的8个二维样本10样本x₁x₂P112P223P334P487P578P696P743P865设K=2,固定初始中心μ₁=(1,2)、μ₂=(8,7)。以下表格、散点图和代码均使用这组初值。第一轮分配:比较平方距离11样本坐标到(1,2)的d²到(8,7)的d²分配(1,2)074簇1(2,3)252簇1(3,4)834簇1(8,7)740簇2(7,8)722簇2(9,6)802簇2(4,3)1032簇1(6,5)348簇2例如P₈=(6,5),到两个中心的平方距离分别为34和8,因此分入簇2。第一轮SSE为32。更新均值与下一轮分配12簇1的新中心样本为(1,2)、(2,3)、(3,4)、(4,3)。μ₁=((1+2+3+4)/4,(2+3+4+3)/4)=(2.5,3)。簇2的新中心样本为(8,7)、(7,8)、(9,6)、(6,5)。μ₂=((8+7+9+6)/4,(7+8+6+5)/4)=(7.5,6.5)。用新中心再次分配,8个样本的簇归属不变。中心随之保持不变,SSE从32下降到17。收敛结果与簇中心13样本点与簇中心蓝、橙圆点表示两个簇。深蓝菱形表示中心。μ₁=(2.5,3)。μ₂=(7.5,6.5)。中心不一定是实际样本。本例SSE=17。簇编号可以互换,划分本身不变。这个小例子用于说明步骤,不能据此断言所有数据都适合K=2。图6-3聚类算法迭代过程示意图例6.1:用NumPy复现手算14importnumpyasnpX=np.array([(1,2),(2,3),(3,4),(8,7),(7,8),(9,6),(4,3),(6,5)],float)centers=np.array([(1,2),(8,7)],float)for_inrange(100):d2=((X[:,None]-centers[None,:])**2).sum(2)labels=d2.argmin(1)new=np.array([X[labels==j].mean(0)forjinrange(2)])ifnp.allclose(new,centers):breakcenters=new代码中的两个更新argmin对应最近中心分配。mean对应簇中心更新。本例每一簇都有样本。一般实现还应检查空簇。用最终中心再次分配。这一固定初值示例可直接复现前面的分组。实际应用可比较多组初值,并设置收敛容差和迭代上限。K-Means的初始化与扩展15方法主要变化K-Means++按到已有中心的最短距离的平方,加权选择新中心多次初始化重复运行,比较最终SSE,如显式设置n_init=10K-Medoids中心选择实际样本,最小化所用距离之和Mini-BatchK-Means用小批量样本更新中心,降低大样本计算成本Elkan方法利用三角不等式的距离上下界减少重复计算模糊C均值以隶属度描述一个样本对不同簇的归属K-Means++更倾向于选择远离已有中心的点,其选择权重与距离平方成正比。它仍不保证全局最优。层次聚类的两种方向16凝聚:自底向上开始时每个样本自成一簇。根据链接准则,每次合并最接近的两个簇。保留合并顺序和对应的高度。分裂:自顶向下开始时所有样本属于一个簇。选择要继续拆分的簇,用选定方法进行二分或多分。达到簇数或其他停止条件后结束。层次结构可以保留多个尺度的分组。最终需要通过簇数、截断高度或其他准则选择一个划分。图6-4层次聚类算法流程示意图凝聚聚类的链接准则17准则两个簇之间如何比较需要注意single跨簇样本对的最小距离可能出现链式连接complete跨簇样本对的最大距离受较远样本对影响average跨簇全部样本对的平均距离需要使用完整的跨簇平均ward比较合并引起的簇内平方和增量要求欧氏特征空间链接准则改变合并顺序。Ward不是把任意距离矩阵直接取平均,不能与其他链接准则混为一谈。例6.2:原始距离矩阵18对象ABCDA02.53.07.0B2.502.06.5C3.02.005.0D7.06.55.00先找非对角最小值d(B,C)=2.0。因此先合并{B}与{C}。d(A,B)=2.5,并不是本矩阵的最小距离。本例以下采用single链接。距离矩阵是对象之间的差异,不把它的每一行直接当作原始特征。单链接更新:合并B与C之后19簇{A}{B,C}{D}{A}02.57.0{B,C}2.505.0{D}7.05.00更新新簇到其他簇的距离d({B,C},A)=min(2.5,3.0)=2.5。d({B,C},D)=min(6.5,5.0)=5.0。合并高度依次为2.0、2.5、5.0。每一步都根据相同的链接准则更新,不能保留已删除对象的错误索引。单链接合并过程的树状图20ABCD2.02.55.0截断高度为3橙线位于2.5与5之间。得到两个簇:{A,B,C}与{D}。树状图的高度表示链接值,横向排列只用于展示对象。同一棵树可以在不同高度截断。比较链接方法时,也要说明距离、缩放方式和最终簇数。例6.2:由预计算距离生成层次结构21fromscipy.spatial.distanceimportsquareformfromscipy.cluster.hierarchyimport(linkage,dendrogram,fcluster)#D为例6.2的原始4×4距离矩阵condensed=squareform(D,checks=True)Z=linkage(condensed,method='single')labels=fcluster(Z,t=3,criterion='distance')dendrogram(Z,labels=['A','B','C','D'])输入形式需要对应squareform得到压缩距离向量。linkage据此执行合并。若传入二维特征矩阵,函数会重新计算样本距离。两种输入含义不同。D需对称且对角为0。运行使用SciPy,绘图另需matplotlib。分裂层次聚类的二分过程22整体作为一簇先保留所有对象,记录原始行索引。选择待分裂簇例如选择当前SSE最大的簇。进行二分在该簇内运行K-Means等方法。更新并停止更新索引集合,达到目标簇数停止。行索引与局部标签局部模型的0、1标签只表示这一次二分的结果。更新簇成员时,应把局部结果映射回原始样本索引,不能把标签数值追加为样本。分裂方法和选择待分裂簇的准则共同决定结果。单点簇不能再进行有意义的二分。例6.3:用二分K-Means实现分裂23fromsklearn.clusterimportBisectingKMeansX_div=np.array([(2.5,3),(0,2),(3,5),(7,6.5)],float)model=BisectingKMeans(n_clusters=3,random_state=0,n_init=10,bisecting_strategy='biggest_inertia')labels=model.fit_predict(X_div)print(labels)print(model.cluster_centers_)分裂策略每轮选SSE最大的簇,再进行二分。目标簇数设为3。用labels查询样本归属。保持原始坐标含义。BisectingKMeans是分裂层次聚类的一种具体实现。原示例坐标与原距离矩阵不是同一份表示,使用时需要分开说明。DBSCAN的邻域与三种样本状态24概念判断依据eps邻域与当前样本距离不超过eps的样本集合核心点邻域内样本数达到min_samples边界点不是核心点,但位于某核心点的eps邻域中噪声点不能连接到任何核心点形成的簇本课按scikit-learn约定计数,min_samples包含样本自身。eps不是整个簇的最大直径。DBSCAN手算:6个样本的邻域25点坐标邻域点数(含自身)状态A(1,2)3核心点B(2,2)3核心点C(2,3)3核心点D(8,8)2核心点E(8,9)2核心点F(25,80)1噪声点设min_samples=2。A、B、C两两距离不超过2,D、E互相邻接,F只有自身。得到2个簇和1个噪声点。同一密度聚类结果的全图与局部26全范围:包含F=(25,80)主体局部:A至E灰色点F为噪声,局部图未显示F。蓝色为{A,B,C},橙色为{D,E}。本例没有边界点。DBSCAN通过核心点扩展簇27检查邻域访问样本并统计eps邻域内的点。从核心点出发邻域点数达标,开始或继续扩展。连接密集区域沿核心点继续搜索,吸收邻接边界点。保留噪声标记扩展结束后,其余点记为−1。边界点与噪声的处理边界点可以加入簇,但它自身不能像核心点那样继续扩展。某个点最初未达核心条件,后续仍可能成为其他核心点的边界点。不同密度区域和高维距离会影响DBSCAN的效果。噪声是算法在当前参数下的输出,不能直接等同于实际故障。标准化后,邻域半径的含义改变28输入空间eps簇数噪声数原坐标2.021Z-score标准化2.011Z-score标准化0.321为什么会合并标准化后,A至E两两距离均小于0.9,eps=2会将它们连成一簇。本例改为eps=0.3时得到两个簇,半径应根据标准化后的距离重新选择。这里使用总体标准差的Z-score,与StandardScaler的缩放口径一致。表中结果由邻域与核心连通关系逐点核算。例6.4:明确使用哪一个距离空间29fromsklearn.clusterimportDBSCANfromsklearn.preprocessingimportStandardScalerX_db=np.array([(1,2),(2,2),(2,3),(8,8),(8,9),(25,80)],float)Z_db=StandardScaler().fit_transform(X_db)model=DBSCAN(eps=0.3,min_samples=2)labels=model.fit_predict(Z_db)core=model.core_sample_indices_print(labels,core)标签与坐标分别处理用Z_db进行模型拟合。labels与原始行顺序一致。绘图可使用原坐标X_db,沿用同一行的标签。core保存核心点行索引。这组eps只用于6点教学例子。实际数据应先检查距离尺度,再选择eps和min_samples。k-distance曲线与eps候选范围30本图的邻居计数约定30个模拟二维样本。将每点的第5邻居距离排序。计入自身的零距离,等价于第4个其他样本距离。曲线转折用于提出eps候选。k-distance转折不保证唯一的最佳半径。还需查看簇数、噪声比例、稳定性和应用含义。OPTICS与HDBSCAN的扩展思路31方法主要思路仍需关注的设置DBSCAN按给定半径扩展密集区域eps、min_samplesOPTICS保留密度连接的排序与可达距离min_samples、max_eps、提取方式HDBSCAN构建密度层次并选择稳定簇min_cluster_size、min_samples等参数与密度变化这些扩展提供观察多种密度尺度的方法,但仍然依赖距离、缩放和参数。比较结果时,同步报告噪声比例以及保留下来的簇大小。OPTICS常用max_eps限制搜索尺度。HDBSCAN也需要选择最小簇大小,不能视为完全不需要调参。图论聚类中的数据表示32构造节点每个对象对应一个节点。建立邻接关系按近邻、距离或相似度连接节点。利用图结构观察图的谱,或构建生成树。形成分组得到节点簇,映射回原始对象。边权的含义决定后续处理相似度越大通常表示越相近,距离越大通常表示越不相近。谱聚类与距离最小生成树采用的边权含义不同,构图时应明确说明。图过稀疏可能出现多个不连通分量,过稠密又可能掩盖局部结构。邻接参数也是模型的一部分。谱聚类的相似图与拉普拉斯矩阵331234相似度1相似度0.1相似度1构造矩阵W表示非负相似度。D的对角元素为各节点的加权度。非归一化拉普拉斯:L=D−W。在谱空间中分组对选定拉普拉斯矩阵求特征向量。形成嵌入后,执行K-Means等分组。特征向量选择依具体归一化方案确定。图为教学构造的四节点相似图。不要把所有谱聚类都写成必须剔除零特征值对应向量。非球形数据:双环的分组示例34原坐标中的K-Means6近邻图的归一化谱聚类双环为80点模拟数据。左图比较20组初始中心,右图按归一化谱嵌入计算;近邻图有两个连通分量。例6.5:谱聚类的核心调用35fromsklearn.datasetsimportmake_blobsfromsklearn.clusterimportSpectralClusteringX_sp,y_sp=make_blobs(n_samples=300,centers=2,cluster_std=0.60,random_state=0)model=SpectralClustering(n_clusters=2,affinity='nearest_neighbors',n_neighbors=10,assign_labels='kmeans',n_init=10,random_state=0)labels=model.fit_predict(X_sp)邻接图也需要检查n_neighbors控制近邻图。图的连通结构会影响结果。y_sp用于外部评价,不参与模型拟合。调整图参数后复核划分。上一页双环结果采用NumPy计算的教学实现,本页展示教材模拟数据的scikit-learn接口,两份数据需分开说明。最小生成树聚类的距离边权36计算距离用距离表示连接两个点的代价。构建MST连接全部对象,使树的总边权最小。剪去长边按阈值或目标簇数删除选定的边。计算连通分量每个剩余连通分量对应一个簇。距离与相似度的方向最小生成树最小化边权总和。若直接把“越大越相近”的高斯相似度作为代价,就会偏向较小的相似度。教学例子采用欧氏距离,剪去较长的连接。若需要保留高相似度连接,应采用匹配的转换或最大生成树方案,并重新解释剪边准则。六点示例:剪去连接两群的长边37本例的5条树边4条短边长度均为1。连接两群的长边约为7.07。以距离3为阈值剪边,剩余两个连通分量。蓝、橙色表示剪边后分组。该六点数据用于说明MST剪边,与例6.6的300点模拟数据不同。灰色长边是本例被剪去的连接。例6.6:按距离构建并剪切MST38fromscipy.spatial.distanceimportcdistfromscipy.sparse.csgraphimport(minimum_spanning_tree,connected_components)X_mst,_=make_blobs(n_samples=300,centers=3,cluster_std=0.60,random_state=0)D_mst=cdist(X_mst,X_mst)threshold=1.0#教学候选,需按树边长度核对tree=minimum_spanning_tree(D_mst)tree.data[tree.data>threshold]=0tree.eliminate_zeros()n_groups,labels=connected_components(tree,directed=False)阈值与距离口径对应以距离1.0作为教学候选。需按树边长度重新核对。树的存储可能只有单向边,连通分量按无向图计算。检查重复坐标与零距离。运行需要SciPy和scikit-learn。距离阈值1.0是教学候选,运行后查看簇数和边长分布,再比较其他设置。网格聚类:先统计单元,再连接39行/列12345145000256100301001400054500046本例的密集单元假设单元计数达到4即密集。按上下左右相邻连接。左上与右下形成两个区域。稀疏单元不连接这两个区域。网格分辨率会改变结果。表中计数是教学构造。网格化仍需读取样本并计算其所属单元,不能把全部计算量说成与样本数无关。STING与CLIQUE40比较项STINGCLIQUE组织结构多分辨率的层次网格不同特征子空间中的网格使用的信息单元内计数、均值和方差等统计单元密度与子空间关系处理过程利用统计摘要逐层筛选相关区域寻找密集子空间单元并连接主要设置网格层次、分辨率及筛选准则区间划分和密度阈值高维网格数可能迅速增长。方法效率既与网格设计有关,也包括样本分配和统计摘要的构建成本。聚类趋势与Hopkins统计量41H=Σᵢuᵢᵈ/(Σᵢuᵢᵈ+Σᵢwᵢᵈ),d为特征维数两类最近邻距离w:抽取真实样本,计算到其他真实样本的最近邻距离。u:在参考空间均匀生成随机点,计算到真实数据的最近邻距离。本页定义下的解释接近0.5:接近随机空间分布。较大:提示可能存在聚集趋势。明确参考空间、距离和指数约定。重复抽样,报告结果的变化。Hopkins不直接给出最佳簇数。高维边界、相关特征和参考空间选择都会影响解释,不用单一阈值代替全部判断。簇数选择:SSE与肘部图42本例曲线的变化K=1时,SSE=91.5。K=2时,SSE=17。继续增大K,SSE仍然下降。不只按最小SSE选簇数。需结合拐点和解释需求。曲线对8点所有划分穷举,展示各K的最小SSE,不代表某一次随机初始化的输出。肘部位置可能不清楚。轮廓系数:簇内与最近其他簇43s(i)=[b(i)−a(i)]/max{a(i),b(i)}两个平均距离a(i):本簇其他样本的平均距离。b(i):到每个其他簇的平均距离,取其中最小值。单点簇的轮廓值通常记为0。取值与使用条件接近1:相对紧密且分离。接近0:位于分组边界附近。负值:可能更接近其他簇。本章8点的平均值约0.615。按欧氏距离计算,要求2≤簇数≤样本数−1。轮廓系数偏好紧凑的凸形簇,解释密度簇时需谨慎。内在指标与簇数选择44指标或方法判断依据一般比较方向SSE簇内到中心的平方距离之和固定K时较小,跨K看变化轮廓系数簇内与最近其他簇的平均距离通常较大更好Calinski-Harabasz簇间离散与簇内离散的相对比值通常较大更好Davies-Bouldin簇内分散与中心间隔的组合通常较小更好AIC/BIC概率模型的拟合和复杂度仅对适用的概率模型比较在相同特征空间和距离口径下比较。AIC/BIC常用于高斯混合等概率模型,不是任意K-Means结果的通用评分。外在指标不要求簇编号一致45样本参考标签聚类标签102202310410分组相同,编号不同两个划分都将1、2分为一组,将3、4分为另一组。调整兰德指数ARI=1。归一化互信息NMI=1。直接比较标签数值会误判。ARI校正随机一致性,可能为负。NMI比较分组共享的信息。参考标签参与评价,并不表示聚类时使用了标签。含噪声聚类的评价口径46fromsklearn.metricsimportsilhouette_scoremask=labels!=-1kept=X_scaled[mask]groups=labels[mask]k=len(np.unique(groups))if2<=k<len(kept):score=silhouette_score(kept,groups)else:score=np.nannoise_ratio=np.mean(labels==-1)print(score,noise_ratio)同步报告保留比例排除噪声后再计算轮廓。报告噪声比例与簇大小。仅剩1簇时不计算轮廓。排除难分样本可能提分,需同时检查整体效果。这里X_scaled表示实际拟合所用的特征空间。若采用其他距离,需要在评分中保持对应口径。聚类结果的解释与稳定性47描述簇画像回到原始单位,比较均值与中位数。检查簇规模报告每簇样本数,查看极小簇和噪声。比较重复结果更换初值或抽样,观察分组变化。结合应用复核检查命名是否合理,在新数据中验证。画像需要与整体基线比较“高消费簇”应说明它相对哪个总体、哪些指标偏高,以及组内差异有多大。二维降维图用于辅助观察,不能替代原特征空间中的分离度和稳定性检查。簇间ARI可用于比较两个分组的一致性。评价稳定性时,先保证比较的是同一批对象。聚类之后的簇内关联规则48按对象分群用客户特征得到客户簇。关联到事务将该簇客户连接到购物篮。簇内挖掘规则以簇内事务重新计算支持度。与整体比较比较基线与样本数,复核规则差异。簇内支持度的分母同一规则在不同簇中,支持度和置信度可能不同。应明确统计单位是客户还是购物篮,并用该单位重新计数,避免把不同分母混在一起。患者分群后的症状与用药共现只能用于提出研究问题,不能由共现推断药物疗效或因果关系。本章方法选择小结49主要问题可先比较的方法关键核对项中心型分组K-Means、二分K-MeansK、缩放、初始化与异常值希望保留层次凝聚或分裂层次聚类距离、链接与截断方式识别密集区域与噪声DBSCAN、OPTICS、HDBSCAN密度尺度、噪声比例、簇大小复杂连接结构谱聚类、MST聚类邻接图、边权含义与参数网格或子空间结构STING、CLIQUE分辨率、密度阈值与维数方法没有统一的优劣排名。先明确问题,再用一致的数据和评价口径比较,并保留结果解释。课后练习1:零售客户分群50构造模拟客户特征近30天消费频率、客单价、最近消费间隔、加购率、退货率和品类宽度。计算Hopkins统计量。本题比较K-Means、凝聚层次和二分K-Means,K取2至10。图形、指标与簇画像比较轮廓系数、CH、DB和耗时。给出K-SSE肘部图、K-轮廓曲线。用PCA作二维展示,UMAP可选。输出每簇的均值与中位数。结合指标和画像给出K建议。三算法名单是本题的课堂比较约定。先统一缩放和评价空间,Hopkins明确参考空间与指数定义。课后练习2:设备密度簇与噪声51构造模拟运维特征心跳、温度、电流、CPU占用率。包含高温低心跳、间歇抖动等异常子群。标准化后绘制k-distance曲线。明确是否把自身计入邻居。比较DBSCAN与OPTICS对DBSCAN搜索eps与min_samples。与OPTICS的提取结果比较。报告各簇范围和噪声占比。排除噪声后计算轮廓系数。模拟异常标签可辅助检查检出差异。噪声标签不自动等于设备故障。评价异常检出时,应另有模拟标签或人工核查依据。课后练习3:B2B客户层次聚类52构造并缩放模拟特征年收入、合同周期、客单价、售后工单量、续约率。先完成标准化。比较single、complete、average与ward的层次结构。截断、评价与比较绘制dendrogram。根据截断高度选择3至6个簇。比较轮廓系数,给出关键画像。再运行相同K的K-Means,用ARI比较两种划分的一致性。Ward使用欧氏特征空间。不同方法的合并高度不应脱离各自链接定义直接解释为同一种量。课后练习4:非球形数据与谱聚类53构造模拟数据用make_moons或make_circles,生成带噪声的非球形点集。也可选择简单图像色块数据。保留生成标签,仅用于评价。比较原空间与邻接图在原空间运行K-Means。用nearest_neighbors图做谱聚类。比较NMI、ARI和轮廓系数。展示分组结果或分割边界,解释近邻数和噪声带来的变化。轮廓系数对凸形簇的偏好可能与参考环别评价不同。一起展示图形、外部指标和邻接设置。课后练习5:每周学习曲线的聚类54构造52周的学习记录每周7天的学习分钟数组成7维向量。明确一周为一个聚类样本。观察工作日高、周末高、均衡或明显下降等曲线模式。比较原始总量与归一化形状。距离与中心的对应用K-Means与欧氏距离作比较。再计算DTW距离矩阵,配合简化K-Medoids分组。按对应距离计算轮廓系数。可视化每簇均值曲线,同时标注实际代表周。DTW和K-Medoids需要额外实现或合适的库。DTW距离矩阵不能直接当作7维特征输入普通K-Means。第7章神经网络01第7章神经网络理解前向计算、误差反传与卷积特征提取数据挖掘基础及应用本章学习路线02神经网络要素理解神经元、激活和参数更新。BP神经网络逐层前向计算,按链式法则求导。卷积神经网络观察卷积、池化和全连接计算。实验与评价复现实例,比较训练与验证。学习目标:能完成小型网络的前向和反向计算,说明CNN各层作用,并设计基本的比较实验。图7-1神经网络知识结构图神经元的计算03接收输入输入特征x,连接权重w。加权求和z=Σⱼwⱼxⱼ+b偏置使结果平移。激活变换a=f(z)引入非线性。传递输出a作为下一层输入,或任务的输出。可学习参数训练过程调整权重w和偏置b。激活函数的形式通常由网络设计确定。权重的正负和大小表示当前计算中的作用,不能直接解释为变量的因果影响。偏置是模型参数,训练时可以更新。它与学习率、隐藏层大小等超参数不同。一个神经元的前向手算04输入与参数x=(1,2),w=(0.2,−0.1)。b=0.1,使用Sigmoid。z=0.2×1−0.1×2+0.1=0.1。激活输出σ(z)=1/(1+e⁻ᶻ)。a=σ(0.1)≈0.5250。先算线性组合,再算激活。后续反向计算沿用本例。本页参数是用于手算的教学设定。输出是否适合作为类别概率,还取决于模型训练与校准。多层网络中的非线性05只有仿射变换时第一层:h=W₁x+b₁。第二层:z=W₂h+b₂。代入后:z=(W₂W₁)x+(W₂b₁+b₂)。仍然是输入的仿射变换。隐藏层加入非线性h=f(W₁x+b₁)。z=W₂h+b₂。非线性激活改变表示能力。例如XOR的两组对角样本,需要比一条直线更复杂的边界。这里讨论隐藏层的表达能力。分类输出端的Sigmoid或Softmax还承担把分数转换为概率形式的作用。Sigmoid与Tanh的函数曲线06Sigmoid:σ(z)=1/(1+e⁻ᶻ)Tanh:输出位于(−1,1)两者在正、负两端逐渐饱和,导数接近0。Tanh以0为中心,但这并不保证所有网络都更容易训练。ReLU与LeakyReLU的函数曲线07ReLU(z)=max(0,z)LeakyReLU:负半轴斜率0.01ReLU在负半轴的梯度为0,神经元可能长期不激活。LeakyReLU保留小斜率,缓解这一问题。激活函数的导数与饱和08函数导数训练时的关注点Sigmoidσ(z)[1−σ(z)]最大值0.25,两端接近0Tanh1−tanh²(z)两端接近0ReLUz>0时为1,z<0时为0在z=0处不可导,代码需约定LeakyReLUz>0时为1,z<0时为0.01负半轴保留小梯度Swish:zσ(z)σ(z)+zσ(z)[1−σ(z)]平滑,可出现负输出ReLU导数可写为(Z>0)。Sigmoid的A(1−A)不能直接用于ReLU隐藏层。任务、输出与损失函数09任务常见输出形式常见损失连续值回归一个或多个连续输出均方误差MSE二分类一个Sigmoid输出二元交叉熵BCE互斥多分类各类别分数经Softmax转换多分类交叉熵Softmax的归一化pₖ=exp(zₖ)/Σⱼexp(zⱼ),各类别概率之和为1。Sigmoid与MSE也可组合用于教学,但其输出梯度与BCE组合不同。本章例7.1保留ReLU隐藏层、Sigmoid输出和MSE损失,便于与教材代码对应。梯度下降的参数更新10θ新=θ旧−α∇θL梯度与更新方向梯度指向局部增长最快的方向。沿负梯度方向尝试降低损失。θ包括各层权重和偏置。α是学习率。步长与收敛学习率过小,下降可能缓慢。过大时可能振荡或发散。非凸网络可能遇到鞍点和局部解。一次更新不保证到达全局最优。反向传播负责计算梯度,优化器负责根据梯度更新参数,两者承担不同步骤。学习率对更新轨迹的影响11L(θ)=(θ−3)²从θ₀=0开始。梯度为2(θ−3)。α=0.1:逐步接近3。α=0.5:一步到达3。α=1.1:振荡幅度扩大。曲线由更新公式逐步计算。该一维函数的合适步长不能直接照搬到复杂网络。梯度估计与优化器12选择基本作用需要区分全批量/小批量用全部或部分样本估计梯度影响一次更新的样本数SGD按当前梯度执行更新学习率和批量大小影响轨迹Momentum累积历史梯度方向帮助平滑部分振荡AdaGrad/RMSProp根据梯度历史调整参数步幅具体累积方式不同Adam结合一阶和二阶矩估计仍需选择学习率和验证效果自适应优化器也不保证更好的泛化。比较优化器时,统一网络、数据划分、训练预算与评价方法。Dropout的训练与推断13训练时的随机屏蔽设丢弃概率p=0.5。输入激活a=(2,4,6,8)。本次掩码m=(1,0,1,0)。采用反向缩放:a′=m⊙a/(1−p)=(4,0,12,0)。推断时的完整计算使用反向缩放的实现,推断时关闭随机屏蔽。本例激活保留为(2,4,6,8)。训练掩码通常每次重新采样。丢弃概率需要通过验证选择。这里展示一种具体随机掩码。按1/(1−p)缩放,使训练时每个激活的期望与输入一致。批量归一化的计算14x̂=(x−μB)/√(σB²+ε),y=γx̂+β单特征小批量示例x=(1,3),均值μB=2。按总体口径计算方差σB²=1。忽略极小ε时,x̂≈(−1,1)。设γ=2、β=1,输出≈(−1,3)。统计量与可学习参数均值和方差来自训练批量。γ与β通过训练更新。CNN通常按通道聚合批量和空间。小批量可能使统计量不稳定。BN可改善训练条件,其效果依赖具体网络与数据。不能保证每个任务都会提高性能。训练模式与推断模式15模块训练阶段通常的推断阶段Dropout随机屏蔽并按实现进行缩放关闭随机屏蔽BatchNormalization使用当前批量统计并更新运行统计使用训练累积的运行统计权重与偏置通过梯度更新固定参数进行预测模式切换影响结果验证和测试需要切换到推断模式,并关闭梯度记录以节省资源。BN的具体行为还取决于是否启用运行统计,不能只按批量大小判断。模式切换与停止梯度记录是两件事。批量归一化也不能替代对原始数据缺失、编码和尺度的处理。多层前馈网络的结构16按层理解连接图中输入有3个特征。隐藏层宽度依次为2、3。输出端有2个神经元。前向计算逐层传递激活。反向计算逐层传递梯度。本页沿用教材图7-3。后续XOR代码采用2个输入、3个隐藏单元和1个输出,是另一种网络配置。图7-3反向传播示意图批量前向计算的维度17变量形状含义XN×dN个样本,每个d个特征W₁,b₁d×h,1×h隐藏层权重和广播偏置Z₁=XW₁+b₁N×h隐藏层线性结果A₁=ReLU(Z₁)N×h隐藏层激活W₂,b₂h×1,1×1二分类输出层参数P=σ(A₁W₂+b₂)N×1每个样本一个输出教材部分推导按列放样本,代码按行放样本。本课后续采用行样本约定,转置和矩阵乘法随之对应。一个隐藏层的前向计算18隐藏层:2个输入、2个单元x=(1,2)。W₁=[[1,−1],[0.5,1]]。b₁=(0,0)。z₁=xW₁+b₁=(2,1)。a₁=ReLU(z₁)=(2,1)。输出层:1个单元W₂=(0.5,−1)ᵀ,b₂=0.2。z₂=2×0.5+1×(−1)+0.2=0.2。P=σ(0.2)≈0.5498。每一层的输入来自上一层输出。本页数值是独立的教学设定,用于说明维度与计算顺序,与例7.1的随机初始化参数不同。预测值与损失函数19MSE=(1/N)Σᵢ(Pᵢ−yᵢ)²均方误差的输出导数单输出情况下:∂L/∂Pᵢ=2(Pᵢ−yᵢ)/N。还需乘Sigmoid导数,才能得到对输出层z₂的梯度。二元交叉熵的组合BCE=−mean[ylogP+(1−y)log(1−P)]。与Sigmoid组合后,对z₂的梯度为(P−y)/N。损失定义是否含1/2、使用求和还是平均,都会影响梯度中的常数。程序应与所写公式一致。反向传播中的链式法则20∂L/∂w=(∂L/∂a)(∂a/∂z)(∂z/∂w)损失到输出由预测值与标签,计算损失的导数。经过激活乘当前激活函数对应的局部导数。经过线性层输入参与权重梯度,权重传递激活梯度。逐层求导累积所有路径,得到各参数梯度。BP是按计算图应用链式法则的过程。先得到当前参数下的全部梯度,再统一更新参数。单神经元的反向手算21损失与输出端梯度沿用z=0.1,a≈0.5250。真实标签y=1。L=½(a−y)²≈0.11282。δ=∂L/∂z=(a−y)a(1−a)≈−0.11846。权重与偏置梯度∂L/∂wⱼ=δxⱼ。∂L/∂b=δ。∂L/∂w₁≈−0.11846。∂L/∂w₂≈−0.23692。∂L/∂b≈−0.11846。这里使用½平方误差便于手算。XOR代码采用平均平方误差,输出端梯度会多出2/N。一次更新前后的变化22量更新前α=0.1更新后w₁0.200000.21185w₂−0.10000-0.07631b0.100000.11185预测输出a0.524980.54266损失½(a−1)²0.112820.10458本次更新后输出更接近标签1,损失下降。对其他网络与学习率,仍需检查实际损失变化。一隐层网络的批量反向传播23D₂=2(P−y)⊙P⊙(1−P)/N输出层参数梯度∂L/∂W₂=A₁ᵀD₂。∂L/∂b₂=按样本行求和(D₂)。D₂的形状为N×1。权重梯度形状与W₂一致。隐藏层梯度D₁=(D₂W₂ᵀ)⊙1[Z₁>0]。∂L/∂W₁=XᵀD₁。∂L/∂b₁=按样本行求和(D₁)。⊙表示逐元素相乘。D₁计算使用更新前的W₂。ReLU导数根据线性输入Z₁的正负确定。例7.1:XOR数据与初始化24x₁x₂y000011101110importnumpyasnpX=np.array([[0,0],[0,1],[1,0],[1,1]],float)y=np.array([[0],[1],[1],[0]])rng=np.random.default_rng(0)W1=rng.normal(0,.5,(2,3))b1=np.full((1,3),.1)W2=rng.normal(0,.5,(3,1))b2=np.zeros((1,1))eta,N=.1,len(X)为便于复现,固定随机种子并显式设置初始化。本例没有验证集,仅用于演示前向和反向计算。例7.1:训练循环与前向计算25history=[]forepochinrange(10001):Z1=X@W1+b1A1=np.maximum(0,Z1)Z2=A1@W2+b2P=1/(1+np.exp(-Z2))loss=np.mean((P-y)**2)ifepoch%100==0:history.append((epoch,loss))ifepoch==10000:break#此处接下一页的反向与更新变量对应网络层Z1为隐藏层线性输入。A1为ReLU输出。Z2为输出层线性输入。P为Sigmoid输出。先算损失,再执行反向。更新次数为10000次。下一页代码放在同一个for循环内,保持四个空格缩进。epoch=10000时只记录最终结果。例7.1:反向梯度与参数更新26D2=2*(P-y)*P*(1-P)/NG2=A1.T@D2g2=D2.sum(0,keepdims=True)D1=(D2@W2.T)*(Z1>0)G1=X.T@D1g1=D1.sum(0,keepdims=True)W1-=eta*G1b1-=eta*g1W2-=eta*G2b2-=eta*g2更新前算完梯度D2组合损失与激活导数。D1包含ReLU的导数掩码。先计算G1、G2、g1、g2。随后更新全部参数。避免混用新旧权重。中心有限差分可用于核对反向传播。ReLU隐藏层的导数按Z₁的正负判断,采用(Z₁>0)。例7.1:实际计算的损失与输出27输入预测P阈值0.5(0,0)0.02290(0,1)0.98431(1,0)0.98491(1,1)0.01420最终MSE≈0.000300图表来自固定种子0、学习率0.1的实际计算,属于4个训练样本的拟合结果,不代表对新数据的泛化性能。训练、验证与测试28划分数据训练、验证、测试各有不同用途。训练参数在训练部分拟合缩放和网络参数。验证选择选择网络与学习率,决定提前停止。测试评估固定最终方案,报告测试结果。损失下降与泛化训练损失下降,说明对当前训练数据拟合得更好。是否能处理新样本,需要看独立验证和测试。相关样本应按人员、设备等分组划分。提前停止应使用验证数据。反复按测试结果选择设置,会使测试集参与模型选择。卷积神经网络的计算链29输入图像保留空间排列,记录输入通道数。卷积与激活学习局部模式,生成多个特征图。池化或下采样缩小空间尺寸,保留部分响应。整合与输出全连接或全局池化,输出任务结果。局部连接与参数共享同一个卷积核在不同位置重复使用,相邻位置共享一组可学习参数。多层网络逐渐扩大感受野,后层可以组合前层提取的局部特征。CNN常用于图像等有网格结构的数据,也有一维和三维形式。具体网络不一定包含所有这些层。卷积窗口的逐元素乘加30首个3×3窗口111011001卷积核101010101左上角响应对应位置相乘并求和。1+0+1+0+1+0+0+0+1=4。滑动后使用相同卷积核。本例不翻转卷积核,采用深度学习中常用的互相关计算。步长为1,不填充。图7-4卷积运算示例例7.2:教材5×5输入的完整输出31输入:每行依次递增12345678910111213141516171819202122232425卷积核-1-1-1-18-1-1-1-1输出:3×3000000000左上角输出为8×7−(1+2+3+6+8+11+12+13)=0。原输入是线性斜坡,该核在有效区域的响应均为0。例7.2:卷积计算的核心代码32I=np.arange(1,26).reshape(5,5)K=np.array([[-1,-1,-1],[-1,8,-1],[-1,-1,-1]])out=np.zeros((3,3))foriinrange(3):forjinrange(3):patch=I[i:i+3,j:j+3]out[i,j]=np.sum(patch*K)print(out)窗口与索引每次取一个3×3窗口。逐元素乘法后求和。结果写入对应输出位置。本例无偏置,步长为1。本例的输出为全零。本段与教材例7.2使用相同输入和卷积核。更换输入结构或卷积核后,输出通常随之改变。卷积的填充、步长与尺寸33Hout=⌊(H+2P−K)/S⌋+1输入边长H核大小K填充P步长S输出边长530135311553022本页假设膨胀率为1,宽度按相同方法计算。填充补充边界位置,步长控制窗口移动间隔。多通道卷积与参数数量34跨输入通道求和RGB输入有3个通道。一个3×3卷积核包含3组权重。跨通道累加,得到1个输出通道。若设置8个输出通道,共有8组这样的卷积核。参数共享的数量例子3×3卷积,3个输入通道,8个输出通道,每通道一个偏置。参数量=(3×3×3+1)×8=224。与图像空间位置数无关。此处假设普通卷积,groups=1。输入图像越大,计算量仍会增加,不能把参数共享理解为计算量不变。卷积后的逐元素激活35卷积层的局部输出-2031-14ReLU之后003104负值置为0,正值保留。激活层不改变这个特征图的形状。本页矩阵为教学构造。ReLU引入非线性,池化和下采样则改变空间信息,两类操作作用不同。最大池化与平均池化的手算362×2窗口,步长212345678910111213141516最大池化681416平均池化3.55.511.513.5左上窗口为1、2、5、6。最大值为6,平均值为3.5。每个通道独立进行普通空间池化。图7-5最大池化与平均池化的示例对比例7.3:边缘不足一个完整窗口37最大池化:3×37910171920222425平均池化:3×3467.5141617.521.523.525按教材循环保留边缘的部分窗口。右下角仅含25,因此最大值和平均值都为25。输出尺寸采用向上取整。例7.3:部分窗口与全局池化38F=np.arange(1,26).reshape(5,5)max_pool=np.zeros((3,3))avg_pool=np.zeros((3,3))foriinrange(0,5,2):forjinrange(0,5,2):patch=F[i:i+2,j:j+2]max_pool[i//2,j//2]=patch.max()avg_pool[i//2,j//2]=patch.mean()global_avg=F.mean()print(global_avg)#13.0局部与全局的区别局部池化保留多个位置。整图求均值只保留一个数。本例全局平均值为13。边界规则需按框架核对。本页部分窗口未补零。本例局部池化保留3×3输出,全局平均池化得到一个数值。多个输入通道通常分别计算全局均值。全连接层的展平与输出39特征图教材例子为4×4单通道。展平按固定顺序展开,得到16个特征。线性变换16×4权重矩阵,再加4维偏置。输出得到4个数值,再按任务处理。全连接参数量16个输入、4个输出:16×4+4=68个可学习参数。若展平前的空间尺寸或通道数增加,全连接层输入长度和参数量也随之增加。全连接层本身计算仿射变换。是否追加激活、Softmax或其他处理,由后续任务决定。例7.4:全连接计算的维度核对40F=np.arange(1,17).reshape(4,4)x_flat=F.reshape(-1)rng=np.random.default_rng(0)W=rng.random((16,4))b=rng.random(4)z=x_flat@W+bprint(x_flat.shape)#(16,)print(W.shape)#(16,4)print(z.shape)#(4,)线性输出还需解释展平顺序必须前后一致。随机参数只用于展示维度。这4个输出尚未训练。不能直接叫作类别概率。训练目标需与输出匹配。随机权重演示全连接的维度变化。训练时,权重与偏置需要通过损失函数和梯度更新。一个小型CNN的尺寸变化41阶段输出形状(不含批量维)可学习参数灰度输入28×28×103×3卷积,8通道,P=128×28×8(3×3×1+1)×8=80ReLU与2×2池化,S=214×14×80展平15680全连接到10个类别分数101568×10+10=15690本页按H×W×C显示形状,实际代码需核对通道顺序。基础结构未加入BN和Dropout。BP学习过程与CNN层的关系42BP描述怎样计算梯度前向计算得到预测与损失。反向传播计算各参数梯度。优化器据此更新参数。全连接网络和CNN都可用BP训练。卷积核的权重也由损失更新。CNN描述怎样组织计算局部连接和共享权重提取特征。激活层引入非线性。池化改变空间尺寸和信息保留。全连接或全局池化整合特征。输出形式与损失匹配具体任务。理解网络时同时关注前向的张量形状、反向的局部导数,以及训练和推断阶段的行为。课后练习1:激活函数与导数43函数与导数的同轴比较绘制Sigmoid、Tanh、ReLU、LeakyReLU和Swish。再画各函数的导数曲线。标注ReLU在0处的约定。比较大正值和大负值处的梯度。需要解释的现象哪些函数在两端逐渐饱和?哪些函数允许负输出?负输入时是否还传递梯度?报告定义、绘图区间与计算方法。把曲线与反向传播联系起来。LeakyReLU的负斜率须明确。Swish采用zσ(z)时,其导数中也包含z与Sigmoid导数的乘积。课后练习2:NumPy实现乳腺癌二分类44数据与网络使用load_breast_cancer()。自写一隐层MLP。隐藏层ReLU,输出Sigmoid。完整实现前向、反向与更新。选择MSE或BCE,推导对应梯度。训练与评价先分训练、验证和测试。缩放仅在训练部分拟合。绘制损失曲线,报告混淆矩阵,比较准确率与各类别召回率。说明标签含义和阈值。这是公开数据的课堂建模练习。不要把一次数据集上的分类结果直接解释为临床可用性。课后练习3:MLPClassifier与提前停止45手写体数据与比较设置使用load_digits()。比较未标准化与标准化。改变隐藏层大小。设early_stopping=True。统一数据划分与随机种子。提前停止的依据validation_fraction控制训练数据中留作验证的比例。记录迭代次数、验证表现,再评价独立测试集。比较准确率与收敛情况。MLPClassifier的提前停止通常关注验证分数。内部留出的验证部分与最终独立测试集要区分。课后练习4:SGD与Adam的比较46Fashion-MNIST实验使用Keras内置Fashion-MNIST。保持同一网络结构。分别使用SGD与Adam训练。统一数据划分、批量和预算。说明学习率如何选择。比较训练过程和最终结果绘制训练与验证损失曲线。比较准确率与达到目标的耗时。用验证数据选择设置。固定方案后评价测试集。可用多个随机种子观察波动。优化器适用的学习率可能不同。相同数值学习率的比较与各自调参后的比较,回答的问题不同。课后练习5:MNIST中的BN与Dropout消融47实验组BNDropout保持一致的部分A:基础CNN无无卷积骨干、数据和训练预算B:加入BN有无与A相同C:BN与Dropout有有与A相同结果与解释记录各层位置、Dropout率、训练和推断模式。比较训练与验证曲线及测试结果。A对B观察加入BN的变化,B对C观察在BN基础上加入Dropout的变化。这三组不足以独立估计所有交互效应。需要单独判断Dropout时,可另加仅Dropout的一组。第8章可解释性模型01第8章可解释性模型理解模型行为,读懂贡献、曲线与样本解释数据挖掘基础及应用本章学习路线02问题与范围区分全局、局部,明确解释对象。模型与归因理解透明模型,手算Shapley分配。局部与曲线比较SHAP、LIME,观察PDP和ICE。样本与检验理解反事实和原型,复核解释的边界。学习目标:能按问题选择解释方法,读懂主要图形,并核对基线、输出单位、目标类别与数据范围。图8-1可解释性模型知识结构图模型解释的用途03模型为什么这样预测同样预测为高风险,模型可能依赖不同特征。解释有助于检查模型使用的信息,发现可疑特征或数据泄漏,与业务人员核对预测依据。解释与性能共同检查测试指标反映预测表现。解释反映所选方法下的模型行为。解释看起来合理,仍需核查预测误差和适用范围。对异常解释应回到数据与模型。特征归因描述模型如何利用信息。它本身不能证明某个变量是现实结果的原因。图8-2可解释性重要性全局解释与局部解释04全局:模型整体的行为哪些特征在一批样本中贡献较大?某个特征变化时,平均预测如何变?常见结果:平均绝对SHAP值、PDP,或简短树与规则的整体结构。局部:一个或一组预测这个样本为什么得到该预测?与相似样本的解释有何差别?常见结果:单样本SHAP、LIME、反事实。一组局部解释可用于分群比较。单个样本的最大贡献特征,不一定是全局排名第一的特征。聚合时要说明样本范围和统计方式。解释方法的分类维度05维度一侧另一侧生成时机本质可解释:直接读取结构事后解释:训练后分析模型模型依赖模型特定:依赖结构或参数模型无关:主要调用预测接口作用范围全局:关注整体或子群局部:关注特定预测输出形式系数、规则、特征统计曲线、贡献图、对照样本这些维度可以交叉组合。事后方法也能用于简单模型,且事后方法不一定与模型结构无关。预测准确性与解释保真度06比较对象回答的问题核对依据模型预测与真实标签原模型预测是否准确独立数据上的预测指标代理解释与原模型解释是否近似原模型所选邻域或样本集上的拟合多次解释结果解释是否稳定更换采样、种子或相近样本解释与阅读者能否理解且适用于当前问题复杂度、范围与业务核查代理模型可以忠实近似一个预测错误的原模型。解释保真度和预测准确性需要分开评价。线性回归与逻辑回归的解释07线性回归ŷ=β₀+Σⱼβⱼxⱼ。在模型其他输入保持不变时,xⱼ增加1单位,预测变化βⱼ。系数单位取决于特征和目标单位。共线性会影响系数的稳定性。逻辑回归log[p/(1−p)]=β₀+Σⱼβⱼxⱼ。βⱼ描述对数优势的变化。exp(βⱼ)是对应的优势比。概率的变化还取决于原始位置,不能直接把βⱼ当作概率增量。系数解释以当前模型和特征编码为前提。比较不同量纲特征时,不能只按原始系数绝对值排序。系数解释的数值例子08回归:单位需要明确预测费用=100+20×次数。次数从2变为3,预测费用从140变为160。模型中的单位变化为20。该关系来自设定的预测公式。分类:优势与概率不同设logit(p)=−1+0.5x。x从0变为1。优势乘以exp(0.5)≈1.65。概率从0.269变为0.378。概率增加约0.109,而非0.5。本页为构造公式的计算例子。保持其他输入不变的模型比较,不自动具有干预意义。结构可解释的模型09模型形式主要解释内容解释的限制短决策树与规则分裂阈值、路径和叶节点树过深或规则过多时难阅读GLM链接函数尺度上的加性项要说明分布、链接与编码GAMg(E[y|x])=β₀+Σⱼfⱼ(xⱼ)基本加性结构不含任意交互RuleFit规则指示变量与线性项的组合需同时看规则条件和系数线性SVM线性决策分数与特征权重核SVM需采用相应解释方法结构复杂度和预测性能之间没有固定的单一排序。可解释程度取决于模型形式、大小与阅读任务。图8-3可解释的模型不同解释方法回答的问题10问题可先使用的方法解释单位如何分配相对基线的预测差异Shapley/SHAP特征贡献当前样本附近模型如何变化LIME局部代理模型改变某特征时平均预测如何变化PDP平均预测曲线不同样本的响应有何差异ICE逐样本预测曲线哪些输入改动使预测改变反事实解释输入对照样本先确定要解释的输出、样本范围和比较基线,再选择方法。不同方法的数值不能直接混用。Shapley值的顺序边际贡献11φᵢ=所有加入顺序下的平均边际贡献加入一个联盟后的变化设S为玩家i加入前已有的集合。边际贡献为v(S∪{i})−v(S)。同一个玩家的贡献可能随S变化。对全部排列中的边际贡献求平均。分配的含义各玩家分配之和为v(全部玩家)−v(空集)。先定义联盟价值v(S),再讨论如何分配总价值。枚举排列有M!种顺序。也可按子集加权并复用联盟价值,涉及约2^M个子集,具体算法成本另行分析。例8.1:三城镇联合建厂的费用12本课直接使用教材给出的舍入费用,统一核算节约额。城1与3也可选择分别建厂,因此该联盟的最优节约为0。图8-4三城镇地理位置示意图方案费用与分别建厂相比城1、2、3各自建厂230+160+230=620基准方案城1与2联合,城3单独350+230=580节约40城2与3联合,城1单独365+230=595节约25城1与3联合,城2单独463+160=623高于分别建厂三城镇共同建厂556节约64例8.1:联盟价值表13联盟Sv(S)解释空集、{1}、{2}、{3}0未产生合作节约{1,2}40230+160−350{2,3}25160+230−365{1,3}0选择单独建厂,避免费用增加{1,2,3}64620−556价值函数允许联盟内部继续采用分别建厂等较便宜方案。后续分摊均基于这一张固定价值表。例8.1:六种顺序的边际节约14加入顺序城1边际贡献城2边际贡献城3边际贡献1230402413206402134002423139025312064032139250例如顺序1、2、3:城1加入时贡献0,城2带来40,城3再带来64−40=24。每行合计均为64。例8.1:节约分配与最终出资15城镇单独建厂费用Shapley节约份额最终出资城123019.67210.33城216032.17127.83城323012.17217.83合计62064.00556.00未舍入的出资为210⅓、127⅚、217⅚,合计556。表中逐项保留两位小数,显示合计可能相差0.01。例8.2:三位参与者的合作游戏16联盟收益空集及任意单人0{A,B}10{B,C}6{A,C}4{A,B,C}10平均边际贡献的结果A:3.667。B:4.667。C:1.667。三人合计为10。三人联盟先满足A与B条件。原收益函数采用if/elif,因此三人联盟收益是10。若改成多个收益相加,必须重新定义游戏并重算分配。例8.2:按全部排列计算Shapley值17fromitertoolsimportpermutationsplayers=['A','B','C']phi=dict.fromkeys(players,0.0)orders=list(permutations(players))fororderinorders:S=set()foriinorder:delta=game_value(S|{i})-game_value(S)phi[i]+=delta/len(orders)S.add(i)print(phi)集合与边际贡献先定义game_value,收益采用上一页表格。遍历6种排列。每次只增加一个玩家。加入前后的收益差,累计后按排列数平均。本代码适合小规模教学。参与者增多后,应考虑子集复用、采样估计或与模型结构匹配的专用算法。SHAP的基线与特征贡献18f(x)=φ₀+Σⱼφⱼ(x)玩家与联盟价值把输入特征看作玩家。联盟价值取决于如何处理缺失特征。可用背景样本替换未固定的特征,并对模型预测取平均。基线与特征贡献φ₀表示所选定义下的基线输出。φⱼ表示相对基线的分配贡献。正值把所解释输出推高。负值把所解释输出拉低。背景数据、特征依赖处理和输出尺度共同定义归因问题。基线通常不为0,也不一定取全部数据的均值。SHAP加法分解的手算例子19项归因值(对数优势单位)含义基线φ₀−1.00背景平均输出贷款额+0.80相对基线推高输出信用分+0.70本例信用分低于背景均值年收入−0.20本例收入高于背景均值年龄、性别+0.10、0.00按各自特征贡献分配最终输出0.40−1+0.8+0.7−0.2+0.1教学模型为g(x)=−1+0.8x₁−0.7x₂−0.4x₃+0.1x₄,背景各列均值为0。样本为(1,−1,0.5,1,1)。输出尺度:分数与概率20本例分解的是logit分数基线分数为−1。贡献之和为1.4。最终分数为0.4。分数相加后,再做Sigmoid:p=1/(1+exp(−0.4))≈0.599。概率空间需另行定义Sigmoid(−1)≈0.269。概率变化约为0.330。1.4是分数差,不能直接说概率增加140%。解释概率时需使用对应输出设置。SHAP值的单位与被解释输出一致。对数优势贡献不能逐项直接转换后相加成概率贡献。例8.3:贷款模拟数据的解释流程21生成模拟数据年龄、收入、信用分和贷款金额等特征。训练分类器划分训练与测试,拟合XGBoost模型。定义解释
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年土木工程考试模拟题及答案详解
- 2026年食堂前厅考试模拟题及答案详解
- 2026年aon心理测试模拟试题(含答案)
- 2026年老虎性能模拟题及答案详解
- 2026年工程师岗位模拟试卷(含答案)
- 草坪管护工岗前趋势考核试卷含答案
- 2026年马克思主义基本原理概论(专题1-5)在线形考模拟题及答案详解
- 2026年生化综合测模拟题及答案详解
- 2026年面罩吸氧模拟题及答案详解
- 高新计算机辅助设计与制造复习题及答案详解
- 云上(贵州)数据开发有限公司招聘笔试题库2026
- GB/T 31897.1-2025灯具性能第1部分:一般要求
- 武汉市建设工程文明施工管理办法
- 市政工程项目验收报告模板
- 光伏电安全管理协议书
- 南门湾海堤施工方案
- (正式版)DB15∕T 4153-2025 《蓖麻整枝与蓖麻蚕养殖一体化技术规程》
- 2025年bec初级真题答案解析
- 测绘地理信息安全保密管理制度
- 基本药物使用及采购情况统计分析
- 北京市丰台区2024-2025学年八年级上学期期末考试生物试卷
评论
0/150
提交评论