奎克的藏经阁 · MinerU 解析内容

人工智能与大数据技术导论

490 个 PDF 物理页 · 本页显示文件第 301–310 页

PDF 物理页索引 300

文件中的第 301 页 · 印刷页码:284

$$
\mathrm { P r e c i s i o n } = { \frac { T P } { T P + F P } } = { \frac { 9 } { 9 + 3 } } = 0 . 7 5
$$

$$
\mathrm { R e c a l l } = { \frac { T P } { T P + F N } } = { \frac { 9 } { 9 + 2 } } = 0 . 8 2
$$

我们可能无法事先得知最合适的分类阈值,合理的做法是尝试使用许多不同的分类阈值来评估我们的模型。另外,有一个指标可以衡量模型在所有可能的分类阈值下的效果。该指标称为ROC曲线,即“接收者操作特征曲线”。

9.4.5 ROC 曲线

ROC曲线(接收者操作特征曲线)是一种显示分类模型在所有分类阈值下的效果的图表。该曲线绘制了以下两个参数:

●真正例率。

●假正例率。

真正例率(TPR)是召回率的同义词,因此定义如下:

$$
T P R = \frac { T P } { T P + F N }
$$

TRP也叫灵敏度,表示所有正例中被分对的比例,衡量了分类器对正例的识别能力。假正例率(FPR)的定义如下:

$$
F P R = { \frac { F P } { F P + T N } }
$$

假正例率计算的是分类器错认为正类的负实例占所有负实例的比例。

ROC曲线由两个变量绘制。横坐标是假正例率,纵坐标是真正例率。ROC曲线用于绘制采用不同分类阈值时的真正例率与假正例率。具体做法是:我们对每个可能的分类阈值进行评估,并观察相应阈值下的真正例率和假正例率。然后绘制一条曲线将这些点连接起来。图9-22显示了一个典型的ROC曲线。

人工智能与大数据技术导论

284

PDF 物理页索引 301

文件中的第 302 页 · 印刷页码:285

降低分类阈值会导致将更多样本归为正类别,从而增加假正例和真正例的个数。我们在上面提到,为了计算ROC曲线上的点,可以使用不同的分类阈值多次评估逻辑回归模型,但这样做效率非常低。幸运的是,有一种基于排序的高效算法可以为我们提供此类信息,这种算法称为曲线下面积。曲线下面积表示“ROC曲线下面积(Area Under the ROCCurve,AUC)”。也就是说,曲线下面积测量的是从(0,0)到(1,1)整个ROC曲线以下的整个二维面积。

借助曲线下面积,我们可以有效解读概率。如果要拿一个随机正分类样本,闭上眼睛从分布区域中拿起一个,再拿起一个随机负分类样本,则模型正确地将较高分数分配给正分类样本而非负分类样本的概率是多少?在某种意义上,出现配对顺序不正确的概率是多少?结果表明,这个概率正好等于ROC曲线下面积代表的概率值。因此,如果看到ROC曲线下面积的值是0.9,那么这就是得出正确的配对比较结果的概率。

9.4.6 预测偏差

预测偏差是通过将我们预测的所有项的总和与观察到的所有项的总和进行比较来定义的。总的来说,我们希望预测的预期值与观察到的值相等。如果不相等,则称模型存在一定的偏差。偏差为0表示预测值的总和与观察值的总和相等。

逻辑回归预测应当无偏差,即“预测平均值”应当约等于“观察平均值”。预测偏差指的是这两个平均值之间的差值,即预测偏差=(预测平均值-数据集中相应标签的平均值)。如果出现非常高的非零预测偏差,则说明模型某处存在错误,因为这表明模型对正类别标签的出现频率预测有误。例如,假设所有电子邮件中平均有1%的邮件是垃圾邮件。一个出色的垃圾邮件模型应该预测到电子邮件平均有1%的可能性是垃圾邮件(换言之,如果我们计算单个电子邮件是垃圾邮件的预测可能性的平均值,则结果应该是1%)。然而,如果该模型预测电子邮件是垃圾邮件的平均可能性为20%,那么我们可以得出结论,该模型出现了预测偏差。如果某个模型偏差不为零,则意味着可能存在问题,告知我们需要探究某些方面来调试模型。

逻辑回归可预测0\~1的值。不过,所有带标签样本都正好是0(例如,0表示“非垃圾邮件”)或1(例如,1表示“垃圾邮件”)。因此,在检查预测偏差时,无法仅根据一个样本准确地确定预测偏差,必须在“一大桶”样本中检查预测偏差。也就是说,只有将足够的样本组合在一起,以便能够比较预测值(例如0.392)与观察值(例如0.394),逻辑回归的预测偏差才有意义。所以,我们通过以下方式构建桶:

●以线性方式分解目标预测。

●构建分位数。

请看以下某个特定模型的校准曲线(见图9-23)。每个点表示包含1000个值的分桶。两个轴具有以下含义:

●.x 轴表示模型针对该桶预测的平均值。

● y轴表示该桶的数据集中的实际平均值。

两个轴均采用对数尺度。

第9章 TensorFlow 高级知识

285

PDF 物理页索引 302

文件中的第 303 页 · 印刷页码:286

在上面的例子中,对于校准曲线,我们采集多组数据,将数据分桶处理,然后比较相应桶中各项数据的平均预测值与平均观察值。显然,我们需要大量分桶数据才能使校准有意义。

9.4.7 分类代码实例

在前面的例子中,房屋中位价median house value是一个数字特征,包含连续的数字。下面使用分类阀值(比如75%)把连续值变成布尔值,所有超过阀值的就被标记为1,其他的就是0。我们的模型要预测某一个城市街区是否是高房价街区。

我们先装载数据集:

人工智能与大数据技术导论

286

PDF 物理页索引 303

文件中的第 304 页 · 印刷页码:287

分类阀值75%所对应的房价大概是265000。下面的代码用于创建一个二元标签median house\_value is high 来判断是否为高价房。

第9章 TensorFlow 高级知识

287

PDF 物理页索引 304

文件中的第 305 页 · 印刷页码:288

创建训练数据集和评估数据集如下:

结果如图9-24\~图9-27所示。

人工智能与大数据技术导论

288

PDF 物理页索引 305

文件中的第 306 页 · 印刷页码:289

下面比较线性回归和逻辑回归的效果。下面的代码是训练基于线性回归的模型。这个模型使用值为{0,1}的标签,然后预测连续值。

第9章 TensorFlow 高级知识

289

PDF 物理页索引 306

文件中的第 307 页 · 印刷页码:290

人工智能与大数据技术导论

290

PDF 物理页索引 307

文件中的第 308 页 · 印刷页码:291

第9章 TensorFlow 高级知识

291

PDF 物理页索引 308

文件中的第 309 页 · 印刷页码:292

结果如图9-28、图9-29所示。

线性回归使用L2误差。当把输出结果转化为概率时,它不能很好地惩罚分类错误的情况。比如,如果把一个负例分类为正例,那么0.9的概率和0.9999的概率应该有很大的区别。但是,L2误差无法很强地区分这两种情况。如果我们使用LogLoss,那么会对分类错误产生更重的惩罚:

人工智能与大数据技术导论

292

PDF 物理页索引 309

文件中的第 310 页 · 印刷页码:293

$$
L o g L o s s = \sum _ { ( x , y ) \in D } - y \cdot l o g ( y _ { p r e d } ) - ( 1 - y ) \cdot l o g ( 1 - y _ { p r e d } )
$$

下面我们使用LinearRegressor.predict来获得预测值,然后使用这个值和标签值来计算LogLoss。其代码如下:

结果如图9-30所示。

下面使用逻辑回归。我们将LinearRegressor替换为LinearClassifier。当在LinearClassifier模型上运行train()和predict()时,predictions["probabilities"]的probabilities键是预测的概率值。我们还使用sklearn的log\_loss函数来计算这些概率的LogLoss,代码如下:

第9章 TensorFlow 高级知识

293