数据挖掘基础及应用 课件 第4章-分类问题分析-蓝橙课堂版1_第1页
数据挖掘基础及应用 课件 第4章-分类问题分析-蓝橙课堂版1_第2页
数据挖掘基础及应用 课件 第4章-分类问题分析-蓝橙课堂版1_第3页
数据挖掘基础及应用 课件 第4章-分类问题分析-蓝橙课堂版1_第4页
数据挖掘基础及应用 课件 第4章-分类问题分析-蓝橙课堂版1_第5页
已阅读5页,还剩50页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

01第4章分类问题分析学习分类规则、比较模型、评价结果数据挖掘基础及应用本章学习路线02决策树与剪枝理解分裂规则,控制树的复杂度。支持向量机通过间隔与核函数建立分类边界。贝叶斯分类结合先验与证据,比较类别后验概率。集成与评估组合多个模型,用相同口径评价。学习目标:能说明模型如何分类,选择合适的评价指标,并解释错误类型与阈值的关系。图4-1分类问题知识结构图分类任务与类别标签03二分类输出两个预先定义的类别。例如垃圾邮件与正常邮件,是否违约、是否为瑕疵品。建模前明确哪一类记为正类。多分类输出多个预先定义的类别。例如Iris花的品种,或事先定义的房价区间。类别名称和编码需保持对应。预测具体房价属于数值回归,预测“低价、中价、高价”属于分类。目标定义决定任务类型。分类模型的完整工作流程04定义目标与特征固定标签含义,确认可用输入。划分并预处理划分训练和测试,在训练中拟合变换。内部选择模型用验证或交叉验证选择参数与阈值。最终测试报告分类表现,检查错误类型,说明适用范围。三种常见输出类别标签给出最终分类,分数描述排序,概率给出类别概率估计。计算ROC或PR时使用分数或概率,报告混淆矩阵时还需给出阈值。测试数据不参与预处理参数、模型参数或阈值的选择。相同对象的多条记录应考虑按对象分组。决策树:逐层判断直到叶节点05今天的天气如何?晴天雨天温度是否超过20°C?是否有大风?超过不超过有大风无大风穿短袖穿长袖穿夹克和带伞穿雨衣和带伞内部节点提出判断,分支对应判断结果,叶节点给出输出。此示例将天气简化为晴天和雨天。规则提取:从根到叶读一条路径06晴天第一项判断成立。温度超过20°C第二项判断成立。穿短袖到达叶节点并输出。把路径写成规则如果“晴天”且“温度>20°C”,则按示例规则选择短袖。训练模型后,可用export_text输出文本规则,并检查样本的decision_path。一条路径中的条件共同成立才会到达对应叶节点。模型规则应放在训练数据和应用场景中解释。熵与基尼不纯度07怎样读图p为0或1时,节点纯净。p接近0.5时,两类混合。H=−Σpₖlog₂pₖG=1−Σpₖ²分裂后希望不纯度下降。类别比例用于计算不纯度。熵与基尼的数值尺度不同,不能把两种度量的原始数值直接比较。信息增益:分裂后减少了多少熵08湿度是否样本数高314低235整体549计算过程H(D)≈0.9911。分裂后加权熵:(4/9)H(3/4)+(5/9)H(2/5)≈0.9000。信息增益≈0.0911。IG=父节点熵−子节点加权熵子节点权重是该子集样本数占父节点的比例。信息增益越大,表示这次分裂减少的不确定性越多。增益率:考虑分裂本身的信息量09增益率=信息增益/分裂信息同一湿度分裂分为4个和5个样本两组。分裂信息=H(4/9,5/9)≈0.9911。增益率≈0.0911/0.9911≈0.0919。选择属性时的含义信息增益可能偏好多值属性。增益率加入分裂信息作归一化。仍需同时关注实际增益。分裂信息为0时不能直接相除。信息增益通常取较大者,增益率也取较大者。它们与“子节点加权不纯度取较小者”的口径不同。基尼分裂:比较子节点加权不纯度10G(D)=1−Σpₖ²分裂后G=Σᵥ(nᵥ/n)G(Dᵥ)父节点5个“是”,4个“否”。G(D)=1−(5/9)²−(4/9)²≈0.4938。按湿度分裂后高湿度G=0.375。低湿度G=0.480。加权G=(4/9)×0.375+(5/9)×0.480≈0.4333,下降约0.0605。按“子节点加权基尼”比较时取较小值。基尼不纯度同样适用于多分类,效果需结合数据验证。例4.1:两个特征提供了相同的信息11输入组合y=0y=1样本数X₁=1,X₂=0325X₁=0,X₂=1325度量结果父节点H≈0.9710,G=0.48。任一特征分裂后,两组类别比例仍为3:2。信息增益=0,增益率=0。加权基尼仍为0.48。X₂=1−X₁,两列只是互补编码。这组数据主要用于演示度量计算。同样输入对应不同标签,继续重复这两个特征也不能把样本完全区分。例4.2:构建决策树的递归过程12检查停止条件节点纯净或样本少,或达到复杂度限制。比较候选分裂对属性或数值阈值计算分裂质量。分成子集把样本与对应标签同步分配到子节点。递归或输出对子节点重复处理,叶节点输出类别。数值属性如何选阈值排序后,可把相邻不同取值的中点作为候选阈值。比较候选分裂并处理空子集、无有效改善等停止情形。示例流程中的“随机返回一个阈值”不能替代最优分裂计算。建模时还需要独立验证和测试。例4.3:用函数包建立决策树13fromsklearn.treeimport(DecisionTreeClassifier,export_text)X=data[:,:2]y=data[:,2]clf=DecisionTreeClassifier(criterion='gini',max_depth=3,random_state=42)clf.fit(X,y)print(export_text(clf,feature_names=['X1','X2']))常用控制参数criterion选择分裂度量。max_depth限制树深。min_samples_leaf限制叶节点样本数。random_state控制随机性。ccp_alpha控制后剪枝。本页用于观察树与规则,不能用训练数据上的正确率代替新样本预测能力。预剪枝与后剪枝的区别14预剪枝:生长时限制在建树过程中提前停止。例如限制max_depth,提高min_samples_leaf,或要求足够的不纯度下降。优点是树小、计算量较少。后剪枝:生长后简化先得到较充分生长的树,再按规则删减分支。代价复杂度剪枝由ccp_alpha控制。通过训练内部的验证选择强度。设置max_depth属于预剪枝。选择剪枝方案使用验证或交叉验证,最终测试集只用于评价。例4.4:Iris决策树与剪枝选参15fromsklearn.datasetsimportload_irisfromsklearn.model_selectionimport(train_test_split,GridSearchCV)d=load_iris()X_train,X_test,y_train,y_test=train_test_split(d.data,d.target,test_size=0.3,stratify=d.target,random_state=42)search=GridSearchCV(DecisionTreeClassifier(random_state=42),{'ccp_alpha':[0.0,0.001,0.01,0.1]},cv=5)search.fit(X_train,y_train)pred=search.predict(X_test)这个例子比较什么未剪枝与剪枝后的表现。同时记录树深、叶节点数。后续Iris例子沿用此划分,在训练内部选择模型参数。候选alpha值用于示范。测试结果只在方案确定后报告,不用测试集反复选择剪枝强度。剪枝路径与规则输出16tree=DecisionTreeClassifier(random_state=42)path=tree.cost_complexity_pruning_path(X_train,y_train)print(path.ccp_alphas)best=search.best_estimator_print(best.get_depth(),best.get_n_leaves())print(export_text(best,feature_names=list(d.feature_names)))读输出的方法剪枝路径给出候选强度。树深、叶数表示复杂度。根到叶的路径形成规则。同时检查规则覆盖的样本。剪枝通常减少模型复杂度,但不保证每次都提高正确率。比较复杂度与验证表现后再确定方案。支持向量机:最大化分类间隔17本图的边界深蓝线为x₁=0。灰线为x₁=−1与x₁=1。最近的两列点决定间隔。它们是支持向量。间隔宽度为2/‖w‖。这是线性可分的几何示例。支持向量不等同于错分点,软间隔模型中还可能位于间隔以内。软间隔与参数C18目标:½‖w‖²+CΣξᵢ约束允许间隔违反为什么需要软间隔实际样本可能混叠或含噪声。松弛变量ξᵢ允许部分样本违反间隔约束。模型权衡间隔大小与违约代价。怎样理解C较大的C更重视间隔违反的代价。较小的C通常允许更多违反。需要结合验证结果选择。C增大不保证测试表现更好。硬间隔适用于线性可分的理想情形。特征的尺度会影响距离与间隔,因此SVM常与标准化一起使用。线性核、多项式核与RBF核19核函数表达式主要控制项线性核K(x,z)=xᵀz线性分类边界多项式核K(x,z)=(γxᵀz+r)ᵈ次数d、γ、rRBF核K(x,z)=exp(−γ‖x−z‖²)局部相似性的作用范围γ选择核函数的依据核函数提供不同的相似性度量。复杂边界并不自动表示更好的预测。把核函数、C、gamma等参数放在训练内部比较。核函数通过内积形式使用特征映射,不必显式构造全部高维特征。图4-6三种核函数的效果展示图例4.5:在同一划分上比较SVM核20fromsklearn.pipelineimportmake_pipelinefromsklearn.preprocessingimportStandardScalerfromsklearn.svmimportSVCpipe=make_pipeline(StandardScaler(),SVC())search=GridSearchCV(pipe,{'svc__kernel':['linear','poly','rbf'],'svc__C':[0.1,1,10]},cv=5)search.fit(X_train,y_train)pred=search.predict(X_test)比较时保持一致沿用例4.4的Iris划分。每个训练折单独标准化。核函数在交叉验证中选择。最终报告同一测试集表现。这里展示核心调用。分类报告应包含各类样本数,不能只挑选表现最好的一个类别。决策边界可视化的坐标要一致21选定两个特征明确横轴与纵轴。拟合变换与模型训练中拟合变换,模型使用相同特征。构造绘图网格网格与图中数据使用相同原始坐标。统一流程预测网格与测试点经过相同的变换再分类。从四个特征画二维图时可以重新训练只使用两个特征的模型,或明确其余特征固定的取值。二维图展示的是特定切面,不能直接代表全部特征空间。不要把标准化空间拟合的分类器直接用于未经变换的网格,也不要混用原始坐标与标准化坐标。贝叶斯定理:用证据更新先验22P(H|E)=P(E|H)P(H)/P(E)先验P(H)观察证据之前,对事件H的概率判断。似然P(E|H)假设H成立时,观察到证据E的概率。后验P(H|E)观察到E之后,对H的更新概率。分母P(E)可以用全概率公式计算:对互斥且穷尽的情形分别求条件概率,再按先验加权。有向无环图与条件概率表23性别是否学生是否参与活动条件参与不参与男性、学生0.80.2男性、非学生0.60.4女性、学生0.70.3女性、非学生0.10.9每一组父节点条件下,参与与不参与的概率之和为1。图中的条件依赖不自动表示因果关系。骰子案例:条件改变了样本空间24一/二1234561—A———B2AAAAA∩BA3—A—B——4—AB———5—A∩B————6BA————计数与条件概率A:至少一个骰子为2,共11种。B:两骰子之和为7,共6种。A∩B:共有2种。P(A|B)=2/6。P(B|A)=2/11。36个有序结果等可能。条件概率的分母是条件事件的样本空间,而不是始终使用36。检测案例:阳性结果的后验概率25假设状态检测异常检测无异常人数H成立991100H不成立19989790299900教材的假设参数先验概率0.1%。P(异常|H)=99%。P(异常|非H)=2%。异常者共2097人。P(H|异常)=99/2097≈4.72%。把总体设为10万人,先按真实状态分组,再按检测结果分组。这是概率教学的假设例子。99%是给定H时检出异常的条件概率,不能直接当作异常后的后验概率。先验不同,后验也会不同26本图固定什么固定P(E|H)=0.99。固定P(E|非H)=0.02。只改变先验P(H)。用同一贝叶斯公式复算。它展示先验信息的作用。多次证据相乘需要相应的条件独立假设。存在共同误差来源时,不能默认重复结果相互独立。朴素贝叶斯的条件独立假设27类别得分∝P(C)×∏ⱼP(xⱼ|C)“朴素”在哪里假设给定类别后,输入特征彼此条件独立。分别估计各特征的条件分布,再合并为类别得分。输入类型与常用模型连续数值可用GaussianNB。二元出现特征可用BernoulliNB。非负词频等可用MultinomialNB。模型假设需结合特征含义。独立性是假设,而不是由分类正确率直接证明的事实。各类别得分归一化后才是模型的后验概率。例4.6:两个关键词的邮件分类28类别邮件数含“免费”含“赢取”Spam1003025Ham20052新邮件同时含两个词Spam得分:(1/3)×0.30×0.25=0.025。Ham得分:(2/3)×0.025×0.01≈0.000167。归一化后P(Spam|这两个词)≈99.34%。先验:Spam为1/3,Ham为2/3。这里按“每封邮件是否含词”计算,且使用条件独立假设。未归一化得分不能直接称为后验概率。例4.7—4.8:GaussianNB与二维观察29fromsklearn.naive_bayesimportGaussianNBmask=d.target!=2X_nb=d.data[mask][:,[2,3]]y_nb=d.target[mask]Xn_train,Xn_test,yn_train,yn_test=train_test_split(X_nb,y_nb,test_size=0.3,stratify=y_nb,random_state=42)nb=GaussianNB().fit(Xn_train,yn_train)pred=nb.predict(Xn_test)可视化与解释两个特征用于画二维边界。观察各类别的特征分布。模型给定类别后,各特征分别拟合高斯分布。朴素结构图体现模型假设。此处保留d和原Iris四特征划分,另用X_nb等变量。条件结构图不表示软件已经学习出了因果网络。文本分类:TF-IDF与MultinomialNB30fromsklearn.feature_extraction.textimport(TfidfVectorizer)fromsklearn.naive_bayesimportMultinomialNBtext_clf=make_pipeline(TfidfVectorizer(token_pattern=r'(?u)\b\w+\b'),MultinomialNB())text_clf.fit(train_texts,train_labels)print(text_clf.predict(test_texts))输入需要怎样准备模拟中文邮件先分词并以空格分隔。例如“免费领取奖品”。TF-IDF得到非负词语权重。MultinomialNB使用非负输入。class_prior可指定先验。向量器只在训练文本上fit。自定义class_prior时,核对类别顺序与模型的classes_一致。集成学习:组合多个模型的输出31同一个待预测样本基模型A:类别1基模型B:类别0基模型C:类别1投票结果:1组合可以使用投票、概率平均或加权方式。基模型需要具有一定差异,组合收益仍要通过验证确认。Bagging:有放回抽样后并行训练32训练集ABCD子样本1:AACD基模型1子样本2:BCCD基模型2子样本3:ABDD基模型3汇总预测字母记录仅演示有放回抽样,同一条记录可以多次出现。每个基模型在各自的抽样数据上训练。例4.9:Bagging分类的关键调用33fromsklearn.ensembleimportBaggingClassifierbag=BaggingClassifier(estimator=DecisionTreeClassifier(max_depth=3),n_estimators=10,max_samples=0.8,bootstrap=True,random_state=42)bag.fit(X_train,y_train)pred=bag.predict(X_test)print(accuracy_score(y_test,pred))可以进一步观察estimators_保存基模型。比较各基模型与整体预测。若抽取了部分特征,逐模型预测需使用对应列。在同一测试集比较。accuracy_score从sklearn.metrics导入。这里的浅树深度仅作示范,正式选参在训练内部完成。随机森林:再加入特征选择的随机性34观察点Bagging决策树随机森林样本每棵树有自己的抽样集通常同样使用Bootstrap抽样候选特征按基树及外层抽样配置决定每个分裂节点随机选候选特征组合汇总基模型预测汇总多棵树的预测目标降低不稳定模型的方差通过额外随机性增加树的差异OOB使用每棵树未抽到的训练样本作内部估计。它不等于最终独立测试,仍需核对评价口径。例4.11:随机森林与OOB输出35fromsklearn.ensembleimportRandomForestClassifierrf=RandomForestClassifier(n_estimators=100,max_features='sqrt',bootstrap=True,oob_score=True,class_weight='balanced',random_state=42)rf.fit(X_train,y_train)pred=rf.predict(X_test)print(rf.oob_score_)print(rf.feature_importances_)怎样解释输出OOB分数是内部估计。默认分数为准确率。feature_importances_给出基于不纯度的重要性。也可用置换重要性检查。杂质重要性可能偏好连续或高基数特征。重要性表示模型依赖程度,不等于变量的因果效应。AdaBoost:逐轮调整样本权重361.初始权重初始化样本权重。2.训练弱分类器得到本轮预测,检查分类错误。3.更新样本权重提高本轮难分样本的关注度,再训练后续分类器。4.加权合并按分类器权重,合并各轮预测。与Bagging的关键区别Bagging的基模型通常可并行训练。AdaBoost后续训练依赖前轮结果。训练数据中的噪声与错误标签也可能得到较高权重。不同Boosting方法更新训练目标的方式不同,不能把所有Boosting都概括为同一套样本加权公式。图4-15Boosting流程图例4.10:AdaBoost与基模型权重37fromsklearn.ensembleimportAdaBoostClassifierada=AdaBoostClassifier(estimator=DecisionTreeClassifier(max_depth=1),n_estimators=50,learning_rate=1.0,random_state=42)ada.fit(X_train,y_train)pred=ada.predict(X_test)print(ada.estimator_weights_)这里使用决策树桩每棵弱树的深度为1。学习率与迭代轮数共同影响拟合。estimator_weights_记录各轮分类器的权重。结合算法定义解释权重。基学习器需要支持样本权重。测试表现不能用单棵树权重的大小直接推断。GBDT:逐步优化分类损失38Fₘ(x)=Fₘ₋₁(x)+ηhₘ(x)每轮新增什么在当前模型基础上增加一棵树。树拟合损失对当前预测的负梯度。学习率η控制这棵树的更新幅度。多轮累加得到分类分数。“拟合残差”的使用范围平方损失下,负梯度与残差相关。分类任务使用对应分类损失,不能一概写成直接拟合y−ŷ。最终分数再转换为类别或概率。树深、学习率与迭代轮数共同决定模型复杂度。选择这些参数时使用训练内部的验证。例4.12:GradientBoosting分类39fromsklearn.ensembleimport(GradientBoostingClassifier)gbdt=GradientBoostingClassifier(n_estimators=100,learning_rate=0.1,max_depth=3,random_state=42)gbdt.fit(X_train,y_train)pred=gbdt.predict(X_test)proba=gbdt.predict_proba(X_test)保留两种输出pred是类别标签。proba每列对应一个类别。列的顺序由classes_确定。多分类报告需区分各类指标与平均指标。Iris例子沿用统一的数据划分。若比较多种模型,先确定共同的验证与最终测试方案。例4.13:LightGBM与验证集40importlightgbmaslgbmodel=lgb.LGBMClassifier(n_estimators=500,learning_rate=0.05,num_leaves=15,random_state=42)model.fit(X_fit,y_fit,eval_set=[(X_val,y_val)],callbacks=[lgb.early_stopping(20)])pred=model.predict(X_test)print(classification_report(y_test,pred))实现特点与控制项用直方图等方式提高效率。按叶子选择分裂方向。num_leaves控制叶节点数。min_child_samples约束叶样本数。早停依据独立验证部分。本页X_fit和X_val从训练部分再划分。运行需安装lightgbm,最终测试集不用于早停或迭代轮数选择。例4.9—4.13:统一比较的报告框架41方法关键设置比较时记录Bagging基树、抽样比例、树数整体与基模型表现随机森林候选特征数、树数、叶约束测试表现、OOB与重要性AdaBoost基学习器、轮数、学习率测试表现与基模型权重GBDT树深、轮数、学习率测试表现与模型复杂度LightGBM叶数、学习率、早停最佳迭代与测试表现使用相同数据划分与评价口径。验证结果用于选方案,测试结果用于报告,不能反复用测试集挑模型。混淆矩阵:先固定正类与阈值42记录真实y分数阈值0.5110.951200.851310.751400.651510.551600.450710.250800.100实际/预测预测0预测1实际0TN=2FP=2实际1FN=1TP=3行表示实际类别,列表示预测类别。本章在本例中把y=1记为正类。TP是真正,TN是真负,FP是假正,FN是假负。报告矩阵时给出标签顺序,避免把行列或正类方向读反。准确率、精确率、召回率与F143指标计算式本例结果准确率(TP+TN)/N5/8=62.5%精确率PTP/(TP+FP)3/5=60.0%召回率RTP/(TP+FN)3/4=75.0%F12PR/(P+R)2/3≈66.7%精确率关注预测为正的样本,召回率关注真实正类。F1不使用TN,选择指标需结合任务目标。ROC曲线与ROC-AUC44曲线怎样产生逐步降低正类判定阈值。FPR=FP/(FP+TN)。TPR=TP/(TP+FN)。本例ROC-AUC=0.625。AUC评价整体排序能力。AUC取值为0至1,随机排序通常以0.5为参照。较高AUC不保证某个阈值的分类更好。PR曲线、AP与梯形积分面积45两种汇总口径AP按召回率增量加权精确率。本例AP≈0.710。梯形积分采用线性连接,本例面积≈0.667。二者不能直接混为同一个数。本例正类比例为0.5。比较PR表现要同时说明正类、类别比例和面积计算方式。阈值选择:把错误换算为成本46FN成本为FP的5倍总成本=5FN+FP。在本例候选阈值中,0.25的成本最低,为3。阈值选择使用验证数据。最后在测试数据上评价。这些分数用于演示成本计算。最低成本阈值取决于错误代价、样本分布和模型分数,不固定为0.5。例4.14:核对乳腺数据的正类方向47fromsklearn.datasetsimportload_breast_cancerb=load_breast_cancer()y=(b.target==0).astype(int)#恶性为1Xtr,Xte,ytr,yte=train_test_split(b.data,y,test_size=0.3,stratify=y,random_state=42)clf=make_pipeline(StandardScaler(),SVC(kernel='linear',probability=True,random_state=42))clf.fit(Xtr,ytr)p=clf.predict_proba(Xte)[:,1]为什么先核对标签原始数据0表示恶性,1表示良性。本页将恶性重编码为1。因此p对应恶性的预测概率。ROC、PR均使用同一正类。用roc_auc_score、precision_recall_curve等评价,并报告实际运行结果。教学数据上的指标不等于临床验证结论。过拟合与欠拟合的判断48观察点欠拟合过拟合训练表现也不理想往往很好验证表现仍不理想与训练表现差距较大优先检查特征是否有效、模型表达能力复杂度、噪声、数据泄漏可能的调整改进特征或适当增加复杂度剪枝、正则化、改善验证设计先检查数据质量和划分方式,再调整复杂度。增加数据量并不自动解决所有欠拟合或泄漏问题。图4-17过拟合和欠拟合类别不平衡时,准确率可能掩盖漏检49如果全部预测为负准确率=92%。正类召回率=0。8个正类全部漏检。还需报告PR、各类召回率,并检查混淆矩阵与业务成本。类别权重、样本权重和重采样都应放在训练部分处理。测

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论