在进行数据预处理时,有一个重要的步骤可以帮助我们直观地了解数据状
况,那就是数据可视化。有时候,数据通过表格的形式展现,很难看清楚特征
之间的关系。因此在平时的工作中,常用数据可视化的方式突出数据的特点。
数据可视化是产品经理的好帮手,你需要了解有哪些可视化的方法,各个方法
之间的区别。这些工作能够引导我们构建模型,帮助我们理解机器学习模型的
机制。数据可视化的图表类型有很多,这里我们只讲最常用的直方图与散点
图。
3.2.1 直方图
直方图(Histogram)又称质量分布图,由一系列高度不等的纵向矩形表
示各类数据的分布情况。在统计数据时,按照频数分布表,在平面直角坐标系
中,用横轴标出每个组的端点,用纵轴表示频数,每个矩形的高代表对应的频
数,如图 3-8 所示。直方图是数值数据分布的图形展示方式,用于描述连续
型变量的分布情况。构建直方图,首先将取值范围分段,即将取值区间分为一
系 列 间 隔 , 例 如 身 高 在 “170cm 到 180cm 之 间 ” , 可 分 为 [170,175) 、
[175,180]两个区间,然后统计每个区间出现的频数,作频数分布表。最后作
直方图。以组距为?长,以频数为高,作各组的矩形图。

直方图的优点在于能直观地显示各组取值的分布情况,我们可以很容易看
出各组数据之间的差异。甚至可以通过柱形的变化找出其统计规律,以便对其
总体分布特征进行推断。很多读者会把直方图与柱状图弄混淆,这两个图表在
表现形式上非常相似,但实际上有很大不同。主要区别在于直方图用于描述连
续型数据,而柱状图用于描述离散型数据,例如身高的变化用直方图表示,家
庭人口数量用柱状图表示。另外值得注意的是,直方图能够表示多个变量,而
柱状图只能表示一个变量。
3.2.2 散点图
散点图(Scatter Plot)是确定两个变量之间是否存在联系最有效的图形
方法。构造散点图时,每个数值被视为一个坐标点,画在坐标系上。散点图将
序列显示为一组点,值由点在图表中的位置表示,类别由图表中的不同标记表
示,如图3-9所示。散点图通常用于比较不同类别的聚合数据。
使用散点图矩阵可以检查两两不同特征之间的关系。我们可从散点图矩阵
中找出协方差、线性关系、二次关系或者指数关系。另外,散点图还可用于观
察点簇和离群点,找到异常点或考察点与点之间相关联系的可能性。可用两组
数据构成多个坐标点,考察坐标点的分布情况,判断两变量之间的联系。在简
单的分类任务中我们经常使用散点图观察样本的位置,找到偏离点或被错误分
类的样本。

3.3 常用的评价模型效果指标
评价指标是判断模型效果的衡量标准,它是机器学习中非常重要的部分,
也是产品经理必须掌握的重点内容。不同的机器学习任务采用不同的评价指
标,对于同一种机器学习任务,在不同场景下也会采用不同的评价指标 。
例如,在检测垃圾邮件这个场景中,由于这是一个典型的二分类问题,所
以可以用精确率和AUC曲线这两个指标判断模型的效果。在人脸识别场景中,
使用误识率、拒识率和ROC曲线这三个指标评判模型的效果。不同指标的着重
点不一样,一个指标在不同场景?的适用性可能不一样,产品经理需要学习不
同指标的特性,在项目中根据实际需要选择不同的评价指标。?面我们重点讲
解一些产品经理常用的评价指标。
3.3.1 混淆矩阵
混淆矩阵(Con?usion Matrix)是评价模型精度的一种标准格式,用一个
N行N列的矩阵形式来表示。矩阵每一列代表预测值,每一行代表实际值。从混
淆矩阵的名称不难看出,它的作用是表明多个类别之间是否有混淆,也就是
模型到底判断对了多少个结果,有多少个结果判断错了 。同时混淆矩阵能够
帮助我们理解准确率、精确率和召回率的区别。
当面对一个二分类问题时,我们通常会将结果表示为正类与负类,两者可
以随意指定。在上述区分猫和狗图片的例子中,我们假定猫为正类、狗为负
类。那么在实际进行预测的时候就会出现四种情况,如图3-10所示。

如果这张图片是猫,而机器预测出来的结果也是猫,则这种情况称为真正
类(True Positive,TP)。
如果这张图片是狗,而机器预测出来的结果也是狗,则这种情况称为真负
类(True Negative,TN)。
如果这张图片是猫,而机器预测出来的结果是狗,则这种情况称为假负类
(False Negative,FN)。
如果这张图片是狗,而机器预测的结果是猫,则为假正类(False
Positive,FP)。
3.3.2 准确率
准确率(Accuracy)是指预测正确的样本占总样本的比例,即模型找到
的真正类与真负类与整体预测样本的比例 。用公式表示为:
Accuracy=(TP+TN)/(TP+TN+FP+FN)
准确率的取值范围为[0,1],一般情况?取值越大,代表模型预测能力越
好。
假设在上述猫狗图片分类的例子中,猫狗图片各有500张。最后模型预测
的结果中真正类有318个,真负类有415个,假正类有75个,假负类有182个。
根 据 准 确 率 的 定 ? , 可 以 算 出 来 目 前 模 型 的 准 确 率 为 :
(318+415)/(1000)=0.73。
准确率是评价模型效果最通用的指标之一,描述模型找到“真”类别的能
力。也就是说模型准确识别出猫和狗的准确率为0.73。但是在使用的时候有两
点需要我们注意。首先,准确率没有针对不同类别进行区分,最后求得的准确
率对每个类别而言是平等对待的,这种评价方式在很多场景?是有欠缺的。在
本例中,虽然可以看到模型的整体准确率是0.73,但是从结果中明显可以看出
来,模型对于猫的识别效果远不如对狗的识别效果。如果我们模型是为了把猫
的图片挑出来,那么这个准确率就有些虚高。
在实际的病患诊断中,计算机诊断出某患者患有癌症而实际上?未患癌
症,与计算机诊断出某患者未患有癌症而实际上?患有癌症这两种情况的重要
性不一样,不能一概而论。我们需要明确后续是降低误诊率还是提高确诊率,
才能让后续模型优化更有针对性。
另外,在正负样本极不平衡的情况?,准确率这个指标存在很大的缺陷。
例如在银行的全量客户中,要寻找适合推荐信托产品的超高净值客户是非常难
的。因为这部分人群要求存款较多、收入较高,比较稀少,往往只有万分之一
的概率。如果一个预测客户适不适合信托产品的模型用准确率去评判,哪怕模
型把全部客户预测成负类,即全部都是不适合的情况,那么这个模型的精度也
有 99% 以上。但这个指标就失去了原有的意?,因为无法找到任何高净值的
人群。所以我们一再强调,没有万能的指标,根据场景选择合适的指标非常重
要。
3.3.3 精确率与召回率
召回率(Recall)和精确率(Precision)是一对“好兄弟”,虽然它们
是两个不同的评价指标,但互相影响,通常一起出现。在很多书上又把精确率
称为查准率,把召回率称为查全率。
召回率是针对原始样本而言的指标,它表示原始样本中的正例有多少被
预测正确 。原始样本中的正例有两种情况:一种是把原来的正类预测成正类
(TP);另一种就是把原来的正类预测为负类(FN)。这两种情况组成了原始
样本所有的正例。计算公式为:
Recall=TP/(TP+FN)
上述模型识别猫类图片的召回率为:
318/(318+182)=0.63
从这个角度可以看出来,总共500张猫的图片,模型只找对了318张,相比
准确率而言,召回率更真实地反映了模型的效果。
而精确率是针对预测结果而言的指标,它表示预测为正类的样本中有多
少是对的 。预测结果为正例有两种情况:一种就是把正类预测为正类
(TP);另一种就是把负类预测为正类(FP)。所以精确率的计算公式为:
Precision=TP/(TP+FP)
即上述模型识别猫类图片的精确率为:
318/(318+75)=0.81
从这个指标可以看出来,模型总共把393张图片预测为猫,其中只有318张
图片预测正确。所以模型可能存在欠拟合的情况,将部分狗的图片判断成猫,
判断为正类的条件太宽松。?一步优化的时候可以选择适当降低条件来提高模
型效果。
从图3-11可以看出精确率与召回率的区别。

在理想情况下,我们希望精确率和召回率两者都高。然而事实上这两者
在很多情况下是互相矛盾的。当召回率变高时意味着需要尽可能找到原始样
本的正例,因此模型覆盖的数量会变多,模型就有更高的概率犯错,将原本
不属于该分类的样本也加进来,这就导致精确率下降 。如果我们希望模型尽
可能多地找出猫的图片,我们要想办法提高召回率;如果我们希望模型找到
的图片少一点但找出来的都是猫的图片,我们要想办法提高精确率。
有两个很典型的场景可以说明这两个指标实际运用的区别,一个是对于地
震的预测,我们希望尽可能预测到所有的地震,哪怕这些预测到的地震中只有
少数真正发生了地震,在这个时候我们就可以牺牲精确率。宁愿发出100次警
报,但是把10次真实的地震都预测对了,也不希望预测了10次但是只有8次真
实的地震被预测出来了,因为只要有1次地震没预测到都会造成巨大的损失。
因此这是一个“宁可抓错,不可放过”的场景。
还有一种是垃圾邮件分类的场景,我们希望模型能够尽可能找到所有垃圾
邮件,但是我们更不希望把自己正常的邮件被分到垃圾邮件中,哪怕是一封正
常的邮件,这也会对用户造成很严重的后果。对于少数没有被识别出来的垃圾
邮件,其实用户是可以容忍的。这时候我们宁可少分类成垃圾邮件,但必须确
保分的都是对的,这就是一个“宁可放过,不可抓错”的场景。因此在不同的
场合中,产品经理需要根据实际情况,自己判断希望是精确率比较高还是召回
率比较高。
另外,精确率和准确率是比较容易混淆的两个评估指标,两者的核心区
别在于,精确率是一个二分类指标,只适用于二分类任务,而准确率能应用
于多分类任务。
3.3.4 F值
在很多场景?,我们希望“鱼和熊掌,两者兼得”,希望模型既能够预测
得尽可能多又尽可能准确。如果我们把识别猫狗图片模型的召回率提升到
0.68,但是精确率?降到0.74,那么这个优化的结果和原来的结果相比是更好
了还是更差了?为了对这两个指标有一个更综合的评价,我们引入 F 值度量
(F-Measure)的概念,F 值的计算公式为:

式中,P为准确率,R为召回率,a为权重。F度量为准确率和召回率的加权
调和平均。从公式中可以看出来,F值更接近于两个指标中较小的那个,所以
当精确率和召 回率两者最接近时,F值最大 。很多推荐系统的评测指标就使
用F值。在实际业务需求中,因为想尽可能预测准更多的样本,所以召回率和
准确率同样重要,这时候可以设定a为固定值1,F值就变成了F1度量,F1值的
计算公式为:

从公式中可以看出来,当召回率和精确率都提高的时候,F1值也会提高。
3.3.5 ROC曲线
在逻辑回归的分类模型里,对于正负例的界定,通常会设一个阈值。大于
阈值的样本判定为正类,小于阈值的样本为负类。如果我们减小这个阈值,会
让更多的样本被识别为正类,从而提高正类的识别率,但同时也会使得更多的
负类被错误识别为正类。直接调整阈值可以提升或降低模型的精确率和召回
率,也就是说使用精确率和召回率这对指标进行评价时会使得模型多了“阈
值”这样一个超参数,并且这个超参数会直接影响模型的泛化能力。在数学上
正好存在ROC曲线能够帮助我们形象化地展示这个变化过程。
ROC(Receiver Operating Characteristic,受试者工作特征曲线)名字
的起源是因为它原本是一个医学领域的评价指标,后来才应用到机器学习中。
ROC 曲线是一个画在二维平面上的曲线,平面的横坐标是假正类率(False
Positive Rate,FPR),计算公式为:
FPR=FP/(FP+TN)
纵坐标是真正类率(True Positive Rate,TPR),计算公式为:
TPR=TP/(TP+FN)
对于一个分类器而言,每一个阈值?都会有一个FPR和TPR,这个分类器就
可以被映射成ROC平面上的一个点。当我们调整这个分类器分类时使用的阈值
时,就可以得到一个经过点(0, 0)和点(1, 1)的曲线,这条曲线就是这个分类
器的ROC曲线,如图3-12所示。
从图中可以看到,所有算法的ROC曲线都在y=x这条线的上方,因为y=x表
示了随机猜测的概率。对所有二分类问题随机猜正确或不正确都是 50%的概
率。一般情况?,不存在比随机猜测的准确率更糟糕的机器学习算法,因为我
们总是可以将错误率转换为正确率。如果一个分类器的准确率是 40%,那么将
两类的标签互换,准确率就变为了60%。从图中可以看出来,最理想的分类器
是到达(0,1)点的折线,代表模型的准确率达到100%,但是这种情况在现实中
是不存在的。如果我们说一个分类器A比分类器B好,实际上我们指的是A的ROC
曲线能够完全覆盖B的ROC曲线。如果有交点,只能说明A在某个场合优于B,如
图3-13所示。
通常将ROC曲线与它对应的比率图一起使用。我们继续用猫狗图片分类的
例子说明这两个图怎么看。原本猫狗的图片各有500张,如图3-14所示,图形
的横轴代表预测的概率值,纵轴代表观察的数量。假设我们用一个新的分类器
对图片进行分类,用实线代表狗图片的分布,用虚线代表猫图片的分布。模型
给出的分值越高代表模型判断这张图片是猫的把握越大,反之模型给出的分值
越低代表模型判断这张图片不是猫的把握越大,也就是说这张图片更有可能是
狗。从图 3-14 中可以看出来,这个分类器的分类效果还是挺好的,基本上把
两个物群的分布分开了,ROC 曲线也非常靠近(0,1)这个点。


如图3-15所示,如果将阈值设为0.3,?边画线部分的面积代表模型判断
为狗的图片数量,有300张?右,并且从图中可以看出来这300张图片全部分类
正确。如果将阈值设为0.5,则?边画线部分的面积代表模型判断为狗的图
片,有530张?右,从图中重叠部分可以看出来大约有40个分类结果是包含错
误分类的,这些错误分类包括实际是狗的图片被分成猫的情况以及实际是猫的
图片被分类成狗的情况。

这时候我们用另外一个分类器再进行分类,结果如图 3-16 所示。可以看
到,整个分类结果向右偏移,同时模型的效果变差,因为两个分类结果重叠的
部分变大,无论我们把阈值设在哪里都会比上一个分类器产生更多的错误分
类。假如这时我们采用“宁可抓错,不可放过”的原则把阈值设置为0.8,则
右边画线部分只有200个?右不会被分类为狗的图片,其余800个结果全部会被
判定为狗的图片,尽管这里面有350个分类结果是错误的。

从上述例子可以看出,ROC曲线可以帮助我们从图像的角度分辨两个分类
结果的分布情况以及选择模型合适的阈值 。因此ROC曲线也是很多产品经理
比较喜爱的指标之一。这时很多读者可能会有疑问,既然已经有那么多评价标
准,为什么还要使用 ROC 曲线呢?原因在于 ROC 曲线有个很好的特性:当测
试集中的正负样本的分布变化的时候,ROC 曲线能够保持不变。在实际的数据
集中经常会出现样本类不平衡的情况,即正负样本比例差距较大,而且测试数
据中的正负样本也可能随着时间变化。使用ROC曲线,不管数据集怎么变化,
都有直观的展示效果。
3.3.6 AUC值
ROC 曲线在一定程度上可以反映分类器的分类效果,但其始终是以图像的
形式展示结果,不能告诉我们直接的结果。我们希望有一个指标,这个指标越
大代表模型的效果越好,越小代表模型的效果越差。于是引入了AUC值(Area
Under Curve)的概念。AUC是机器学习中最常用的模型评价指标之一,实际上
AUC代表的含?就是ROC曲线?的面积,如图3-17所示,它直观地反映了ROC曲
线表达的分类能力。AUC值通常大于0.5小于1,AUC(面积)值越大的分类器,
性能越好。

AUC 值的定?是:从所有正类样本中随机选取一个样本,再从所有负类样
本中随机选取一个样本,然后分类器对这两个随机样本进行预测,把正类样本
预测为正类的概率为p 1 ,把负类样本预测为正类的概率为p 0 ,p 1 >p 0 的概率
就等于AUC值。
AUC值是指随机给定一个正样本和一个负样本,分类器输出该正样本为正
的概率值比分类器输出该负样本为正的那个概率值要大的可能性,AUC值越高
代表模型的排序能力越强 。理论上,如果模型把所有正样本排在负样本之
前,则此时AUC的取值为1,代表模型完全分类正确,但这种情况在实际中不可
能出现。
?面总结了AUC值的四种取值结果。
当 AUC=1 时,代表采用这个预测模型,不管设定什么阈值都能得出完美
预测,模型能够将所有的正样本都排在负样本前面。但是在现实中不存在完美
的分类器。
当0.5<AUC<1时,代表模型的效果比随机猜测的准确率高,也就是说模型
能够将大部分的正样本排在负样本前面,模型有一定的预测价值。
当AUC=0.5时,代表模型的预测效果与随机猜测一样,只有50%的准确率。
也就是说模型完全不能区分哪些是正样本哪些是负样本,没有预测价值。
当AUC<0.5时,代表模型的预测效果比随机猜测还差;但只要将样本正负
例互换,结果就能优于随机猜测。
3.4 产品经理的经验之谈
在学习机器学习算法之前,通过对数据本质、可视化方式以及模型指标三
方面的探索,产品经理对数据有了一个更深刻的认识与理解。掌握数据的基本
概念可以帮助我们在收集数据以及进行数据预处理的时候更有针对性,知道哪
些是不符合要求的数据,哪些是有价值的数据。数据可视化可以帮助我们用更
直观的方式寻找出数据的特点,甚至发现数据可能存在的问题。最后作为产品
经理必须掌握模型效果的评价指标,能够分辨在什么场景?使用什么指标,以
便我们更有针对性地优化模型。
通常我们把拿到的数据源分为训练集、验证集与测试集。训练集专门用来
训练模型,验证集用于调节模型的超参数,测试集则用于检验模型的性能。样
本多的时候可以按不同比例划分三个数据集,少的时候需要采用 K 折交?验
证法。适用于机器学习的数据类型可以分为数值型和类别型,其中数值型可以
分为连续型和离散型,类别型可以分为定类型和定序型。
评价指标是机器学习任务中非常重要的衡量标准。不同的机器学习任务有
不同的评价指标,对于同一种机器学习任务在不同场景?也有不同的评价指
标。不同指标的着重点不一样,产品经理需要学习不同指标的特性,在项目中
根据实际需要选择不同的评价指标。
精确率是针对预测结果而言的,表示预测为正的样本中有多少是真正的正
样本。准确率是评价模型效果最简单的指标之一,但是在正负样本极不平衡的
情况?,准确率这个评价指标存在很大的缺陷;精确率和召回率是两个不同的
评价指标,但它们互相影响。在理想情况?,精确率和召回率两者都越高越
好。然而事实上这两者在某些情况?是矛盾的,因为当召回率变高时意味着模
型覆盖的数据量变多,那么模型就有可能犯错,把一些不属于该分类的样本也
加进来,因此精确率会?降。
ROC曲线可以帮助我们形象地展示模型阈值调整时的预测效果的变化,AUC
值就是ROC曲线?的面积,它直观地反映了ROC曲线表达的分类能力。
学习做菜的时候,我们不但要了解刀具如何使用,更要清楚食材的特性,
才不会闹出“杀鸡用牛刀”的笑话。学习建模其实与学习做菜一样,我们不但
要了解算法的特性与原理,更要了解数据的特点,这样我们才能在应对业务难
题的时候,从数据中快速发现突破口,找到合适的方法解决问题。