如何获取模型报告?
本平台不仅可以将训练完成的模型下载下来进行后续的机器学习工作,还可以通过可视化的方式更加直观的展示当前模型的相关重要信息,这对机器学习模型的研究提供了重要依据。
用户可以在建模列表中对应的建模任务中点击 【下载报告】 即可获取模型报告,如下图:
下载之后可以获取到一个名称为report_*.zip压缩文件,通过解压工具解压之后即可获取模型报告内容。
模型报告解读
本平台会自动为用户生成压缩之后的模型报告,解压缩之后的内容大致如下:
下面我们会通过一个分类任务的模型报告为大家如何查阅报告中的相关内容。
本平台提供的报告包括了训练数据的特征空间分布、模型可视化、验证数据的各类指标三个方面。
一、特征空间分布
特征空间分布可以简单分为两个方面,可以简单地分为训练前和后。训练前,通过特征空间的分布,从而去选择合适的特征和模型 进行训练。例如可以通过大部分特征是否有线性关系去选择模型。训练后,如果使用的是树模型的话,我们将得到每个特征的贡献值,可以通过这个贡献程度来反复调整我们训练的模型,也可以通过特征重要性来体现生成特征的有效性。
1. 训练前的数据分析
1.1 热力图 (Heat Map)
这里计算的相关系数是皮尔逊相关系数(Pearson correlation coefficient),其公式如下:
ρX,Y=σXσYcov(X,Y) 皮尔逊相关系数衡量了两个变量之间的线性相关性,其取值范围为-1到1。具体而言:
1 表示完全正相关:一个变量增加,另一个变量也以相等的比例增加。
-1 表示完全负相关:一个变量增加,另一个变量以相等的比例减少。
1.2 特征核密度图 (Kernel Density Estimation, KDE)
核密度估计图可以帮助你了解单个变量的分布情况,包括峰值和分布的形状。可以从以下二个方面进行对数据的分析。
峰值(Peak): 峰值表示概率密度估计图中最高点的高度。
在KDE中,峰值越高,表示在该位置的数据点密度越大,即该位置附近的数据点更为集中。
峰值的高度并不直接给出概率值,但可以用于比较不同位置的数据密度。
整体形状: 概率密度估计图的整体形状反映了数据分布的趋势。
例如,平坦的KDE图表明数据相对均匀地分布,而具有峰值和波动的图形可能表示数据在某些区域更为密集。
1.3 箱线图 (Box Plot)
在分析箱线图时,你可以关注以下几个关键的要素:
箱体(Box): 箱体显示了数据的四分位数范围,即数据的中间50%。
箱体的底部和顶部分别表示第1四分位数(Q1,下四分位数)和第3四分位数(Q3,上四分位数),而箱体内部的线表示中位数(Q2)。
须(Whiskers): 须延伸从箱体的两端,表示数据的最大值和最小值,但不考虑异常值。
须的长度通常基于数据的分布,具体的计算方式可能有所不同。
异常值(Outliers): 在箱线图中,通常将超出须的1.5倍四分位距的数据点定义为异常值,并用点表示。
整体形状: 观察箱线图的整体形状可以提供关于数据分布的信息。
例如,箱体的长度和位置,须的延伸情况,以及异常值的分布等。
1.4 特征和标签的特征曲线图
为了方便比较,我们将特征归一化到[1, 2]之间,把标签归一化到[0, 1]之间。
2.训练后的特征分析
2.1 特征重要性
每个特征对于树模型提供的贡献程度,以下是常见树模型的特征重要性分数的简介。
LightGBM:
LightGBM使用基于树的学习算法,特征重要性主要基于分裂增益(Split Gain)。
CatBoost:
CatBoost也是基于树的学习算法,其特征重要性计算方式与LightGBM相似,主要基于分裂增益。
XGBoost:
XGBoost通过计算特征的增益(Gain)来评估特征的重要性。
XGBoost还提供了一种基于覆盖度(Coverage)的特征重要性计算方式,覆盖度表示每个特征在树中的使用频率。
随机森林:
随机森林使用基尼不纯度(Gini impurity)或信息增益(Information Gain)等指标来选择最佳的分裂特征。
这些次数的总和或者平均值可以用于衡量特征的重要性。
极限树(Extra Trees):
极限树是随机森林的一种变体,它在节点分裂时使用了更多的随机性。
3. 如何数据分析
机器学习的一般人工构建流程如下:
(1)数据分析,了解数据的分布情况,例如:
查看是否有冗余:一般情况下,如果热力图中特征之间的相关系数绝对值大于0.8,就应该慎重考虑特征选择。
查看特征和标签的相关性:一般情况下,如果热力图中特征和标签之间的相关系数越高特征重要性可能越高。
查看特征的概率密度分布:判断数据是否密集,密集可能导致区分度很小。
(2)特征工程
通过第一步的数据分析进行特征的生成,例如:特征A和特征B相关度很低,那么将特征A和特征B简单的组合(比如加减乘除)得到特征C,那么特征C可能对于模型的帮助会很大。
举一个简单的例子,例如我们评测身体的肥胖程度。我们有身高h,体重w这两个特征,通过特征组合发现了w÷h2这样一个特征。
这个特征对于分类有重大的贡献,那这就是BMI,给他赋予身体质量指数的物理含义,用于衡量人体肥胖程度。
(3)模型调优
模型调优主要分为两部分:选择最合适的模型和选择最优的模型参数。
特征工程和模型调优一般是一起的,可以简单理解,不同的数据集,那么就应该对应不同的最优模型。那这两个步骤将需要花费大量的时间和精力去实现。
二、模型可视化
1. 树模型的结构可视化
下面介绍多种树模型的显示方式。
树模型图的解释
选择特征Xi,特征Xi会根据阈值Si进行分裂,左边是小于等于阈值Si,右边则反之。
如果分裂的样本中得到较好的结果,则停止分裂,反之继续选择特征Xi分裂。
(1)树模型的竖向展开图
(2)树模型的横向展开图
(3)树模型的简化展开图
(4)树模型的浅层展开图
2. 决策树的预测路径
决策树的全部预测路径
预测路径已用橙色的框标示出来,随机抽一个测试集的样本并在下方列出样本的具体信息。
决策树的预测路径简化
3. 树叶子节点样本树的统计
三、验证集指标
1. ROC曲线
ROC曲线(Receiver Operating Characteristic Curve)是一种用于评估分类器性能的图形工具。主要关注两个重要的性能指标:True Positive Rate (TPR) 和 False Positive Rate (FPR)。
意义和用途:
模型比较: ROC曲线提供了一种比较不同模型性能的可视化工具。曲线下的面积(AUC)用于量化不同模型在整个ROC空间下的性能,AUC越大,表示模型性能越好。
阈值选择: ROC曲线可以帮助选择分类阈值。不同应用场景可能对False Positive Rate和True Positive Rate有不同的关注程度,通过调整分类阈值,可以在这两者之间找到平衡。
诊断性能: ROC曲线能够展示模型在不同工作点下的性能,从而帮助你理解模型的诊断性能,特别是在二分类问题中。
不受类别不平衡影响: ROC曲线对于类别不平衡的问题更为鲁棒,因为它是基于真正例率和假正例率的比例关系。
2. 混淆矩阵
真正例(True Positives,TP): 模型正确地将正例样本预测为正例。
真负例(True Negatives,TN): 模型正确地将负例样本预测为负例。
假正例(False Positives,FP): 模型将负例样本错误地预测为正例。
假负例(False Negatives,FN): 模型将正例样本错误地预测为负例。
混淆矩阵的意义和用途:
性能评估: 混淆矩阵提供了一个全面的性能评估,可以直观地了解模型在不同类别上的预测准确性。
精确度(Accuracy)计算: 精确度是分类器正确预测的总样本数占总样本数的比例,可以通过混淆矩阵计算。Accuracy=TotalSamplesTruePositives+TrueNegatives,该任务的准确率为: 0.7847533632286996。
召回率(Recall)计算: 召回率(也称为敏感度或真正例率)表示模型正确识别的正例样本在所有实际正例样本中的比例。Recall=TruePositives+FalseNegativesTruePositives,该任务的召回率为: 0.7847533632286996。
精确度(Precision)计算: 精确度表示模型预测为正例的样本中,实际为正例的比例。Precision=TruePositives+FalsePositivesTruePositives,该任务的精确率为: 0.7839107317605237。
F1分数计算: F1分数是精确度和召回率的调和平均,用于综合考虑模型的准确性和全面性。F1=Precision+Recall2×Precision×Recall,该任务的f1为: 0.7842670856605463。
附录-1:高级特征与特征贡献度对应表
高级特征
AdvFeat1:(Ticket÷Fare)÷(cos(Ticket))
AdvFeat2:(cos(Fare))÷(Ticket÷Age)
AdvFeat3:((cos(Fare))÷(sin(Ticket)))÷(Min((Fare÷Age)(AggMax(Age,Cabin))
AdvFeat4:(cos(Fare))×(Ticket÷Age)
AdvFeat5:Min(((sin(Ticket))−(Age+Ticket)))((cos(Fare))÷(sin(Ticket))))
AdvFeat6:((sin(Ticket))×(cos(Fare)))×(Max((Age×Ticket)(Ticket÷Fare)))
AdvFeat7:(cos(Fare))÷(Fare×Ticket)
AdvFeat8:(cos(Ticket))÷(Fare+Ticket)
AdvFeat9:(cos(Ticket))÷(Fare×Ticket)
AdvFeat10:(Ticket÷Age)÷(cos(Fare))
AdvFeat11:(Fare×Ticket)÷(cos(Ticket))
AdvFeat12:(Fare+Ticket)−(sin(Ticket)))
AdvFeat13:(Ticket÷Age)+(Fare+Ticket))
AdvFeat14:(cos(Fare))−(Fare+Ticket))
AdvFeat15:(Ticket÷Fare)÷(cos(Fare))
AdvFeat16:(sin(Ticket))÷(Ticket÷Age)
AdvFeat17:(cos(Fare))×(Fare×Ticket)
AdvFeat18:(Fare+Ticket)÷(cos(Ticket))
AdvFeat19:(Fare+Ticket)÷(cos(Fare))
AdvFeat20:Max(((cos(Fare))+(cos(Ticket))))(Min((Fare×Ticket)(Fare÷Age))))
AdvFeat21:((cos(Ticket))−(sin(Ticket))))−(Max((Age×Ticket)(Ticket÷Fare))))
AdvFeat22:Max(((cos(Fare))−(cos(Ticket))))((cos(Ticket))÷(sin(Ticket))))
AdvFeat23:(cos(Fare))÷(Fare+Ticket)
AdvFeat24:((cos(Fare))×(cos(Ticket)))×(sin(sin(Ticket)))
AdvFeat25:(sin(Ticket))÷(Fare×Ticket)
AdvFeat26:(Fare×Ticket)÷(cos(Fare))
AdvFeat27:(cos(Fare))+(Fare+Ticket))
AdvFeat28:Max((cos(Fare))(cos(Ticket)))
AdvFeat29:Count(Sex)
特征贡献度
AdvFeat1:35.55555555555556
AdvFeat2:62.22222222222222
AdvFeat3:68.88888888888889
AdvFeat4:31.11111111111111
AdvFeat5:11.11111111111111
AdvFeat6:20.0
AdvFeat7:17.77777777777778
AdvFeat8:40.0
AdvFeat9:35.55555555555556
AdvFeat10:24.444444444444443
AdvFeat11:26.666666666666668
AdvFeat12:55.55555555555556
AdvFeat13:22.22222222222222
AdvFeat14:26.666666666666668
AdvFeat15:31.11111111111111
AdvFeat16:37.77777777777778
AdvFeat17:15.555555555555555
AdvFeat18:44.44444444444444
AdvFeat19:17.77777777777778
AdvFeat20:15.55555555555555
AdvFeat21:44.44444444444444
AdvFeat22:46.666666666666664
AdvFeat23:22.22222222222222
AdvFeat24:28.888888888888886
AdvFeat25:40.0
AdvFeat26:13.333333333333334
AdvFeat27:20.0
AdvFeat28:53.333333333333336
AdvFeat29:11.11111111111111
附录-2:模型报告示例