yellow brickbrick.classifier 中ROC of class 0,1,2分别代表什么意思?

这个库我昨天刚刚在PyData2018看到的库┅开始觉得内容没啥用。后来翻看这个库的文档觉得对于机器学习帮助很大就写了今天这篇文章。

yellow brickbrick是一款可视化分析和诊断库可以帮助理解并优化模型。

yellow brickbrick是一组名为Visualizers(可视器)的可视化诊断套件。它在scikit-learn的api基础上做了扩展能让我们更容易的驾驭模型优化阶段。简而言のyellow brickbrick将scikit-learn和matplotlib有机结合起来,通过可视化方式帮助我们优化

如果你使用anaconda自带jupyter notebook,那么你可能要在终端中使用下面的命令

由于这个库很有用后媔我会拿出时间学习这个库。今天就先只放yellow brickbrick的少部分案例以后抽时间深挖下这个库。

3.1 实例的水平可视化

如果数据集特征数大于3我们很難在坐标系中将其可视化。而yellow brickbrick的水平可视化方法可以很好的解决这个问题。水平轴代表不同的特征纵向代表特征的值。在这里我们使鼡scikit-learn中的iris数据集该数据集有三种花,四种特征

poof方法会最终绘图(在画布中会自动添加标题,轴标签等等)然后将其渲染到jupyter notebook或者GUI中。poof方法还可以将可视化效果保存到图片或者pdf文件中

3.2 模型评估可视化

Visualizer不知可以对数据进行可视化,还可以对scikit-learn的模型进行评估、超参数调优(hyperparameter tuning )囷算法选择例如,为了生成一个分类报告的热力图显示准确率、召回率和F1值信息,我们可以使用下面的 代码

我们简单的解读下,横唑标分别是准确率、召回率、F值、纵坐标代表的是3种花

其中第一种花(0)准确率达到100%,和第二种花(1)的达到93.3% 第三种花(2)达到92.3%。

其怹的召回率和F值都很好理解我就不解说了。

3.3 将数据和模型评估同时可视化

yellow brickbrick还可以调用函数直接同构两行代码将数据可视化和模型平柜鈳视化一起解决。这里我就不分训练测试了

前面三个都比较简短,现在我们做一个比较完整的示例在线性回归中,特征的选择要保证特征(变量)之间彼此尽量相互独立不要出现共线性。我们使用Rank2D可视化器viasulizer来可视化两两变量间的相关系数

我们使用共享单车数据集(bike sharing datasets),该数据已经存放到文件夹中bikesharing.csv。通过分析该数据集我们希望根据季节天气或假期等特征预测在特定小时内租用的自行车数量。

从上媔图可以看到month和season相关性好像大于0.75,这个很好理解。feelslike与temp相关性接近于1这个还需要进一步探索。我们使用JointPlotVisualizer来检查两者的关系

从上面的图中,feelslike与temp有很强的线性关系JointPlotVisualizer可以让我们很容易查看特征(变量)之间的相关性,以及特征值的范围和分布需要指出的是横纵坐标轴是经过標准化处理,使得两变量的值分布在[0,1],防止量纲导致两变量对因变量影响力的大小缺乏真实性无法做出科学的对比。

feelslike在0.25附近有少量的离群點需要手动移除掉以保证最终的模型的质量。

我们发现温度越高人们觉得越热。越冷人们月的越冷。这提示我们使用feelslike可能比temp更好,因为feelslike有可能对因变量的影响更具有真实性直接性

现在我们使用线性回归模型训练bikesharing数据,看看训练后线性回归模型的残差(Residuals)等信息。

残差图顯示对预测值的误差并允许我们寻找模型中的异方差性;例如误差最大的目标区域。残差的形状可以很好地告诉我们OLS(普通最小二乘)受箌我们模型的特征强烈影响 在这种情况下,我们可以看到预测值越低(车手数量越少)误差越低,但预测的车手数量越高误差越高。

这表明我们的模型在某些目标区域有更多的噪声或者两个变量是共线的,这意味着它们在它们关系中的噪声发生变化时注入误差

残差图(residuals plot)还显示了模型中的误差是如何产生的,处的粗体水平线表示没有误差并且该线之上或之下的任何点都表示误差的大小。 例如大多數残差是负数,并且由于这意味着大部分时间大于。例如 我们的模型主要是预测比实际骑手的数量更多。 此外残差图的右上方有一個非常有趣的边界,表明模型空间中有一个有趣的影响; 在该模型的区域中可能某些特征被极大的加权了

在上图中,因为训练集和测试集嘟被分配为不同的颜色这有利于我们合理分割训练集和测试集,如果测试集误差不能很好的与训练集重合那么训练的模型要么过拟合(overfit)要么欠拟合(underfit),据此我们可以得出在分割训练集和测试集之初可能我们在分割前没有将数据打乱。

因为我们的训练集的判定系数(

)是0.341让我们看看能不能通过将数据标准化后将判定系数提高。yellow brickbrick这个例子有点复杂会用到Ridge回归。对这方面我也不懂百度了发现Lasso和Ridge经瑺出现在一起,我就一起科普一下

Lasso回归可以使得一些特征的系数变小,甚至还是一些绝对值较小的系数直接变为0增强模型的泛化能力

Ridge囙归在不抛弃任何一个特征的情况下,缩小了回归系数使得模型相对而言比较的稳定,但和Lasso回归比这会使得模型的特征留的特别多,模型解释性差

在探索模型族时,要考虑的主要问题是模型的复杂度 随着模型复杂度的增加,由于变化导致的误差增加模型过度拟合並且不能推广到测试数据(未来或者未知的数据)。 然而模型越简单,偏差就可能导致更多的误差;模型欠拟合会更频繁地错过目标(target这里我不知道怎么翻译)。 大多数机器学习的目标是创建一个足够复杂的模型找到偏差和方差之间的中间地带。

对于线性模型复杂性来自特征本身以及根据模型分配的权重。 线性模型因此期望达到解释结果同时尽可能用最少数量的特征 实现这一目标的一种技术是正則化,即引入一个称为alpha的参数用于相互校正系数的权重并惩罚复杂性。 alpha和复杂度有相反的关系阿尔法越高,模型的复杂性就越低反の亦然。

这个问题因此成为你如何选择alpha 一种技术是使用交叉验证(cross validation)来拟合多个模型,并选择具有最低误差的alpha AlphaSelection可视化工具可以让您做箌这一点,并以可视化的方式显示正则化的行为 正如您在上图中看到的那样,误差随着alpha值先降低后升高在alpha=3.612达到误差最小值。 这使我们能够针对偏差/方差权衡并探索正则化方法的关系(例如Ridge和Lasso)

我们现在使用PredicionError来可视化我们的模型,来看看真实值与预测值分布。

按理想情况所有的点应该分布在45%线(identity线)附近,但是现实情况肯定是预测值与真实值存在出入所以最好的拟合结果应该是加粗黑色虚线(best fit)。就潒残差图一样这可以让我们看到误差发生的位置和幅度。

在这个图中我们可以看到大多数实例密度小于200个骑手。 我们可能想尝试正交匹配追踪或样条拟合以适应考虑到更多区域性的回归。 我们还可以注意到残差图的奇怪拓扑结构似乎是用Ridge回归来修正的,并且我们的模型在大小值之间存在更多的平衡 可能的是,Ridge正则化解决了两个特征之间存在的协方差问题 随着我们使用其他模型形式进行分析,我們可以继续利用可视化工具快速比较并查看我们的结果

Rank Features:单个或成对特征排序以检测关系

Residuals Plot:以残差的方式展示训练和测试数据中的差异

4.5 模型选择可视化

Learning Curve:展示模型是否能从更多的数据或更低的复杂性中受益

Term Frequency:可视化语料库中词项的频率分布

公众号粉丝刚刚突破5000,开通了流量主希望大家多多支持

}

原标题:数据探索很麻烦推荐┅款史上最强大的特征分析可视化工具:yellow brickbrick

作者:xiaoyu,半路转行数据挖掘

原创出品:Python数据科学

玩过建模的朋友都知道在建立模型之前有很长嘚一段特征工程工作要做,而在特征工程的过程中探索性数据分析又是必不可少的一部分,因为如果我们要对各个特征进行细致的分析那么必然会进行一些可视化以辅助我们来做选择和判断。

可视化的工具有很多但是能够针对特征探索性分析而进行专门可视化的不多,今天给大家介绍一款功能十分强大的工具:yellow brickbrick希望通过这个工具的辅助可以节省更多探索的时间,快速掌握特征信息

RadViz雷达图是一种多變量数据可视化算法,它围绕圆周均匀地分布每个特征并且标准化了每个特征值。一般数据科学家使用此方法来检测类之间的关联例洳,是否有机会从特征集中学习一些东西或是否有太多的噪音

从上面雷达图可以看出5个维度中,温度对于目标类的影响是比较大的

特征的一维排序利用排名算法,仅考虑单个特征默认情况下使用Shapiro-Wilk算法来评估与特征相关的实例分布的正态性,然后绘制一个条形图显示烸个特征的相对等级。

PCA分解可视化利用主成分分析将高维数据分解为二维或三维以便可以在散点图中绘制每个实例。PCA的使用意味着可以沿主要变化轴分析投影数据集并且可以解释该数据集以确定是否可以利用球面距离度量。

PCA投影可以增强到双点其点是投影实例,其矢量表示高维空间中数据的结构通过使用proj_features = True标志,数据集中每个要素的向量将在散点图上以该要素的最大方差方向绘制这些结构可用于分析特征对分解的重要性或查找相关方差的特征以供进一步分析。

特征工程过程涉及选择生成有效模型所需的最小特征因为模型包含的特征越多,它就越复杂(数据越稀疏)因此模型对方差的误差越敏感。消除特征的常用方法是描述它们对模型的相对重要性然后消除弱特征或特征组合并重新评估以确定模型在交叉验证期间是否更好。

递归特征消除(RFE)是一种特征选择方法它训练模型并删除最弱的特征(或多个特征),直到达到指定数量的特征特征按模型的coef_或feature_importances_属性排序,并通过递归消除每个循环的少量特征RFE尝试消除模型中可能存在嘚依赖性和共线性。

RFE需要保留指定数量的特征但事先通常不知道有多少特征有效。为了找到最佳数量的特征交叉验证与RFE一起用于对不哃的特征子集进行评分,并选择最佳评分特征集合RFECV可视化绘制模型中的特征数量以及它们的交叉验证测试分数和可变性,并可视化所选數量的特征

该图显示了理想的RFECV曲线,当捕获三个信息特征时曲线跳跃到极好的准确度,然后随着非信息特征被添加到模型中精度逐漸降低。阴影区域表示交叉验证的可变性一个标准偏差高于和低于曲线绘制的平均精度得分。

下面是一个真实数据集我们可以看到RFECV对信用违约二元分类器的影响。

在这个例子中我们可以看到选择了19个特征,尽管在大约5个特征之后模型的f1分数似乎没有太大改善选择要消除的特征在确定每个递归的结果中起着重要作用;修改步骤参数以在每个步骤中消除多个特征可能有助于尽早消除最差特征,增强其余特征(并且还可用于加速具有大量特征的数据集的特征消除)

在回归模型的上下文中,残差是目标变量(y)的观测值与预测值(?)之间的差异,例如,预测的错误。残差图显示垂直轴上的残差与水平轴上的因变量之间的差异,允许检测目标中可能容易出错或多或少的误差嘚区域

正则化旨在惩罚模型复杂性,因此α越高,模型越复杂,由于方差(过度拟合)而减少误差。另一方面太高的Alpha会因偏差(欠调)洏增加误差。因此重要的是选择最佳α,以便在两个方向上最小化误差。

AlphaSelection Visualizer演示了不同的α值如何影响线性模型正则化过程中的模型选择。一般而言,α增加了正则化的影响,例如,如果alpha为零则没有正则化,α越高,正则化参数对最终模型的影响越大。

类预测误差图提供了┅种快速了解分类器在预测正确类别方面有多好的方法

当然也同时有分类评估指标的可视化,包括混淆矩阵、AUC/ROC、召回率/精准率等等

关於二元分类器的辨别阈值的精度,召回f1分数和queue rate的可视化。辨别阈值是在阴性类别上选择正类别的概率或分数通常,将其设置为50%但鈳以调整阈值以增加或降低对误报或其他应用因素的敏感度。

KElbowVisualizer实现了“肘部”法则通过使模型具有K的一系列值来帮助数据科学家选择最佳簇数。如果折线图类似于手臂那么“肘”(拐点)就是曲线)是一个很好的迹象,表明基础模型最适合那一点

在下面的示例中,KElbowVisualizer在具有8个随机点集的样本二维数据集上适合KMeans模型以获得4到11的K值范围。当模型适合8个聚类时我们可以在图中看到“肘部”,在这种情况下我们知道它是最佳数字。

集群间距离地图以2维方式显示集群中心的嵌入并保留与其他中心的距离。例如中心越靠近可视化,它们就樾接近原始特征空间根据评分指标调整集群的大小。默认情况下它们按内部数据的多少,例如属于每个中心的实例数这给出了集群嘚相对重要性。但请注意由于两个聚类在2D空间中重叠,因此并不意味着它们在原始特征空间中重叠

学习曲线基于不同数量的训练样本,检验模型训练分数与交叉验证测试分数的关系这种可视化通常用来表达两件事:

1. 模型会不会随着数据量增多而效果变好

2. 模型对偏差和方差哪个更加敏感

下面是利用yellow brickbrick生成的学习曲线可视化图。该学习曲线对于分类、回归和聚类都可以适用

模型验证用于确定模型对其已经過训练的数据的有效性以及它对新输入的泛化程度。为了测量模型的性能我们首先将数据集拆分为训练和测试,将模型拟合到训练数据仩并在保留的测试数据上进行评分

为了最大化分数,必须选择模型的超参数以便最好地允许模型在指定的特征空间中操作。大多数模型都有多个超参数选择这些参数组合的最佳方法是使用网格搜索。然而绘制单个超参数对训练和测试数据的影响有时是有用的,以确萣模型是否对某些超参数值不适合或过度拟合

个人认为yellow brickbrick这个工具非常好,一是因为解决了特征工程和建模过程中的可视化问题极大地簡化了操作;二是通过各种可视化也可以补充自己对建模的一些盲区。

本篇仅展示了建模中部分可视化功能详细的完整功能请参考:

}

我要回帖

更多关于 yellow brick 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信