DNA图谱 / 问答 / 问答详情

第二章 模型评估与选择

2023-07-01 17:08:50
共1条回复
Mugen-Hive

上一章,简略地介绍了机器学习,以及 数据集、数据集、测试集、假设空间、版本空间等等的相关概念 。这一章就开始讲模型评估与选择了,因为书上是以“学习器”来称呼模型的,所以下面我也用学习器来进行说明总结。

什么是经验误差?

在分类样本时会出现分类错误,我们把分类错误的样本数占样本总数的比例称为 “错误率” 精度 即正确率,自然是1-错误率了。学习器的 实际预测输出 与样本 实际输出 之间的 差异 就称为 “误差” ,于 训练集 就是 “经验误差” ,于 新样本 就是 “泛化误差”

什么是过拟合?

我们希望学习器能在新样本的预测中有更好的效果,即泛化性能最大化。但 在学习过程中 ,往往会把训练集中的样本学得过多,使得泛化降低,就是说 学到了 训练样本个体的特点而不是总体样本的特点,或者说学了这个训练集的特殊点, 相对于所有潜在的样本来说的特点 。这就是 “过拟合” ,那么与过拟合相对的就是 “欠拟合” ,反而思之,便是学得不到位,样本的一般性质都掌握不了!

因为过拟合无法避免,所以我们想要去减少它的风险。 其实就是 对模型的泛化误差进行评估,然后选择泛化误差最小那个。

对多种学习算法、参数配置进行选择即模型选择:

一个学习算法→不同参数配置→不同模型

在实验测试中,只有数据集可用,为了对学习器的泛化误差进行评估,只能 从数据集(验证集)中分离出训练集与测试集 ,测试集用于测试学习器对新样本的判别能力, 将测试集上的“测试误差”作为泛化误差的近似 。故 测试集要尽可能与训练集互斥

直接将数据集划分两个互斥的集合,一个作训练集,一个作测试集。训练集、测试集的划分要尽可能保持数据分布一致性。即 保持训练集和测试集中样本类别比例相差不大,否则会产生偏差 。一般确定训练集与测试集的样本比例之后,对于数据集的样本划分的方法也有很多, 不同划分方法造成模型评估结果也不同,所以就要进行多次留出法,随机划分重复评估再取平均值作为评估结果 。对于留出法,其划分样本于训练集与测试集的比例要适当,若是训练集含有大多数样本,那么其模型结果便与数据集训练出来的模型接近,但是由于测试集样本过少,其评估结果就不那么准确,反之也是一样的道理。 故常常采取2/3~4/5的样本作为训练集,其余作为测试集。

将数据集划分为k个大小相似的互斥子集,即互不包含。 每个子集尽可能保持数据分布的一致性,即通过 分层采样 得到。 这k个子集又分出k-1个作为训练集,剩下一个作为测试集,可以分k次,进行k次训练和测试 ,最终也是求其 结果的均值 。同留出法, 交叉验证法要随机使用不同的划分重复多次 ,最终结果是多次k折交叉验证结果的均值。比如“10次10折交叉验证”就会有100次训练,有100个训练结果(模型)。

交叉验证法有一个特例,其名为 留一法 ,就是数据集 有多少个样本,就划分成多少个子集 ,即每个子集一个样本,于是随机划分只会产生一种结果, 所以这种方法被实际评估的模型与期望评估的用数据集训练出来的模型很相似。 其缺点是当数据集很大的时候,用它就需要庞大的计算量(还未考虑调参)。

上面两种方法是需要将数据集划分的,这样自然会让 用训练集训练出的模型 用数据集训练出来的模型 有一定的 估计偏差 。如此,自助法以自助采样法为基础,简单地讲就是重复随机抽样, 从数据集D中进行重复随机抽样m次,便会得到一个含有m个样本的数据集D 1 ,这就是自助采样的结果。

对于 样本在m次不被采集到 的概率:

这说明了,D中大概有36.8%的样本没有出现在D 1 中。于是我们可以 把D 1 作为训练集 ,把那约 36.8%的样本作为测试集 。其优点是对于 数据集较小、难以有效划分训练 时很有用,其缺点就是改变了初始数据集的划分,这可能会引入估计偏差。

什么是调参?

上面粗略地提到过参数的调整,我们 在进行模型的评估和选择时,不仅要对学习算法进行选择,还要对算法参数进行设定 ,这便是调参。

梳理一下:

参阅自: 机器学习为什么需要训练,训练出来的模型具体又是什么?

回到调参,对于每种参数都训练出模型是不现实的,我们应 对每个参数选定一个范围和步长 ,选出的参数即为 候选参数值(一般10个以内) ,最终从这些候选参数值中产生 选定值 。这是一种折中的结果,是为了使学习过程成为可能。

然鹅,尽管我们得到了这个模型,但这不是最终提交给用户的模型,我们 需要对数据集重新训练 ,使用全部样本以训练出的模型,才是最终模型。

习得模型在实际遇到的数据称为测试数据;模型评估与选择中用于评估测试的数据称为"验证集"。 例如:在研究对比不同算法的泛化性能时,用测试集上的判别效果来评估模型在实际使用中的泛化性能,而把训练数据分为训练集和验证集,基于验证集上的性能来进行模型选择和调参。

是衡量模型泛化能力的评价标准。 其反映了 任务需求 。对于给定的样例集D={(x 1 ,y 1 ),(x 2 ,y 2 ),...,(x m ,y m )},其中的y是x的真实标记,现在要评估学习器f的性能,于是把f的结果与y进行比较。

回归任务——性能度量——“均方误差”

一般的,对于数据分布 和概率密度函数p(·),均方误差可以表示为:

下面主要介绍 分类任务中常用的性能度量

上面这两种就是分类任务中常用的性能度量啦!对于样例集D,分类错误率定义如下:

【注:Ⅱ(·)是指示函数。若·( 即对括号内进行逻辑判断 )为 则取值为 1 则取 0

精度定义:

一般的:

对于真实类别与学习器预测类别的异同,我们可以分为真正例、假反例、假正例、真反例,分别称为TP、FN、FP、TN(T=True,F=False,P=Positive,N=Negative)。这里的 真假是针对学习器预测结果 来说的。

于是查准率P与查全率R定义如下:

两个性能度量是矛盾的,呈负相关

我们常常根据学习器的预测结果对样例进行排序, 把“最可能”是正例的放在前面 。按这个顺序,逐个把样本作为正例进行预测,每次都可以计算出当前的查准率与查全率,然后以查准率为纵轴,查全率为横轴,作P-R图如西瓜书p 31 。

若一个学习器的P-R图完全包含了另一个,则说明前者性能更优于后者。

但往往会出现不完全包含, 出现交叉的情况 ,那么我们 一般用F1 来对比衡量。

在说F1度量之前,先说一下平衡点。

平衡点(BEF) 是综合考虑查准率与查全率的性能度量。是 “查准率 = 查全率” 时的取值。是一种简单的度量。

F1度量:

一般形式:

其中 >0 度量了查全率对查准率的 相对重要性 >1时,查全率有更大的影响, <1时,查准率有更大的影响。

上面提及到的性能度量的 平均值 (在各 混淆矩阵 (其实就是上面真假正反例的矩阵)上分别计算出查准率与查全率,再计算平均值)称为 “宏查准率”(macro—P)、“宏查全率”(macro—R)以及"宏F1"(macro—F1) ,前两个均值就是算术平均的计算方式,相加除以n,最后一个则是根据前两个计算得来,参考上面F1的定义。

上面是一种做法,也可以把混淆矩阵的真假正反例进行平均,则有 、 、 、 ,于是可求出 “微查准率”(micro—P)、“微查全率”、“微F1”。 然后你懂的,参考上面写的相关公式,代入即可。

ROC全称是“受试者工作特征曲线”,根据预测结果对样例进行排序,然后按顺序逐个把样本作为正例进行预测,以每次计算出的“真正例率”(TPR)作为纵轴,“假正例率”(FPR)作为横轴。两者定义如下:

ROC曲线下的面积即为AUC ,是用来比较当两个学习器的ROC曲线相交不完全包含,要进行性能比较时,则使用AUC。 AUC的估算

其与排序误差有紧密联系,于是给定 个反例, 个正例,令 和 分别表示反例、正例的集合。则 排序损失 定义为:

对应的是 ROC曲线之上的面积 ,由此有: .

为何引入代价?

因为.......你这样做是要付出代价的!即为所造成结果的超额处理。引入代价是为了 衡量不同类型错误所造成不同的损失 ,可为错误赋予 “非均等代价” .

代价矩阵

其中 表示将第i类样本预测为第j类样本的代价。 例如上矩阵中,损失程度相差越大, 与 值的差别越大,比较一般是以 代价比值 而非绝对值。(即倍数关系)

从前面提到的性能度量, 均是在假设均等代价前提下 进行计算的,如今引入了非均等代价,便要对其考虑在内。

于是将上面代价矩阵中的第0类作正例,第1类作反例,而 与 分别表示正例子集和反例子集,则以错误率为例子,“代价敏感”错误率为:

除此之外,若令 中的 不限取0和1,则可定义出多分类任务的代价敏感性能度量。

那么在非均等代价下,ROC曲线无法直接反映学习器的期望总代价,于是我们引入“代价曲线”,其横轴是取值为[0,1]的正例概率代价:

其中p是样例为正例的概率,纵轴是取值为[0,1]的 归一化 代价:

其中FNR=1-TRP。ROC曲线上的每一点对应代价平面上的一条线段,若ROC曲线上一点为(FPR,TPR)则对应一条从(0,FPR)到(1,FNR)的线段,于是 所有线段的下界围成的面积即为在所有条件下学习器的期望总体代价。

有了实验评估方法和性能度量之后,便是对学习器的泛化性能进行比较。此时为了对学习器进行适当的比较,统计假设检验为我们进行学习器性能比较提供了重要依据。该节默认以错误率为性能度量。

1. 二项检验

2. t检验

相关推荐

混淆矩阵

混淆矩阵是衡量分类模型准确度中最基本、直观,计算最简单的方法。混淆矩阵就是一张表,展示预测值各类归对、归错的个数。下面放个小例子。 上面的小例子是分类问题中最简单的二分类,只需要判断结果是0还是1,或者说是negative还是positive。 表中已经给出四种结果,这四种是混淆矩阵的四个基础指标: 将这四个指标一起呈现在表格中,就能得到混淆矩阵(Confusion Matrix),如下图。 sklearn.metrics.confusion_matrix ( y_true , y_pred , labels=None , sample_weight=None ) 在二分类问题中,我们可以提取True Positive等值,如下所示。 其中,Precision和Recall可以看下面的具体例子。 四种指标的公式和含义见下表。 其中,将 Precision 和 Recall 组合计算可以得到一个称为 F1 score 的指标,如果召回和精确度都很高,分类器将获得高F 1分数。 都看到最后了,要不~点个赞?加波关注?
2023-07-01 11:43:111

机器学习 混淆矩阵的简单概述!

混淆矩阵(Confusion Matrix),也成为误差矩阵,是用n行n列矩阵形式来表示的表,这张表通过对比已知分类结果的测试数据的预测值和真实值表来描述衡量分类器的性能。在二分类的情况下,混淆矩阵是展示预测值和真实值四种不同结果组合的表,多分类问题的混淆矩阵可以帮助你确认错误模式。在人工智能中,混淆矩阵是可视化工具,特别用于监督学习,在无监督学习一般叫做匹配矩阵。在图像精度评价中,主要用于比较分类结果和实际测得值,可以把分类结果的精度显示在一个混淆矩阵里面。混淆矩阵是通过将每个实测像元的位置和分类与分类图像中的相应位置和分类相比较计算的,是数据科学、数据分析和机器学习中总结分类模型预测结果的情形分析表,以矩阵形式将数据集中的记录按照真实的类别与分类模型作出的分类判断两个标准进行汇总。
2023-07-01 11:43:181

混淆矩阵每次迭代都一样吗

混淆矩阵每次迭代都会不一样的。混淆矩阵是用于评估分类算法效果的一种常用方法,混淆矩阵不会每次迭代都完全相同,因为分类算法的输入和输出都可能受到随机性或其他因素的影响,这会导致每次运行分类算法时获得的结果略有不同。在训练阶段,如果使用相同的数据集和算法参数,每次迭代往往会产生略微不同的混淆矩阵,因为算法的训练模型在每次训练结束后都会略有不同。由于混淆矩阵所反映的是分类器的性能,因此输入的样本集合的特征、性质等方面发生变化,也可能导致混淆矩阵的变化。在实际应用中,基于多次迭代取平均的方式来评估算法性能是一种常用的方法,常被称为交叉验证。这种方法可以减小由于随机性引起的误差,得到更可靠的结果。
2023-07-01 11:43:251

混淆矩阵的简介

混淆矩阵(Confusion Matrix):在图像精度评价中,主要用于比较分类结果和实际测得值,可以把分类结果的精度显示在一个混淆矩阵里面。混淆矩阵是通过将每个实测像元的位置和分类与分类图像中的相应位置和分类像比较计算的。混淆矩阵的每一列代表了预测类别 ,每一列的总数表示预测为该类别的数据的数目;每一行代表了数据的真实归属类别 ,每一行的数据总数表示该类别的数据实例的数目。每一列中的数值表示真实数据被预测为该类的数目:如下图,第一行第一列中的43表示有43个实际归属第一类的实例被预测为第一类,同理,第二行第一列的2表示有2个实际归属为第二类的实例被错误预测为第一类。
2023-07-01 11:43:341

使用pytorch计算分类模型的混淆矩阵

混淆矩阵是评判模型结果的一种指标,属于模型评估的一部分,常用于评判分类器模型的优劣。 一个例子: 横坐标:每一列对应属于该类的所有验证样本(真实值) 纵坐标:每一行对应预测属于该类的所有样本(预测值) 对角线:预测正确的样本个数 预测值在对角线上分布的越密集(即对角线上的数越大),模型预测效果越好 准确率(Accuracy):预测正确的样本个数 / 所有样本总数(即矩阵中所有对角线数之和除以矩阵所有数字之和) tips:针对于每个类别,而准确率针对的是所有样本 TP、TN、FP、FN总结: TP、TN越大越好; FN、FN越小越好 记法:第一个字母代表对错(True、False),第二个字母代表预测的值(Positive、Negative),如TP代表预测值为1,且预测正确。FN代表预测值为0,且预测错误。 精确率(Precision):模型预测的所有positive中,预测正确的比例 召回率(Recall):所有真实的positive中,模型预测正确的positive比例 特异度(Specificity):所有真实negative中,模型预测正确的negative比例 参考博文: 1. https://blog.csdn.net/Orange_Spotty_Cat/article/details/80520839 参考视频: 1. https://www.bilibili.com/video/BV1GV411C7AW?spm_id_from=333.999.0.0
2023-07-01 11:44:331

fasterrcnn验证代码怎么输出混淆矩阵

Fast R-CNN 和 Faster R-CNN 是目标检测的经典算法,对于混淆矩阵的输出可以参考以下方法:1. 准备数据集:首先需要准备模型评估所需的数据集,包括训练集、验证集和测试集,在测试集上运行训练好的 Faster R-CNN 模型进行检测,并将预测结果与真实标签进行比较。2. 执行测试代码:运行 Fast R-CNN 或 Faster R-CNN 的测试代码,对测试集中的图像进行遍历,记录所有的预测结果和真实标签。根据官方文档或者源代码,指定输出混淆矩阵的参数设置,例如 Python 中的 `sklearn.metrics.confusion_matrix` 方法等。3. 分析混淆矩阵:输出结果会得到一个混淆矩阵,其中每一行代表真实标签,每一列代表预测结果,矩阵中每个元素表示在此类别下,实际被预测为其他类别的样本数量。通过分析混淆矩阵,可以计算得到模型的准确率、召回率、精度和 F1 值等性能指标,进而进行模型的调优和优化的工作。需要注意的是,混淆矩阵只是目标检测算法性能评估的其中一个指标,还需要结合其他更直观的评估指标如 AP 值、mAP 等来综合评判算法的性能。同时,由于混淆矩阵所涉及的真实标签和预测结果都是离散的,因此混淆矩阵适用于分类问题,在目标检测任务中需要进行一定的调整和拓展。
2023-07-01 11:44:402

基于混淆矩阵的分类精度评价

在计算混淆矩阵时,需要有两幅影像,一幅是待评价的分类影像,另一幅是假定较精确的参考影像。通常整幅精确的参考影像很难获得,通常要选取一定数量的样本来进行评价,本研究选择了影像ROI(Regin of Interest,ROI)来完成精度评定。参考影像和待评价影像的ROI如图7.4(a)、7.4(b)所示。各类混淆矩阵的计算如表7.3、表7.4、表7.5和表7.6所示,根据混淆矩阵,计算可知该分类结果的整体精度为65.95%,kappa系数为0.55,表明该分类结果和参考影像的一致性为中等水平。综上所述,基于谐波分析和PSO-SVM的分类技术能够在更细微的层面对高光谱数据做精细分类,具有一定的使用价值和很好地识别效果。图7.2 几种主要地物谐波分析后光谱曲线图7.3 几种主要地物3次谐波累积曲线图7.4 参考影像和待评价影像ROI表7.3 混淆矩阵(像元)表7.4 混淆矩阵 单位:%注:“--” 表示无此项。表7.5 漏分和多分误差 单位:%注:“--” 表示无此项。表7.6 生产精度(Product"s accuracy,PA)和用户精度(user"s accuracy,UA)注:“--” 表示无此项。
2023-07-01 11:44:481

混淆矩阵热力图有什么作用

混淆矩阵热力图可以用来可视化分类模型的性能表现。混淆矩阵热力图是一种可视化分类模型性能表现的方法。它将分类模型预测结果与实际结果进行对比,并将结果以矩阵的形式呈现出来,用颜色的深浅来表示各种分类情况的数量。通过观察混淆矩阵热力图,可以直观地了解模型的分类效果,包括正确分类的数量、误分类的数量和分类精度等指标。同时,混淆矩阵热力图还帮助分析模型的错误分类情况,从而指导模型的改进和优化。混淆矩阵热力图是分类模型评估和优化的重要工具之一。
2023-07-01 11:44:541

数据挖掘里的混淆矩阵热力图怎么看

二分类混淆矩阵 上图这张2x2大小的矩阵就是一个最简单的二分类混淆矩阵,只区分0或1。它的行代表真实的类别,列代表预测的类别。以第一行为例,真正的类别标签是0,从列方向的预测标签来看,有8个实例被预测为了0,有2个实例被预测为了1。也就是说,在这10个真实标签为0实例中
2023-07-01 11:45:131

NLP基础知识: F1-score, 混淆矩阵和语料库

最近在学习 NLP 的相关项目,总觉得不够深入,决定通过写作的方式把自己学到的内容记录下来,分享给大家。并且通过一些通俗易懂的语言让大家最后能自己能动手实现一些NLP 的聊天机器人之类的应用。 先了解如何看懂一个模型评估的指标,譬如 F1-score , Confusion matrix . 在理解 F1-store 之前,首先定义几个概念: TP(True Positive) : 预测答案正确 FP(False Positive) : 错将其他类预测为本类 FN(False Negative) : 本类标签预测为其他类标 F1分数(F1-score)是分类问题的一个衡量指标, 在 0~1 之间,公式如下: 通过第一步的统计值计算每个类别下的 precision 和 recall 精准度/查准率(precision):指被分类器判定正例中的正样本的比重 召回率/查全率(recall): 指的是被预测为正例的占总的正例的比重 每个类别下的f1-score,计算方式如下: 通过对第三步求得的各个类别下的F1-score求均值,得到最后的评测结果,计算方式如下: 混淆矩阵的每一列代表了预测类别,每一列的总数表示预测为该类别的数据的数目;每一行代表了数据的真实归属类别,每一行的数据总数表示该类别的数据实例的数目。每一列中的数值表示真实数据被预测为该类的数目。 如有150个样本数据,预测为1,2,3类各为50个。分类结束后得到的混淆矩阵为: 每一行之和表示该类别的真实样本数量,每一列之和表示被预测为该类别的样本数量. 巧妇难为无米之炊,语料库就是 NLP 项目中的 "米"。这里使用的是 awesome-chinese-nlp 中列出的中文wikipedia dump和百度百科语料。其中关于wikipedia dump的处理可以参考 这篇帖子 。 我们需要一个规模比较大的中文语料。最好的方法是用对应自己需求的语料,比如做金融的chatbot就多去爬取些财经新闻,做医疗的chatbot就多获取些医疗相关文章。
2023-07-01 11:45:201

Python hmmlearn中的混淆矩阵是怎么表示的

hmmlearn这个库有三种模型,分别是Gaussian,Multinomial和GMMHMM。这三种模型对应的就是三种emissionmatrix(即混淆矩阵,也就是隐状态到观察态的概率)。Gaussian就是说混淆矩阵是一个高斯分布,即观察态是连续的。Multinomiual就是说混淆矩阵事一个Multibimiualdistribution,即观察态势离散的。GMMHMM则是说混淆矩阵是遵循gaussinanmixture分布,也是连续的。题主问如何把混淆矩阵输入到模型里面。首先你要确定你的混淆矩阵的类型。对于Gaussian类型,就是把你希望的mean和variance值放到模型里面。我就直接把文档里面的例子搬过来,例子里是建立了一个高斯分布的隐马尔科夫模型。>>>importnumpyasnp>>>fromhmmlearnimporthmm#一个隐马尔科夫模型由(p向量,状态转移矩阵,混淆矩阵)来定义。>>>startprob=np.array([0.6,0.3,0.1])#定义初始状态的概率>>>transmat=np.array([[0.7,0.2,0.1],[0.3,0.5,0.2],[0.3,0.3,0.4]])#定义转移矩阵的概率>>>means=np.array([[0.0,0.0],[3.0,-3.0],[5.0,10.0]])#定义混淆矩阵的均值>>>covars=np.tile(np.identity(2),(3,1,1))#定义混淆矩阵的方差>>>model=hmm.GaussianHMM(3,"full",startprob,transmat)#定义一个混淆矩阵为高斯分布的隐马尔科夫模型。这里‘full"的意思就是说你输入的方差矩阵每个元素都给出了,不是一个只是对角线上的元素为0的矩阵>>>model.means_=means>>>model.covars_=covars#把你希望的均值方差输入你定义的模型里面,到此你就把混淆矩阵输入进模型了>>>X,Z=model.sample(100)对于Multinomial和GMM,我还没用,不过Multinomial应该是需要你自己手动输入隐状态到观察态的概率的,而GMM应该是和Gaussian类型类似,只是需要多输入一个权重因子。对于第二个问题,covariance_type意思是你的混淆矩阵的covariancematrix是什么类型,比如若只是对角线上的元素不为0,则把covariance_type设为‘diag"。
2023-07-01 11:45:261

混淆矩阵热力图什么意思

混淆矩阵热力图意思是机器学习中总结分类模型预测结果的情形分析表,以矩阵形式将数据集中的记录按照真实的类别与分类模型作出的分类判断两个标准进行汇总。 示例:2. python 函数 官方文档中给出的用法是 sklearn.metrics.confusion_matrix(y_true, y_pred, labels=None, sample_weight=None) y_true
2023-07-01 11:45:321

envi怎么打开保存的混淆矩阵

在设置中点击了混淆矩阵的按钮。设置里面选择打开混淆矩阵,点击那个按钮,从而可以打开保存着的混淆矩阵,这样就可以进行分类划分。保存是从一个平台上保存在手机或电脑的客户端上面,把这个转移。
2023-07-01 11:45:411

arcgis10.2混淆矩阵工具在哪

Arcmap中。arcgis10.2混淆矩阵工具在Arcmap中。使用漏分误差和错分误差计算混淆矩阵,然后派生出分类地图与参考数据之间的一致性kappa指数和整体精度。
2023-07-01 11:45:481

画混淆矩阵看不清怎么办

1、首先准备纸笔,先画出混淆矩阵。2、其次填入信息。3、最后把混淆矩阵就是分别统计分类模型归错类,归对类的观测值个数,然后把结果放在一个表里展示即可。
2023-07-01 11:45:551

混淆矩阵和热力图区别

表示方式和用途不同。1、表示方式。混淆矩阵是一个二维矩阵。热力图是一种色彩编码的二维图像。2、用途不同。混淆矩阵用于表示分类模型在预测时的正确和错误情况。热力图用于表示数据的分布情况。
2023-07-01 11:46:021

混淆矩阵 怎么读

hun xiao ju zhen
2023-07-01 11:46:091

混淆矩阵的举例

如有150个样本数据,这些数据分成3类,每类50个。分类结束后得到的混淆矩阵为:   预测类1 类2 类3 实际  类1 43 5 2 类2 2 45 3 类3 0 1 49 每一行之和为50,表示50个样本,第一行说明类1的50个样本有43个分类正确,5个错分为类2,2个错分为类3
2023-07-01 11:46:251

如何根据混淆矩阵,计算误判率,kappa系数和准确率

Error using ==> confusionmat at 72G and GHAT need to be vectors or 2D character arrays.以上是计算混淆矩阵出现的问题。
2023-07-01 11:46:511

envi里对图像做监督分析,选定好ROI,只选了一次,分类好后求得混淆矩阵,请问混淆矩阵是如何产生的?

一次是没有问题,只是这次你用的ROI是你用来分类的ROI,我们在进行混淆矩阵计算的时候选择的ROI应尽量重新选择一组新的作为验证样本。这样分类精度比较准确。
2023-07-01 11:46:582

混淆矩阵有什么用?

混淆矩阵可以得出分类正确和错误的样本数量
2023-07-01 11:47:051

sklearn中ConfusionMatrix

sklearn输出的评价矩阵 输出结果 结果分析 输出结果 参考: 基于混淆矩阵的评价指标 识别任务中 混淆矩阵(Confusion Matrix) 用于评价 算法 好坏的指标。下图是一个二分类问题的混淆矩阵: 相关术语: AccuracyRate(准确率) : (TP+TN)/(TP+TN+FN+FP) ErrorRate(误分率) : (FN+FP)/(TP+TN+FN+FP) Recall(召回率,查全率,击中概率) : TP/(TP+FN), 在所有GroundTruth为正样本中有多少被识别为正样本了; Precision(查准率): TP/(TP+FP),在所有识别成正样本中有多少是真正的正样本; TPR(TruePositive Rate): TP/(TP+FN),实际就是Recall FAR(FalseAcceptance Rate)或FPR(False Positive Rate): FP/(FP+TN), 错误接收率,误报率,在所有GroundTruth为负样本中有多少被识别为正样本了; FRR(FalseRejection Rate): FN/(TP+FN),错误拒绝率,拒真率,在所有GroundTruth为正样本中有多少被识别为负样本了,它等于1-Recall ROC曲线(receiver operatingcharacteristic curve) : 每个阈值的识别结果对应一个点(FPR,TPR),当阈值最大时,所有样本都被识别成负样本,对应于右上角的点(0,0),当阈值最小时,所有样本都被识别成正样本,对应于右上角的点(1,1),随着阈值从最大变化到最小,TP和FP都逐渐增大; 一个好的分类模型应尽可能位于图像的左上角,而一个随机猜测模型应位于连接点(TPR=0,FPR=0)和(TPR=1,FPR=1)的主对角线上; 可以使用ROC曲线下方的面积AUC(AreaUnder roc Curve)值来度量算法好坏:如果模型是完美的,那么它的AUG = 1,如果模型是个简单的随机猜测模型,那么它的AUG = 0.5,如果一个模型好于另一个,则它的曲线下方面积相对较大; ERR(Equal Error Rate,相等错误率):FAR和FRR是同一个算法系统的两个参数,把它放在同一个坐标中。FAR是随阈值增大而减小的,FRR是随阈值增大而增大的。因此它们一定有交点。这个点是在某个阈值下的FAR与FRR等值的点。习惯上用这一点的值来衡量算法的综合性能。对于一个更优的指纹算法,希望在相同阈值情况下,FAR和FRR都越小越好。
2023-07-01 11:47:121

请问 tabulate area 如何做混淆矩阵分析?

input zone 选择分类影像,input class 选择参考/真实影像,即可得到以面积为单位的混淆矩阵,将矩阵中的所有数字除以一个像元的面积即可得到以像元为单位的混淆矩阵。
2023-07-01 11:47:271

你应该知道的模型评估的五个方法

你应该知道的模型评估的五个方法好久没更新了,我怕再不更,我要掉粉了,这次来更新的是模型评估的常见的五个方法:1、混淆矩阵。2、提升图&洛伦兹图。3、 基尼系数4、ks曲线5、roc曲线。1混淆矩阵混淆矩阵不能作为评估模型的唯一标准,混淆矩阵是算模型其他指标的基础,后面会讲到,但是对混淆矩阵的理解是必要的。模型跑出来的“Y”值为每个客户的预测违约概率,可以理解为客户的有多大的可能违约。把概率等分分段,y坐标为该区间的人数,可以得到这样子一个图表。可以看到图中这条线,一切下去,在左边就算是违约的客户,那么右边就是正常的客户,本身模型没办法百分百的判断客户的状态,所以cd就算是会误判的,d本来是是左边这个小山的客户,那就是坏客户,但是模型预测他的概率比较高别划分到了好客户的这边了,所以d就是被预测为好客户的坏客户,同样的道理,c就是被预测为坏客户的好客户。2提升图&洛伦兹图假设我们现在有个10000的样本,违约率是7%,我们算出这10000的样本每个客户的违约概率之后降序分为每份都是1000的记录,那么在左图中,第一份概率最高的1000个客户中有255个违约的。违约客户占了全部的36.4。如果不对客户评分,按照总体的算,这个分组;理论上有70个人是违约的。把刚才的图,每组中的随机违约个数以及模型违约个数化成柱形图,可以看到假设现在是p值越大的客户,违约概率越大,那就是说这里第一组的1000个人就是概率倒序排序之后的前1000个人。那么可以看到通过模型,可以识别到第一组的客户违约概率是最高的,那么在业务上运用上可以特别注意这部分客户,可以给予拒绝的处理。那么洛伦兹图就是将每一组的一个违约客户的个数累计之后连接成一条线,可以看到在12组的时候,违约人数的数量上升是一个比较明显的状态,但是越到后面的组,违约人数上升的越来越少了。那么在衡量一个模型的标准就是这个条曲线是越靠近y轴1的位置越好,那样子就代表着模型能预测的违约客户集中在靠前的几组,所以识别客户的效果就是更好。3基尼系数洛伦茨曲线是把违约概率降序分成10等分,那么基尼统计量的上图是把违约概率升序分成10等分,基尼统计量的定义则为:G的值在0到1之间,在随机选择下,G取0。G达到0.4以上即可接受。4ks值ks曲线是将每一组的概率的好客户以及坏客户的累计占比连接起来的两条线,ks值是当有一个点,好客户减去坏客户的数量是最大的。那么ks的值的意义在于,我在那个违约概率的点切下去,创造的效益是最高的,就图中这张图来说就是我们大概在第三组的概率的中间的这个概率切下,我可以最大的让好客户进来,会让部分坏客户进来,但是也会有少量的坏客户进来,但是这已经是损失最少了,所以可以接受。那么在建模中是,模型的ks要求是达到0.3以上才是可以接受的。5roc灵敏度可以看到的是判断正确的违约客户数,这里给他个名字为违约客户正确率(tpr),误判率就是判断错误的正常客户数(fpr)。特殊性就是正常客户的正确率,那么roc曲线是用误判率和违约客户数画的一条曲线。这里就需要明确一点就是,我们要的效果是,tpr的越高越好,fpr是越低越好。ROC曲线就是通过在0-1之间改变用于创建混淆矩阵的临界值,绘制分类准确的违约记录比例与分类错误的正常记录比例。具体我们来看图。我们首先来看A,B点的含义,A点的TPR大概为0.7左右,FPR大概是0.3左右,那么就是说假设我错误的将30%坏客户判断是坏的,那么可以识别70%的客户肯定坏的。B点的TPR大概为0.3左右,FPR大概是0.7左右,那就是我错误的将70%好客户当做坏客户,只能得到30%的客户是确定 坏客户。所以这么说的话,点越靠近左上方,模型就是越好的,对于曲线也是一样的。总结我个人建议,要依据不同的业务目的,选取不同的评估方式, 基尼系数、提升图可以用于用人工审批情况的业务目的,不同的分组突出客户的质量的高低,ks、roc可以用于线上审批审核的情况,根据最小损失公式,计算出概率点。
2023-07-01 11:47:471

kappa值怎么计算

Kappa值是一种用于评估分类或测量方法一致性的统计指标。它衡量了观察者之间的一致性,或者说是观察者与某个标准的一致性。Kappa值的计算基于观察者之间的一致性和预期一致性之间的比较。首先,我们需要创建一个混淆矩阵,该矩阵显示了观察者之间的分类结果。混淆矩阵是一个二维表格,行表示观察者1的分类结果,列表示观察者2的分类结果。每个单元格中的值表示两个观察者在该分类下的一致性。接下来,计算观察者之间的一致性。我们可以通过计算混淆矩阵中对角线上的值之和除以总样本数来得到。这个值表示观察者之间的一致性。然后,计算预期一致性。预期一致性是基于观察者的边际分布和分类结果的边际分布来计算的。我们可以通过计算混淆矩阵中每个单元格的期望频数并求和来得到预期一致性。最后,使用以下公式计算Kappa值:Kappa = (观察者之间的一致性 - 预期一致性) / (1 - 预期一致性)。Kappa值的范围在-1到1之间。值为1表示完全一致,值为0表示与随机一致性相同,值为-1表示完全不一致。请注意,Kappa值的解释可能因领域和具体情况而异。因此,在解释和使用Kappa值时,应该考虑到具体的背景和需求。
2023-07-01 11:48:191

用r语言中利用rsnns得到的准确度混淆矩阵,缺少一类.是什么原因

以一个二分类问题作为研究对象,图1的混淆矩阵显示了一个分类器可能会遭遇的所有情况,其中列(positive/negative)对应于实例实际所属的类别,行(true/false)表示分类的正确与否(注,这里的混淆矩阵的结构跟[2]中的定义并不一样,但实际说明的问题是一致的)
2023-07-01 11:48:391

评价-分类算法的评价指标

对于二元分类,通常可以输出混淆矩阵,看预测的情况,并从中总结出一些指标,给予评价。 混淆矩阵也称误差矩阵,是表示精度评价的一种标准格式,用n行n列的矩阵形式来表示。具体评价指标有总体精度、制图精度、用户精度等,这些精度指标从不同的侧面反映了图像分类的精度。在人工智能中,混淆矩阵(confusion matrix)是可视化工具,特别用于监督学习,在无监督学习一般叫做匹配矩阵。在图像精度评价中,主要用于比较分类结果和实际测得值,可以把分类结果的精度显示在一个混淆矩阵里面。混淆矩阵是通过将每个实测像元的位置和分类与分类图像中的相应位置和分类相比较计算的。 以二元分类举例,混淆矩阵为: 每个样本会对应一个预测值和一个实际标签值,从上图可以知道,实际为1分类,预测结果也是1分类的有100个,而实际是0,预测是1的有3个,以此类推。 为了方便记忆,混淆矩阵的各个单元格有一个统一的称呼: True很好理解,就是预测对了的,Positive代表的意思是实际分类为1的值,Negative代表的是实际分类为0的值。括号里面的就是简称了,这在后面会有用处。 假定1为正样本,0为负样本,则混淆矩阵的各个单元格表述如下: 真正率(true prositive rate, TPR) 或灵敏度(sensitivity)定义为被模型正确预测的正样本比例,为: 同理可得其他: 从直观印象上来说,判断一个分类模型是不是准确,肯定是直接判断分类模型的正确率,这样就可以对模型有一个大概的评价,但是在某些时候,这么做并不靠谱: 假如我有一组产品,其中正品率可能是99.5%,次品率是0.5%,我的预测模型得到的结果是正品99%,次品1%,如果用正确率来算,是相当可观的,但是实际上次品的预测差距是整整1倍,很难说这是一个好的模型。 这种不同类的样本数量完全不成比例的情况,叫做不平衡类(倾斜类)。 对于这种分类,可以根据混淆矩阵来设计一些指标,从而评估模型,精准率就是其中之一: 精准率从公式上看,表达的意思就是预测为正样本的样本中,有多少是真正为正的,代表了预测的精确程度 。以下面的混淆矩阵为例: 所以精准率就是0.9804。 同上,召回率也是从混淆矩阵中总结出来的指标: 表达的意思则是,实际为正样本的个数中,有多少被成功的预测了 (有点类似于我现在从事行业的回收率,姑且这么理解吧) 还是上面的矩阵,那么召回率就是 事实上一个模型大部分时候是很难做到精确率和召回率两全的,有可能追求完美的精确率但是召回率很低,反之也一样,为了同时最大化精确率和召回率,可以用F1值对分类模型进行评价: 这个值肯定是在小于1的范围以内,原则上越大越好了。 ROC曲线是显示分类算法真正率和假正率之间折中的一种可视化方法,把真正率(TPR)作为y轴,假正率(FPR)作为x轴。 设定一个阈值,阈值之上的样本为正样本,之下为负样本,阈值降低,则真正率越高,假正率也会越高(因为判断正样本的条件宽松了),所以ROC曲线应该是x轴和y轴同时增长的,如图: 如果是一个随机分类,则ROC曲线应该是沿着对角线的,如果是分类算法,那么图像越靠近左上角,模型效果越好(假正率很低的时候真正率高)。 AUC是ROC曲线下方的面积,很显然,面积越大越好,如果模型是完美的,那么面积等于1,如果是随即分类,那么就是0.5。 以上这几种常用方法都是二元分类的方法,其中有一些也可以扩展到多分类,另外还有多分类专用的评价方法。 转自 https://www.zhihu.com/question/56403549/answer/151310817 应用多分类问题,把每个类别单独视为”正“,所有其它类型视为”负“,考虑如下的混淆矩阵: Kappa统计是比较两个或多个观测者对同一事物,或观测者对同一事物的两次或多次观测结果是否一致,这个系数的取值范围是[-1,1],实际应用中,一般是[0,1],这个系数的值越高,则代表模型实现的分类准确度越高。 Kappa统计数字的意义如下: 其中,p0表示为总的分类准确度; pe表示为 其中, 代表第i类真实样本个数, 代表第i类预测出来的样本个数。 对于该表中的数据,则有: 海明距离也适用于多分类的问题,简单来说就是衡量预测标签与真实标签之间的距离,取值在0~1之间。距离为0说明预测结果与真实结果完全相同,距离为1就说明模型与我们想要的结果完全就是背道而驰。 它与海明距离的不同之处在于分母。当预测结果与实际情况完全相符时,系数为1;当预测结果与实际情况完全不符时,系数为0;当预测结果是实际情况的真子集或真超集时,距离介于0到1之间。 我们可以通过对所有样本的预测情况求平均得到算法在测试集上的总体表现情况。 铰链损失(Hinge loss)一般用来使“边缘最大化”(maximal margin)。损失取值在0~1之间,当取值为0,表示多分类模型分类完全准确,取值为1表明完全不起作用。 参考: https://www.jianshu.com/p/573ba75aec94
2023-07-01 11:48:461

多分类算法的评估指标

在以往的分类问题求解当中,我们遇到的问题多为二分类问题,我们常用的评估指标有accuracy, precision, recall_score, f1-score, roc_auc_score等。但是在实际生活中,多分类问题也是大量存在的。这一小节,我们就详细的说明一下多分类问题的评估指标。 我们先来看一下sklearn库中的二分类的评估指标,以recall_score为例。在recall_score方法中,有一个很重要的参数"average",它的默认值为"binary"。当在默认参数的情况,该评估方法只能求解二分类问题,如果将该评估方法用于多分类问题,则系统会报错。但"average"同时也向我们提供了其他四个用于解决多分类的问题的参数"micro","macro","weighted","samples"。下面我们以鸢尾花数据集为例来对这四个参数进行逐一说明。 [sklearn.metrics.recall_score](" https://scikit-learn.org/stable/modules/generated/sklearn.metrics.recall_score.html ") 我们以recall_score的计算为例,recall_score的计算公式如下: 为了计算recall_score,我们必须先计算出TP,FN值。我们采用sklearn中的混淆矩阵来计算TP,FN值。 该分类问题的混淆矩阵如下,列为真实类别,行为预测类别: 混淆矩阵(confusion matrix)说明: TP(True positive):把正例正确地预测为了正例,如把类别0预测为0的个数有16个。 FN(False negative):把正例错误地预测为了负列,如把类别1预测为2的个数有5个。 FP(False positive):把负例错误地预测为了正例,假设0为正例,错误地把1,2预测为0就是FP。 TN(True negative):把负例正确地预测为了负例,假设0为正例,1,2为负例,正确地把1,2预测为1,2就是TN。 对于混淆矩阵,可以这样理解。第一个字母T/F,表示预测的正确与否;第二个字母P/N,表示预测的结果为正例或者负例。如TP就表示预测对了,预测的结果是正例,那它的意思就是把正例预测为了正例。 Micro:把所有类汇总在一起计算出最终recall值,其计算公式如下: 在使用Micro参数时,其recall_score = (16+13+11)/(16+13+11+5) = 0.89。 使用sklearn.metrics方法计算: 从上述计算结果可以看出,两者的计算结果是一致的,均为0.89。 Macro:分别计算出每一类的recall值,再取算数平均值,其计算公式如下: 在使用Macro参数时,其recall_score = [16/(16+0+0) + 13/(0+13+5) + 11/(11+0+0)] * 1/3 = 0.91 使用sklearn.metrics方法计算: 从上述计算结果可以看出,macro参数下的recall值为0.91。 Weighted:分别计算每一类的recall值,再乘以各自的权重,然后求和,其计算公式如下: 计算各类的权重: 在使用weighted参数时,其recall_score = 16/(16+0+0) * 0.356 + 13/(0+13+5) * 0.4 + 11/(11+0+0) * 0.244 = 0.89 使用sklearn.metrics方法计算: 从上述计算结果可以看出,weighted参数下的recall值为0.89。 samples应用于多标签的分类问题,每一个样本拥有一个以上的标签。如一个感染病毒性肺炎的患者,就可以说他既属于病毒性肺炎患者这一类,也可以说他属于肺炎患者类。 小结: 1.对于多分类算法的评估,我们需要将sklearn.metrics.recall_score中的"average"参数修改为"micro"或"macro"或者"weighted"。 2.在这个例子当中,我们以recall来举例,像其他的评估指标precision, roc_auc_score, f1-score都是采用同样的方法。 文章参考: [1]. https://zhuanlan.zhihu.com/p/59862986
2023-07-01 11:48:531

实验十七 遥感图像监督分类处理

一、实验目的通过使用ENVI的六种主要的遥感监督分类器——平行六面体分类、最小距离分类、马氏距离分类、最大似然分类、神经网络分类和支持向量机分类的命令,加深对遥感监督分类原理的理解,了解其技术实现过程,初步掌握其ENVI功能命令的基本使用操作。二、实验内容①桂林市TM 遥感影像平行六面体分类;②桂林市TM 遥感影像最小距离分类;③桂林市TM 遥感影像马氏距离分类;④桂林市TM 遥感影像最大似然分类;⑤桂林市TM 遥感影像神经网络分类;⑥桂林市TM 遥感影像支持向量机分类;⑦对6种分类结果进行比较分析。三、实验要求①平行六面体、最小距离、马氏距离、最大似然、神经网络和支持向量机六种分类方法在理论上比较复杂,为取得好的实验效果,要求实验前事先预习其原理,从理论上理解并掌握它们的特点和异同。②确定分类处理方法训练样本需要用到的已知地质资料,提前准备。③编写实验报告。④由于同时做六种分类处理工作量较大,可以根据实际课时情况选择做其中部分。最小距离分类为必须做的方法。四、技术条件①微型计算机;②灌阳地区QuickBird全色波段遥感数据;③ENVI软件;④Photoshop软件(ver.6.0以上)和ACDSee软件(ver.4.0以上)。五、实验步骤遥感影像监督分类可以分为四个过程:样本选择、执行监督分类、评价分类结果和分类后处理。具体操作步骤如下。(一)定义训练1.样本选择(1)在ENVI主菜单中,选择“File>Open Image File”,打开灌阳地区QuickBird全色波段遥感数据,Band3、4、1合成RGB并使之显示在“Display”中,通过分析图像,选择耕地、林地、居民地和水体四种地物样本。图17-1 ROI工具对话框(2)在主图像窗口中,选择“Overlay>Region of Interest”,打开“ROI Tool”对话框,如图17-1所示。(3)在“ROI Tool”对话框中,选择“Window”选项,可以在“Image”、“Scroll”或者“Zoom”窗口中绘制感兴趣区;在“ROI Name”字段输入样本的名称;在“Color”字段中,单击右键选择颜色。(4)在“ROI Tool”对话框中,选择“ROI Type > Polygon”,在“Image”、“Scroll”或者“Zoom”窗口中绘制感兴趣区。(5)完成一类感兴趣区的绘制后,在“ROI Tool”对话框中,选择【New Region】按钮,新建另一类样本种类,重复上述操作。2.评价训练样本在ROI对话框中,选择“Option>Compute ROI Separability”,打开待分类影像文件,选择所有定义的样本类型,可以计算样本的可分离性,如图17-2所示,表示各个样本类型之间的可分离性,用Jeffries-Matusita距离和转换分离度(Transformed Divergence)来表示。ENVI为每一个感兴趣区组合计算Jeffries-Matusita距离和Transformed Divergence,在对话框底部,根据可分离性值的大小,从小到大列出感兴趣区组合。这两个参数的值在0~2.0之间,大于1.9说明样本之间可分离性好,属于合格样本;小于1.8,需要重新选择样本;小于1,考虑将两类样本合成一类样本。图17-2 样本可分离性计算报表(二)执行监督分类在ENVI主菜单中选择“Classificatoin>Supervisred>分类器类型”,可以根据分类的复杂度、精度需求等选择分类器。1.平行六面体分类器平行六面体用一条简单的判定规则对多波谱数据进行分类。判定边界在图像数据空间中形成了一个N维平行六面体。平行六面体的维数由来自每一种选择的分类平均值的标准差的阈值确定。如果像元值位于N 个被分类波段的低阈值与高阈值之间,则它归属于这一类。如果像元值落在多个类里,那么ENVI将这一像元归到最后一个匹配的类里。没有落在平行六面体的任何一类里的区域被称为无类别的。操作步骤如下:(1)在ENVl主菜单栏中选择“Classification>Supervised>Parallelepiped”,在分类输入文件对话框中选择待分类遥感影像,打开“Parallelepiped Parameters”对话框,如图17-3所示。图17-3 平行六面体分类器参数设置对话框(2) Select Classes from Regions:点击【Select All Items】按钮,选择所有的训练样本。(3) Set Max stdev from Mean:设置标准差阈值。有三种类型:不设置标准差阈值(None)、为所有类别设置一个标准差阈值(Single Value)和分别为每种类别设置一个标准差阈值(Multiple Values)。(4)选择“Single Value”,在“Max stdev from Mean”文本框里输入标准差阈值。(5)点击【Preview】按钮,可以预览分类结果。(6)选择分类结果的输出路径及文件名。(7)设置“Output Rule Images”:是否选择规则图像数据。(8)设置完上述参数后,点击【OK】按钮执行分类处理。2.最小距离分类器最小距离分类用到每一个终端单元的均值矢量,计算每一个未知像元到每一类均值矢量的欧几里德距离。所有像元都被归为最近的一类,除非限定了标准差和距离的极限(这时,会出现一些像元因不满足选择的标准,而成为“无类别”),操作步骤如下:(1)在ENVI主菜单栏中选择“Classification>Supervised>Minimum Distance”,在分类输入文件对话框中选择待分类遥感影像,打开“Minimum Distance”对话框,如图174所示。图17-4 最小距离分类器参数设置对话框(2) Select classes from Regions:点击【Select All Items】按钮,选择所有的训练样本。(3) Set Max stdev from Mean:设置标准差阈值。有3种类型:不设置标准差阈值(None)、为所有类别设置一个标准差阈值(Single Value)和分别为每种类别设置一个标准差阈值(Multiple Values)。(4)选择“Single Value”,在“Max stdev from Mean”文本框里输入标准差阈值。(5) Set Max Distances Error:设置允许的最大距离误差,距离大于该值的像元将不被分入该类,如果不满足所有类别的最大距离误差,将会被归为未分类类型中,有3种类型:不设置最大距离误差(None)、为所有类别设置一个最大距离误差(Single Value)和分别为每种类别设置一个最大距离误差(Multiple Values)。(6)点击【Preview】按钮,可以预览分类结果。(7)选择分类结果的输出路径及文件名。(8)设置“Output Rule Images”:是否选择规则图像数据。(9)设置完上述参数后,点击【OK】按钮执行分类处理。.3 马氏距离分类器马氏距离分类是一个方向灵敏的距离分类器,分类时用到了统计。它与最大似然分类有些类似,但是假定所有类的协方差相等,所以是一种较快的方法。所有像元都被归到最临近的ROI类,除非用户限定了一个距离阈值(这时,如果一些像元不在阈值内,就会被划为无类别),操作步骤如下:(1)在ENVI主菜单栏中选择“Classification>Supervised>Mahalanobis Distance”,在分类输入文件对话框中选择待分类遥感影像,打开“Mahalanobis Distance”对话框,如图17-5所示。(2) Select Classes from Regions:点击【Select All Items】按钮,选择所有的训练样本。图17-5 马氏距离分类器参数设置对话框(3) Set Max Distances Error:设置允许的最大距离误差,距离大于该值的像元将不被分入该类,如果不满足所有类别的最大距离误差,将会被归为未分类类型中,有3种类型:不设置最大距离误差(None)、为所有类别设置一个最大距离误差(Single Value)和分别为每种类别设置一个最大距离误差(Multiple Values)。(4)点击【Preview】按钮,可以预览分类结果。(5)选择分类结果的输出路径及文件名。(6)设置“Output Rule Images”:是否选择规则图像数据。(7)设置完上述参数后,点击【OK】按钮执行分类处理。4.最大似然分类器最大似然分类假定每个波段每一类统计呈均匀分布,并计算给定像元属于一特定类别的可能性。除非选择一个可能性阈值,所有像元都将参与分类。每一个像元被归到可能性最大的那一类里。操作步骤如下:(1)在ENVI主菜单栏中选择“Classification>Supervised>Maximum Likelihood”,在分类输入文件对话框中选择待分类遥感影像,打开“Maximum Likelihood Parameters”对话框,如图17-6所示。(2) Select Classes from Regio:n点s击【Select All Items】按钮,选择所有的训练样本。图17-6 最大似然分类器参数设置对话框(3)Set Probability Threshold:设置似然度的阈值,有3种类型:不设置最大似然度阈值(None)、为所有类别设置一个最大似然度阈值(Single Value)和分别为每种类别设置一个最大似然度阈值(Multiple Values),如果选择Single Value,则在Probability Threshold文本框中输入一个0~1的值。(4) Data Scale Factor:输入一个数据比例系数,这个比例系数是一个比值系数,用于将整形反射率或者辐射率数据转换为浮点型数据。例如,对于没有经过辐射定标的8bit数据,设定比例系数为255。(5)点击【Preview】按钮可以预览分类结果。(6)选择分类结果的输出路径及文件名。(7)设置“Output Rule Images”:是否选择规则图像数据。(8)设置完上述参数后,点击【OK】按钮执行分类处理。5.神经网络分类器用计算机模拟入脑的结构,用许多小的处理单元模拟生物的神经元,用算法实现人脑的识别、记忆、思考过程应用于图像分类,操作步骤如下:(1)在ENVI主菜单栏中选择“Classificantion>Supervised>Neural Net”,在分类输入文件对话框中选择待分类遥感影像,打开“Neural Net Parameters”对话框,如图17-7所示。(2)Select Classes from Regions:点击【Select All Items】按钮,选择所有的训练样本。图17-7 神经网络分类器参数设置对话框(3) Activation:选择活化函数,包括对数(Logistic)和双曲线(Hyperbolic)。(4) Training Threshold Contnbution:输入训练贡献阈值(0~1)。该参数决定了与活化节点级别相关的内部权重的贡献量,它用于调节节点内部权重的变化。训练算法交互式地调整节点间的权重和节点阈值,从而使输出层和响应误差达到最小。将该参数设置为0将不会调整节点的内部权重。适当调整节点的内部权重可以生成一幅较好的分类图像,但是如果设置的权重过大,对分类结果会产生不良影响。(5) Training Rate:设置权重调节速度(0~1)。参数值越大则使得训练速度越快,但也增加摆动或者使训练结果不收敛。(6) Training Momentum:设置权重调节动量(0~1)。该值大于0时,在“Training Rate”文本框中输入较大值不会引起摆动。该值越大,训练的步幅越大。该参数的作用是促使权重沿当前方向改变。(7)Training RMS Exit Criterai:指定RMS误差为何值时训练应该停止。RMS误差值在训练过程中将显示在图表中,当该值小于输入值时,即使还没有达到迭代次数,训练也会停止,然后开始进行分类。(8) Number of Hidden Layers:输入所用隐藏层的数量。要进行线性分类,输入值为0;进行非线性分类,输入值应该大于或者等于1。(9) Number of Training Iterations:输入用于训练的迭代次数。(10) Min Output Activation Threshold:输入一个最小输出活化阈值。如果被分类像元的活化值小于该阈值,在输出的分类中该像元将被归入未分类中。(11)选择分类结果的输出路径及文件名。(12)设置“Output Rule Images”:是否选择规则图像数据。(13)设置完上述参数后,点击【OK】按钮执行分类处理。6.支持向量机分类器支持向量机分类(SVM)是一种建立在统计学习理论基础上的机器学习方法。SVM可以自动寻找那些对分类有较大区分能力的支持向量,由此构造出分类器,可以将类与类之间的间隔最大化,因而有较好的推广性和较高的分类准确率,操作步骤如下:(1)在ENVl主菜单栏中选择“Classification>Supervised>SupportVec tor Machine”,在分类输入文件对话框中选择待分类遥感影像,打开“Support Vector Machine Classification Parameters”对话框,如图17-8所示。图17-8 支持向量机分类器参数设置对话框(2) Select Classes From Regions:点击【Select All Items】按钮,选择所有的训练样本。(3) Kemel Type下拉列表中的选项有:Linear、Polynomial、Radial Basis Function和Sigmoid。若选择Polynomial,需要设置一个核心多项式(Degere of Kernel Polynomial)的次数用于SVM,最小值为1,最大值为6;使用向量机规则需要为Kernel指定“this Bias”,默认值为1;“Gamma in Kernel Function”参数设置为大于0的浮点型数据,默认值为输入图像波段数的倒数。若选择“Radial Basis Function”,需设置“Gamma in Kernel Function”参数为大于0的浮点型数据,默认值为输入图像波段数的倒数。若选择Sigmoid,需使用向量机规则需要为Kernel指定“this Bias”,默认值为1;设置“Gamma in Kernel Function”参数为大于0的浮点型数据,默认值为输入图像波段数的倒数。(4) Penalty Parameter:为大于0的浮点型数据,这个参数控制了样本错误与分类刚性延伸之间的平衡,默认值为100。(5)Pyramid Levels:设置分级处理等级,用于SVM训练和分类处理过程,如果这个值为0,将以原始分辨率处理,最大值随图像的大小改变。(6) Pyramid Reclassification Threshold(0~1):当Pyramid Levels值大于0时,需要设置这个重分类阈值。(7) Classification Probability Threshold(0~1):为分类设置概率阈值,如果一个像素计算得到所有的规则概率小于该值,该像素将不被分类。(8)选择分类结果的输出路径及文件名。(9)设置“Output Rule Images”:是否选择规则图像数据。(10)设置完上述参数后,点击【OK】按钮执行分类处理。(三)评价分类结果在执行监督分类后,需要对分类结果进行评价,本次实验采用使用地表真实感兴趣区来计算混淆矩阵(Confusion Matrices)方法进行分类结果评价,操作步骤如下。1.建立地表真实感兴趣区可以在高分辨率图像上,通过目视解译获取各个分类的地表真实感兴趣区;也可以通过野外实地调查,根据调查数据生成地表真实感兴趣区,获取方法同“(一)定义训练”,为了同训练样本区别,我们使用“植被、城镇、河流、农田”作为地表真实感兴趣区名称。2.计算混淆矩阵(1)打开定义验证样本的文件(即灌阳地区QuickBird全色波段)以及图像分类结果,使之显示在“Available Band”列表中。(2)在ENVI主菜单栏中选择“Basic>Region of Interest>Restore Saved ROI File”,打开地表真实感兴趣区文件。(3)在ENVI主菜单栏中选择“Basic>Region of Interest>Restore ROIs via Map”,打开“Reconcile ROIs via Map”对话框(图179),选择相应的地表真实感兴趣区,点击【OK】按钮。(4)在“Select Source File where ROI was Drawn”对话框中,选择定义验证样本的文件(即灌阳地区 QuickBird 全色波段),点击【OK】按钮。(5)在“Select Destination File to Reconcile ROIs to”对话框中,选择匹配目标文件,也就是分类结果图像。(6)在主菜单中选择“Classification>Post Classification> Confusion Matrix> Using Ground Truth ROIs”。图17-9“Reconcile ROIs via Map”对话框(7)在“Classification Input File”对话框中,选择分类结果图像。地表真实感兴趣区将被自动加载到“Match Classes Parameters”对话框中。(8)在“Match Classes Parameters”对话框中,选择所要匹配的名称,然后点击【Add Combination】按钮,将地表真实感兴趣区与最终分类结果相匹配,类别之间的匹配将显示在对话框底部的列表中,如图17-10所示,点击【OK】按钮输出混淆矩阵。图17-10“Match Classse Parameters”对话框(9)在混淆矩阵输出窗口的“Confusion Matrix Parameters”对话框中,选择像素(Pixels)和百分比(Percent),如图17-11所示。(10)点击【OK】按钮,输出混淆矩阵,在输出的混淆矩阵报表中,包含了总体分类精度、Kappa系数、混淆矩阵等几项评价指标。图17-11 混淆矩阵输出对话框(四)分类后处理一般情况下,使用上述分类方法得到的结果难于达到最终应用的目的,所以对获取的分类结果需要进行一些处理,才能得到最终理想的分类结果。图17-12 编辑分类名称和颜色1.更改分类颜色、名称(1)打开分类结果,并使之显示在“Display”窗口中。(2)在分类结果主图像窗口中,选择“Tools>Color Mapping>Class Color Mapping”,打开“Class Color Mapping”对话框,如图17-12所示。(3)从“Selected Classes”列表中选择需要修改的类别,改变其颜色或者名称。(4)完成对需要修改类别的颜色、名称的修改后,选择“Options>Save Changes”保存修改内容。(5)选择“File>Cancel”,关闭“Class Color Mapping”对话框。2.聚类处理分类结果中不可避免的会产生一些面积很小的图斑,从实际应用角度有必要对这些小图斑进行剔除或重新分类。目前,常用的方法有Majority/Minority分析、聚类处理和过滤处理,本次实验选择聚类处理方法对邻近的类似分类区聚类并合并。聚类处理首先将被选的分类用一个扩大操作合并到一起,然后用参数对话框中指定了大小的变换核对分类图像进行侵蚀操作,具体操作步骤如下:在ENVI主菜单栏中选择“Classification> Post Classification> Clump Classes”,在“Classification Input File”对话框中,选择分类结果图像,单击【OK】按钮,打开“Clump Parameters”对话框,如图17-13所示。Clump Parameters对话框参数设置如下。(1)选择分类类别(Select Classes):单击【Select All Items】按钮选择所有类别;(2)输入形态学算子大小(Rows和Cols):默认为3,3;(3)选择输出路径及文件名,单击【OK】按钮,完成聚类处理。3.分类统计分类统计可以基于分类结果计算相关输入文件的统计信息,包括类别中的像元数、最大值、最小值、平均值以及类中每个波段的标准差等,还可以记录每类的直方图以及计算协方差矩阵、相关矩阵、特征值和特征向量,并显示所有分类的总结记录。(1)在ENVI主菜单栏中,选择“Classification> Post Classification > Class Statistics”,在“Classification Input File”对话框中,选择分类结果图像,单击【OK】按钮。(2)在“Statistics Input File”对话框中,选择一个用于计算统计信息的输入文件,点击【OK】按钮,打开“Class Selection”对话框(图17-14),在“Select Classes”列表中,选择想计算统计的类别名称,点击【OK】按钮,打开“Compute Statistics Parameters”对话框(图17-15),选择需要的统计项,包括以下统计类型。图17-13 “Clump Parameters”对话框图17-14 选择分类对话框基本统计(Basic Stats):包括所有波段的最小值、最大值、均值和标准差,若该文件为多波段,还包括特征值。直方图统计(Histograms):生成一个关于频率分布的统计直方图。协方差统计(Covariance):包括协方差矩阵和相关矩阵以及特征值和特征向量。(3)输出结果的方式包括3种:可以输出到屏幕显示、生成统计文件(.sta)和生成文本文件,其中生成的统计文件可以通过“Classification>Post Classification>View Statistics File”命令打开,选择输出路径及文件名,单击【OK】按钮,完成分类统计。4.分类结果转矢量(1)在ENVI主菜单栏中,选择“Classification>Post Classification>Classification to Vector”,在“Rasterto VectorInput Band”对话框中,选择分类结果图像,单击【OK】按钮,打开“Raster to Vector Parameters”对话框,如图17-16所示。(2)选择需要被转换成矢量文件的类别,在“Output”标签中,使用箭头切换按钮选择“Single Layer”,把所有分类都输出到一个矢量层中;或者选择“One Layer per Class”,将每个所选分类输出到单独的矢量层。(3)选择输出路径及文件名,单击【OK】按钮,完成分类结果转矢量文件。图17-15 计算统计参数设置对话框图17-16 栅格转为矢量参数设置完成遥感影像监督分类后,分别利用平行六面体、最小距离、马氏距离、最大似然、神经网络和支持向量机这六种分类器对灌阳地区QuickBird遥感影像进行监督分类处理,利用混淆矩阵对六种分类结果进行评价,得出总体分类精度和Kappa系数。比较六种分类结果,用WORD文件记录,取名为《灌阳地区QuickBird遥感影像六种监督分类方法分类结果评价》,存入自己的工作文件夹。六、实验报告(1)简述实验过程。(2)回答问题:①根据实验操作步骤及各步骤之间的关系,分析所做的监督分类方法在模型设计思想或算法上的共同特点。②通过目视解译,定性比较所获得的监督分类图像的图像识别效果优缺点。实验报告格式见附录一。
2023-07-01 11:49:011

sklearn 混淆矩阵 怎么看

线性无关解的个数与秩有关,你这里特征值为1的时候,题意是解的个数就是2,也就是线性无关的特征相量有2个,那么矩阵的秩为1.你下面个题说只有一个线性无关的解,那么秩就为3-1=2,这里3是A的阶数,1是1个线性无关解,根据秩可以解出a的值,你自己写清楚的.
2023-07-01 11:49:231

牢记分类指标:准确率、精确率、召回率、F1 score以及ROC

我们倾向于使用准确率,是因为熟悉它的定义,而不是因为它是评估模型的最佳工具!精度(查准率)和召回率(查全率)等指标对衡量机器学习的模型性能是非常基本的,特别是在不平衡分布数据集的案例中,在周志华教授的「西瓜书」中就特别详细地介绍了这些概念。为分类任务选择正确的衡量指标 倘若某人声称创建了一个能够识别登上飞机的恐怖分子的模型,并且准确率(accuracy)高达 99%。你相信吗?好了,有这么一个模型:将从美国机场起飞的所有乘客简单地标注为非恐怖分子。已知美国全年平均有 8 亿人次的乘客,并且在 2000-2017 年间共发现了 19 名恐怖分子,这个模型达到了接近完美的准确率——99.9999999%。这听起来确实令人印象深刻,但是我怀疑美国国土安全局不会在近期购买这个模型。尽管这个模型拥有接近完美的准确率,但是在这个问题中准确率显然不是一个合适的度量指标。 恐怖分子检测是一个不平衡的分类问题:我们需要鉴别的类别有两个——恐怖分子和非恐怖分子,其中一个类别代表了极大多数的数据点。另一个不平衡分类问题出现在当疾病在公众中的发病率很低时的疾病监测。在这两种情况下,正例类别——疾病或恐怖分子,远远少于负例类别的数量。这种问题是数据科学中比较常见的例子,其中准确率并不是评估模型性能的很好的衡量标准。 直观地说,我们知道在恐怖分子检测的问题中宣布所有的数据点为负例(非恐怖分子)是毫无裨益的,相反,我们应该聚焦于正例(恐怖分子)的识别。直觉告诉我们,我们应该最大化的是统计学上称为召回率或查全率(recall)的衡量指标,或者是最大化模型找到数据集中所有相关案例的能力。召回率的准确定义是:真正例除以(真正例+假反例)的和,如下图所示。真正例(true positives)是被真确分类的正例数据点,假反例(false negatives)是被错误分类的负例数据点。在恐怖分子检测的例子中,TP 是被正确识别的恐怖分子,FN 是模型误分类为非恐怖分子的恐怖分子的数据点。召回率可以被理解为模型找到数据集中所有感兴趣的数据点的能力。你可能注意到了这个等式中的一些细节:如果我们将所有的个体都预测为恐怖分子,那么模型的召回率就是 1.0!这样我们就得到了一个完美的模型吗?当然,不是!与数据科学中的绝大多数概念一样,在我们想要最大化的指标之间存在一个权衡。在召回率的例子中,当召回率增大的时候,精度就会减小。同样,直觉告诉我们,一个将 100% 的乘客标记为恐怖分子的模型可能是不可用的,因为我们必须禁止每一个乘客的飞行。统计学为我们提供了表达直觉的词汇:这个新的模型是低精度(precision)的,或者说较低的仅识别相关数据点的能力。 精度被定义为真正例除以(真正例+假正例)的和,如下图所示。假正例(FP)指的是模型将实际上是反例的样本误判为正例的情况,或者说,在我们的例子中指的是那些被模型判断为恐怖分子,而实际上不是恐怖分子的个体。召回率(查全率)表达的是模型找到数据集中相关实例的能力,而精度(查准率)表达模型找到的数据点中实际相关的比例。现在我们可以看到,第一个模型给所有的个体标上了非恐怖分子的标签,这个模型是不能使用的。尽管它有着近乎完美的准确率,但是它的精度和召回率都是零,因为没有 TP(真正例)!假设我们轻微地修改一下模型,然后将一个个体正确地识别为恐怖分子。现在,精度是 1(没有假正例,FP),但是召回率很低,因为实际上会有很多假反例(FN)。假设我们走到了另一个极端,将所有的乘客标记为恐怖分子,召回率就会是 1——我们将抓住每一个恐怖分子,但是精度会特别低,我们最终会拘留很多无辜的人。换言之,随着精度的增加,召回率会降低,反之亦然。结合精度和召回率 在某些情况中,我们也许需要以牺牲另一个指标为代价来最大化精度或者召回率。例如,在之前的例子中,在对患者进行随访检查的初步疾病筛查中,我们可能希望得到接近于 1 的召回率—我们想找到所有实际患病的患者。如果随访检查的代价不是很高,我们可以接受较低的精度。然而,如果我们想要找到精度和召回率的最佳组合,我们可以使用 F1 score 来对两者进行结合。 F1 score 是对精度和召回率的调和平均:我们使用调和平均而不是简单的算术平均的原因是:调和平均可以惩罚极端情况。一个具有 1.0 的精度,而召回率为 0 的分类器,这两个指标的算术平均是 0.5,但是 F1 score 会是 0。F1 score 给了精度和召回率相同的权重,它是通用 Fβ指标的一个特殊情况,在 Fβ中,β 可以用来给召回率和精度更多或者更少的权重。(还有其他方式可以结合精度和召回率,例如二者的几何平均,但是 F1 score 是最常用的。) 如果我们想创建一个具有最佳的精度—召回率平衡的模型,那么就要尝试将 F1 score 最大化。 可视化精度和召回率 我已经向你抛出了几个新术语,接下来我将通过一个例子向你展示它们在实际中是如何使用的。在使用之前,我们要简单地谈一谈精度和召回率的概念。 首先要介绍一下混淆矩阵(confusion matrix),给定一个模型的预测标签时,它可以被用来快速计算精度和召回率。二分类的混淆矩阵总共包含四个不同的结果:真正例(TP)、假正例(FP)、真反例(TN),以及假反例(FN)。列表示真实值,行表示预测值。行和列的交叉点指的就是这四种结果。例如,如果我们将一个数据点预测为正例,但是它实际上是反例,那么这就是一个假正例。用混淆矩阵计算精度和召回率需要找到矩阵中对应的值,并应用以下的等式进行计算。其他的用来展示分类模型性能的可视化技术是受试者特征曲线(ROC 曲线,Receiver Operating Characteristic curve)。别被这个复杂的名词吓到!这个思想是相当简单的:ROC 曲线展示了当改变在模型中识别为正例的阈值时,召回率和精度的关系会如何变化。如果我们有一个用来识别疾病的模型,我们的模型可能会为每一种疾病输出介于 0 到 1 之间的一个分数,为了将某个病人标记为患有某种疾病(一个正例标签),我们为每种疾病在这个范围内设置一个阈值,通过改变这个阈值,我们可以尝试实现合适的精度和召回率之间的平衡。 ROC 曲线在 Y 轴上画出了真正例率(TPR),在 X 轴上画出了假正例率 (FPR)。TPR 是召回率,FPR 是反例被报告为正例的概率。这两者都可以通过混淆矩阵计算得到。下图是一个典型的 ROC 曲线:黑色对角线表示随机分类器,红色和蓝色曲线表示两种不同的分类模型。对于给定的模型,只能对应一条曲线。但是我们可以通过调整对正例进行分类的阈值来沿着曲线移动。通常,当降低阈值时,会沿着曲线向右和向上移动。 在阈值为 1.0 的情况下,我们将位于图的左下方,因为没有将任何数据点识别为正例,这导致没有真正例,也没有假正例(TPR = FPR = 0)。当降低阈值时,我们将更多的数据点识别为正例,导致更多的真正例,但也有更多的假正例 ( TPR 和 FPR 增加)。最终,在阈值 0.0 处,我们将所有数据点识别为正,并发现位于 ROC 曲线的右上角 ( TPR = FPR = 1.0 )。 最后,我们可以通过计算曲线下面积 ( AUC ) 来量化模型的 ROC 曲线,这是一个介于 0 和 1 之间的度量,数值越大,表示分类性能越好。在上图中,蓝色曲线的 AUC 将大于红色曲线的 AUC,这意味着蓝色模型在实现准确度和召回率的权衡方面更好。随机分类器 (黑线) 实现 0.5 的 AUC。 回顾 我们已经介绍了几个判断模型性能的属性,每个属性的定义都不是很复杂,但是结合在一起就有点复杂了。让我们通过一个例子做一个快速的回顾来巩固一下这些思想。 对于二分类问题: 真正例(TP):实际上是正例的数据点被标记为正例 假正例(FP):实际上是反例的数据点被标记为正例 真反例(TN):实际上是反例的数据点被标记为反例 假反例(FN):实际上是正例的数据点被标记为反例 召回率和精度衡量指标: 召回率(R):分类模型识别所有相关实例的能力 精度(P):分类模型仅仅返回相关实例的能力 F1 score:使用调和平均结合召回率和精度的指标 召回率和精度的可视化: 混淆矩阵:展示分类模型的真实和预测标签的对应结果。 受试者特征曲线(ROC 曲线):画出真正例率(TPR)和假正例率(FPR),并将此作为模型归类正例阈值的函数。 曲线下面积(AUC):基于 ROC 曲线下方的面积,计算分类模型总体性能的指标。 实例应用 我们的任务是为 100 名病人诊断一种在普通人群中患病率是 50% 的疾病。我们将假设一个黑盒模型,我们输入关于患者的信息,并得到 0 到 1 之间的分数。我们可以改变将患者标记为正例 (有疾病) 的阈值,以最大化分类器性能。我们将以 0.1 为增量从 0.0 到 1.0 评估阈值,在每个步骤中计算 ROC 曲线上的精度、召回率、F1 score 以及在 ROC 曲线上的位置。以下是每个阈值的分类结果:模型在每个阈值下的结果 我们将以阈值为 0.5 为例计算对应的召回率、精度、真正例率、假正例率。首先我们得到混淆矩阵:阈值为 0.5 时的混淆矩阵 我们可以利用混淆矩阵中的数值来计算召回率、精度和 F1 score:然后计算真正例率和假正例率来确定阈值为 0.5 时,模型在 ROC 曲线上对应的点。 为了得到整个 ROC 曲线,我们在每个阈值下都进行这个过程。你可能会想,这是相当乏味的,所以,我们用 python 语言来代替手工计算。用来做这些计算的 Juoyter Notebook 放在了 github 上,每个人都可以看到。最终的 ROC 曲线如下所示,点上面的数字是阈值。在这里我们可以看到,所有的概念都汇集到一起了!在阈值等于 1.0 的点,我们没有将任何病人归类为患病,因此模型的召回率和精度都是 0。随着阈值的减小,召回率增加了,因为我们发现更多的患者患有该疾病。然而,随着召回率的增加,精度会降低,因为除了增加真正例之外,还会增加假正例。在阈值为 0.0 的时候,我们的召回率是完美的——我们发现所有的患者都患有这种疾病——但是精度很低,因为有很多假正例。通过更改阈值并选择最大化 F1 score 的阈值,我们可以沿着给定模型的曲线移动。要改变整个曲线,我们需要建立一个不同的模型。 在每个阈值下最终模型的统计量如下表:基于 F1 score,整体最佳的模型出现在阈值为 0.5 的地方。如果我们想要在更大程度上强调精度或者召回率,我们可以选择这些指标上最佳时对应的模型。 结论 我们倾向于使用准确率,因为每个人都知道它意味着什么,而不是因为它是完成任务的最佳工具!虽然更适合的度量指标 (如召回率和精度) 看起来可能很陌生,但我们已经直观地了解了为什么它们在某些问题 (如不平衡的分类任务) 中有着更好的表现。统计学为我们提供了计算这些指标的形式化定义和方程。数据科学是关于寻找解决问题的正确工具的学科,而且在开发分类模型时,我们常常需要超越准确率(accuracy)的单一指标。了解召回率、精度、F1 score 和 ROC 曲线使我们能够评估分类模型,并应使我们怀疑是否有人仅仅在吹捧模型的准确率,尤其是对于不平衡的问题。正如我们所看到的,准确率(accuracy)并不能对几个关键问题提供有用的评估,但现在我们知道如何使用更聪明的衡量指标! 原文参考:https://towardsdatascience.com/beyond-accuracy-precision-and-recall-3da06bea9f6c
2023-07-01 11:49:291

分类精度评价

通过比较原始遥感图像和经过MNF变换后的图像(图2.4)及其经过MNF_SAM(图版1.1)、SVM(图版1.2)、MNF_SVM(图版1.3)分类后的分类结果,可以明显地发现基于最小噪声分类的支持向量机算法(MNF_SVM)最接近真实的地物信息,支持向量机算法的分类结果也好于光谱角制图法的分类结果。分类结果的精度是通过三种分类模型的混淆矩阵来进行计算的。MNF_SAM分类结果的混淆矩阵见表2.2,SVM分类结果的混淆矩阵见表2.3,MNF_SVM分类结果的混淆矩阵见表2.4。表2.2 MNF_SAM分类精度的混淆矩阵 (单位:像元数目/%)注:总体精度=8472/9368=90.44%;Kappa系数=0.89。表2.3 SVM分类精度的混淆矩阵 (单位:像元数目/%)注:总体精度=8896/9368=94.96%;Kappa系数=0.94。表2.4 MNF_SVM分类精度的混淆矩阵 (单位:像元数目/%)注:总体精度=8929/9368=95.31%;Kappa系数=0.95。从表2.2~2.4中可以明显的得出,MNF _ SAM的总体分类精度=8472/9368 =90.44%,Kappa系数=0.89;SVM的总体分类精度=8896/9368=94.96%,Kappa系数=0.94;MNF_SVM总体分类精度=8929/9368=95.31%,Kappa系数=0.95。即:(1)SVM的总体分类精度要比MNF_SAM的总体分类精度高4.53%,Kappa系数提高0.05;(2)MNF_SVM的总体分类精度要比MNF_SAM的总体分类精度高4.88%,Kappa系数提高0.06;(3)MNF_SVM的总体分类精度要比SVM的总体分类精度高0.35%,Kappa系数提高0.01。MNF_SAM分类结果显示树木和草地的地物分类有许多错误的分类点,在SVM的分类结果图中也有类似的错误,而它的错误信息要比MNF_SAM分类图少;但是这种现象在MNF_SVM分类图中虽然也存在,但是错误量极少。尽管MNF_SVM的分类方法不能做到百分之百的分类正确性,但是相对于MNF_SAM和SVM,不失为一种很好的分类方法,在三种分类方法中是最佳的一种。由此可见,无论从总体分类考虑还是具体地物类别考虑,MNF_SVM方法和SVM方法分类精度都高于MNF_SAM方法,这说明了SVM方法在高光谱影像分类中有着突出表现,同时MNF_SVM方法比SVM方法有更好的表现,其原因主要是因为MNF _SVM方法在分类前经过了MNF变换,去除了噪音波段,对原始信息进行了优化处理,选择了有效的特征信息参加分类,这不仅可以降低高光谱数据的维数,还可以在一定程度上克服Hughes现象,最终达到了高维信息的数据降维和高效利用以及高精度分类的目的。
2023-07-01 11:49:381

遥感软件中混淆矩阵是如何产生的

在图像精度评价中,混淆矩阵主要用于比较分类结果和实际测得值,可以把分类结果的精度显示在一个混淆矩阵里面。混淆矩阵是通过将每个实测像元的位置、分类与分类图像中的相应位置和分类像比较计算的。混淆矩阵的每一列代表了实际测得信息,每一列中的数值等于实际测得像元在分类图象中对应于相应类别的数量;混淆矩阵的每一行代表了遥感数据的分类信息,每一行中的数值等于遥感分类像元在实测像元相应类别中的数量。如有150个样本数据,这些数据分成3类,每类50个。分类结束后得到的混淆矩阵为:每一行之和为50,表示50个样本,第一行说明类1的50个样本有43个分类正确,5个错分为类2,2个错分为类3。软件中生成混淆矩阵都是需要有实测值,或者说是准确的样本数据才行。一般都是随机产生样本数,然后目视判读(或者实际测得)得到近似实际的值,然后软件自己会根据分类结果和样本之间的分类情况来计算得到的。
2023-07-01 11:49:592

Python hmmlearn中的混淆矩阵是怎么表示的

hmmlearn这个库有三种模型,分别是Gaussian,Multinomial和GMMHMM。这三种模型对应的就是三种emission matrix(即混淆矩阵,也就是隐状态到观察态的概率)。Gaussian就是说混淆矩阵是一个高斯分布,即观察态是连续的。Multinomiual就是说混淆矩阵事一个Multibimiual distribution,即观察态势离散的。GMMHMM则是说混淆矩阵是遵循gaussinan mixture 分布,也是连续的。题主问如何把混淆矩阵输入到模型里面。首先你要确定你的混淆矩阵的类型。对于Gaussian类型,就是把你希望的 mean和variance值放到模型里面。我就直接把文档里面的例子搬过来,例子里是建立了一个高斯分布的隐马尔科夫模型。>>> import numpy as np>>> from hmmlearn import hmm#一个隐马尔科夫模型由(p向量,状态转移矩阵,混淆矩阵)来定义。>>> startprob = np.array([0.6, 0.3, 0.1]) # 定义初始状态的概率>>> transmat = np.array([[0.7, 0.2, 0.1], [0.3, 0.5, 0.2], [0.3, 0.3, 0.4]])#定义转移矩阵的概率>>> means = np.array([[0.0, 0.0], [3.0, -3.0], [5.0, 10.0]])#定义混淆矩阵的均值>>> covars = np.tile(np.identity(2), (3, 1, 1))# 定义混淆矩阵的方差>>> model = hmm.GaussianHMM(3, "full", startprob, transmat)# 定义一个混淆矩阵为高斯分布的隐马尔科夫模型。 这里‘full"的意思就是说你输入的方差矩阵每个元素都给出了,不是一个只是对角线上的元素为0的矩阵>>> model.means_ = means>>> model.covars_ = covars#把你希望的均值方差输入你定义的模型里面,到此你就把混淆矩阵输入进模型了>>> X, Z = model.sample(100)对于Multinomial 和 GMM,我还没用,不过Multinomial应该是需要你自己手动输入隐状态到观察态的概率的,而GMM应该是和Gaussian类型类似,只是需要多输入一个权重因子。对于第二个问题,covariance_type意思是你的混淆矩阵的covariance matrix是什么类型,比如若只是对角线上的元素不为0,则把covariance_type设为‘diag"。
2023-07-01 11:50:151

混淆矩阵相关指标(sen,spe,auc,recall,f1)计算(R语言)

ConfusionMatrix 由上表可以计算的指标有: 参考资料:
2023-07-01 11:50:221

envi里对图像做监督分析,选定好ROI,只选了一次,分类好后求得混淆矩阵,请问混淆矩阵是如何产生的?

一次是没有问题,只是这次你用的ROI是你用来分类的ROI,我们在进行混淆矩阵计算的时候选择的ROI应尽量重新选择一组新的作为验证样本。这样分类精度比较准确。
2023-07-01 11:50:281

混淆矩阵输入数据不为整数怎么办

1、首先分别统计分类模型归错类。2、其次归对类的观测值个数。3、最后把结果放在一个表里展示出来。
2023-07-01 11:50:371

spss modelor 决策树 混淆矩阵怎么做

建立这个流程即可
2023-07-01 11:50:431

matlab混淆矩阵字体大小怎么改

1、首先打开Matlab软件,找到文件菜单。2、然后找到Preference选项,点击Font选项再点击custom选项。3、最后在右侧界面中选择要调节哪个窗口区字体的大小。
2023-07-01 11:50:501

AUC与ROC

分类任务不同于回归,本次记录一下分类任务中常用的评价指标AUC与ROC 在搞清楚ROC和AUC之前,需要先弄明白混淆矩阵 混淆矩阵中有着Positive、Negative、True、False的概念,其意义如下: ○ 称预测类别为1的为Positive(阳性),预测类别为0的为Negative(阴性)。 ○ 预测正确的为True(真),预测错误的为False(伪)。 那么就产生了如下的混淆矩阵: 其实也就是 y=x直线,其含义为将正类预测正确的概率=将负类预测正确的概率=0.5,那么就容易看出来,我们期望该条线尽量往左上方偏,也就是尽量让正类预测正确的概率大一些,如下面的图: AUC的优势:
2023-07-01 11:51:031

非监督分类可以用混淆矩阵进行精度评价吗

混淆矩阵(Confusion Matrix)是用来评价有监督学习的准确性的。一般每一行代表真实类别数量,每一列代表预测的数量。非监督学习没有Ground Truth,因此没有混淆矩阵的概念。
2023-07-01 11:51:101

遥感图像的岩性分类

在地面无植被覆盖的岩石裸露地区,利用不同岩石间光谱特性差异,可对岩性进行识别分类。例如在南极裸岩区,岩体无任何植被或其他地物覆盖,在南极拉斯曼丘陵裸岩区的米洛半岛试验区,用TM2,TM3,TM4,TM5,TM7五个波段的图像数据,收集片麻状花岗岩、正长花岗岩、富Fe-Al片麻岩、混合岩和条带状混合岩5 种岩石类型的样区。对样区统计结果,其均值和标准偏差如表8-1所示。利用各类岩石的均值绘制的光谱响应曲线如图8-3所示。从光谱响应曲线上分析,尽管5类岩石光谱亮度的变化相似,但类间相离还是较远的,尤其是TM3,TM4,TM5三个波段。第2类正长花岗岩与其他4类岩石的光谱变化和走向差别较大。因此利用它们的光谱特性是能将5类岩石区分和识别出来的。为此使用最大似然法自动分类,其分类的可信度见表8-2所示的混淆矩阵。从混淆矩阵中可以看出前3类岩石比较纯,而后两类岩石较杂。分类结果并经栅格数据-矢量数据变换后输出的岩性分类图如图8-4所示。经对在米洛半岛上布设的10条测线的检测比较,分布在米洛半岛东部的浅色片麻状花岗岩与条带状混合片麻岩的界线清楚,自动分类界线与实地界线吻合。区内超过30m2以上的暗色麻粒岩的条带和团块,在影像上有显示,但小于30m2时被划分入片麻状花岗岩。富Fe-Al片麻岩分布较广与条带状混合片麻岩在一起,但分类图界线与实地界线也能吻合。正长花岗岩和花岗伟晶岩两种岩脉的颜色和矿物成分相似,遥感图像难于区分,划归同一类。表8-1 五类岩石的光谱亮度均值和标准差图8-3 五类岩性的光谱响应曲线1—片麻状花岗岩;2—正长花岗岩;3—富Fe-Al片麻岩;4—混合岩;5—条带状混合岩表8-2 五类岩石分类结果的混淆矩阵岩性分类识别还可用热惯量卫星数据进行。岩石昼夜温差较大,各种岩石温度的日夜变化又不一样,则利用热惯量卫星白天和夜晚两次所采集的同一地区岩石热辐射测量值的变差可区分不同的岩石类型。图8-5为几种岩石和水的日夜温度变化。图8-4 米洛半岛岩性分布图图8-5 几种岩石和水的日夜温度变化
2023-07-01 11:51:341

统计分析中Kappa值的意义是什么?

Kappa值用于计算两观察者的吻合率。很多时候,我们直觉用准确率来判断,但当答案的分布很不均匀时,准确率不一定是一个好的量度值。kappa系数是一种衡量分类精度的指标。它是通过把所有地表真实分类中的像元总数(N)乘以混淆矩阵对角线(Xkk)的和,再减去某一类地表真实像元总数与该类中被分类像元总数之积对所有类别求和的结果。再除以总像元数的平方减去某一类地表真实像元总数与该类中被分类像元总数之积对所有类别求和的结果所得到的 。结果分析kappa计算结果为-1~1,但通常kappa是落在 0~1 间,可分为五组来表示不同级别的一致性:0.0~0.20极低的一致性(slight)、0.21~0.40一般的一致性(fair)、0.41~0.60 中等的一致性(moderate)、0.61~0.80 高度的一致性(substantial)和0.81~1几乎完全一致(almost perfect)。
2023-07-01 11:52:131

02 隐马尔可夫模型 - HMM的三个问题 - 概率计算问题

01 隐马尔可夫模型 - 马尔可夫链、HMM参数和性质 假设有三个盒子,编号为1,2,3;每个盒子都装有黑白两种颜色的小球,球的比例。如下: 按照下列规则的方式进行有放回的抽取小球,得到球颜色的观测序列: 1、按照π的概率选择一个盒子,从盒子中随机抽取出一个球,记录颜色后放回盒子中; 2、按照某种条件概率选择新的盒子,重复该操作; 3、最终得到观测序列:“白黑白白黑” 例如: 每次抽盒子按一定的概率来抽,也可以理解成随机抽。 第1次抽了1号盒子①,第2次抽了3号盒子③,第3次抽了2号盒子②.... ; 最终如下: ①→③→②→②→③ 状态值 白→黑→白→白→黑 观测值 1、 状态集合: S={盒子1,盒子2,盒子3} 2、 观测集合: O={白,黑} 3、 状态序列和观测序列的长度 T=5 (我抽了5次) 4、 初始概率分布: π 表示初次抽时,抽到1盒子的概率是0.2,抽到2盒子的概率是0.5,抽到3盒子的概率是0.3。 5、 状态转移概率矩阵 A:a11=0.5 表示当前我抽到1盒子,下次还抽到1盒子的概率是0.5; 6、 观测概率矩阵 - 混淆矩阵 - 为了不和之前的混淆矩阵概念冲突,可以称之为发射矩阵,即从一个状态发射到另一个状态: B:如最初的图,b11=第一个盒子抽到白球概率0.4,b12=第一个盒子抽到黑球概率0.6; 在给定参数π、A、B的时候,得到观测序列为“白黑白白黑”的概率是多少? 这个时候,我们不知道隐含条件,即不知道状态值:①→③→②→②→③ ; 我们如何根据π、A、B求出测序列为“白黑白白黑”的概率? 下面给出解决方案。 前向-后向算法 给定模型λ=(A,B,π)和观测序列Q={q1,q2,...,qT},计算模型λ下观测到序列Q出现的概率P(Q|λ); 回顾上面的案例 ,λ=(A,B,π)已知。观测到序列 Q=白→黑→白→白→黑,但我们不知道 状态序列 I=①→③→②→②→③;我们要求解 P(Q|λ) ,即Q=白→黑→白→白→黑 这个观测序列发生的概率。 可以用前向-后向算法来实现 。 Baum-Welch算法(状态未知) 已知观测序列Q={q1,q2,...,qT},估计模型λ=(A,B,π)的参数,使得在该模型下观测序列P(Q|λ)最大。 Baum-Welch算法是EM算法的一个特例,专门用来 求解 隐马尔科夫中隐状态参数 λ=(A,B,π) 。即:根据已知的 观测到序列 Q=白→黑→白→白→黑,去寻找整个模型的一组隐状态参数λ=(A,B,π),使得在模型中 观测序列 发生的可能性P(Q|λ)最大。 Viterbi算法 给定模型λ=(A,B,π)和观测序列Q={q1,q2,...,qT},求给定观测序列条件概率P(I|Q,λ)最大的状态序列I。 已知 观测到序列 Q=白→黑→白→白→黑,当我们得到λ=(A,B,π)后,我们用 Viterbi算法 求出在哪一种 状态序列 发生的可能性最大,即,求出 状态序列 I=①→③→②→②→③;即,抽取什么样的盒子顺序,更可能得到白→黑→白→白→黑这种结果。 1、直接计算法(暴力算法) 2、前向算法 3、后向算法 类似KNN计算最近邻时候的算法。《 01 KNN算法 - 概述 》 也就是说, 暴力算法 需要一个个遍历所有的状态去计算当前状态发生的概率。 按照概率公式,列举所有可能的长度为T的状态序列I={i1,i2,...,iT},求各个状态序列I与观测序列Q={q1,q2,...,qT}的联合概率P(Q,I;λ),然后对所有可能的状态序列求和,从而得到最终的概率P(Q;λ); 分析: 先思考这样一个问题:生成“白-黑-白-白-黑”这样的结果,是不是会有很多种盒子组合的序列来抽取,都会生成这样一个结果?我把这些可能出现“白-黑-白-白-黑”结果的盒子序列的联合概率求出来-P(Q,I;λ),即∑P(Q,I) = P(Q) ,P(Q) 是我们观测到“白-黑-白-白-黑”结果时,符合这个结果的所有状态序列I出现的概率。 公式运用: 设状态序列 I=③→②→①→①→②; T=5; P(I;λ) = π 3 a 32 a 21 a 11 a 12 因为: 在给定状态序列I后,Q中的每个观测值都独立。(贝叶斯网络原理) 贝叶斯网络 所以: P(Q|I;λ)可以用联乘的方式表示 (独立可以使用联合概率) I = ③→②→①→①→② Q=白→黑→白→白→黑 P(Q|I;λ) = b 3白 b 2黑 b 1白 b 1白 b 2黑 P(Q,I;λ) = P(Q|I;λ) × P(I;λ) = b 3白 b 2黑 b 1白 b 1白 b 2黑 × π 3 a 32 a 21 a 11 a 12 若: I 1 = ③→②→①→①→② I 2 = ①→②→③→①→② ... I T = ②→②→①→③→② 都能得出: Q = 白→黑→白→白→黑 因为我所有的盒子都能取出黑球和白球,所以T的值=3 5 ; ∑P(Q,I;λ) 计算的是 I 1 ~ I T 这些状态序列情况下,求出的P(Q,I;λ)的和。 前向 和 后向 算法是运用某种递归(递推)的方式,帮助我们尽快得求解最终结果。 解析: 如果 t 这一时刻观察到的状态是 q t = 雨天;其中y={干,湿,湿... 湿}共t个状态。 先不考虑λ。 α t 是 1时刻~t时刻 所有观测值y1,y2,...yt ,qt 出现的联合概率。 β t 是 t+1时刻~T时刻 所有观测值y t+1 ,y t+2 ,...y T 出现的联合概率。 前向概率-后向概率 指的其实是在一个观测序列中,时刻t对应的状态为si的概率值转换过来的信息。 分析2~3步的推导: 因为q 1 ~ q t 这些条件对 q t+1 ~ q T 的产生没有影响 (理由:贝叶斯网络),所以这些条件可以去掉。 定义:给定λ,定义到时刻t部分观测序列为q1,q2,...,qt且状态为si的概率为 前向概率 。 记做: 在给定参数π、A、B的时候,得到观测序列为“白黑白白黑”的概率是多少? 定义:给定λ,定义到时刻t状态为si的前提下,从t+1到T部分观测序列为qt+1,qt+2,...,qT的概率为 后向概率 。 记做: 分析上面的公式: 如果一共只有t个时间点,t+1的时刻不存在。那么t+1以后发生的是必然事件。 所以 β t (i) = P(q t+1 ,q t+2 ,...,q T ) = 1; 如果实在不理解也没关系,我们姑且认为认为定义了一个初始值,即 β T (i) = 1 ; 从T-1时刻,倒推到1时刻。 首先,β t+1 (j)是什么?是t+1时刻,在状态sj的前提下,下图中圈起来这部分的联合概率。 β t (j)是什么?是t时刻,在状态sj的前提下,下图中圈起来这部分的联合概率。 求给定模型λ和观测序列Q的情况下,在时刻t处于状态si的概率,记做: 单个状态概率的意义主要是用于判断在每个时刻最可能存在的状态,从而可以得到一个状态序列作为最终的预测结果。 求给定模型λ和观测序列Q的情况下,在时刻t处于状态si并时刻t+1处于状态sj概率,记做: 03 隐马尔可夫模型 - HMM的三个问题 - 学习问题
2023-07-01 11:52:261

数据挖掘导论

指通过从大量数据中通过算法搜索隐藏与其中信息的过程。其中机器学习是支撑数据挖掘的主要手段。指让机器通过某种策略学习历史数据后通过建立模型能够进行一定的预测或者识别的能力。 模型中损失是对糟糕预测的惩罚,损失是一个数值。如果模型预测的越准确,则损失的越低。 训练模型表示通过有标签的样本学习所有的权重和偏差的理想值,尽可能的减少损失。 即为模型的y值,函数x最后对应的结论。 能够以有意义的方式汇总各种损失。 例如MSE(均方误差):指的是每个样本平均平方损失。使用数据集来训练模型时,一部分用来训练,另一部分则用于验证。 分为训练集、测试集。 通常将数据集的70%划分为训练集,30%为测试集。另外需要注意对于具有时序性的数据集,需要按照时间划分。 划分完数据集后,需要在训练集上调整,测试集上验证 借助于这种划分可以不断的调整模型,缺点是由于不断使用测试集调整模型,可能造成模型的过拟合。 因此为了解决上述情况,需要引入验证集。 通常将数据集划分为70%训练集,10%验证集,20%测试集。 缺点将浪费10%的数据 其基本思想即将训练集和 测试集调换。原先的测试集用来做训练集,原先的训练集用来做测试集。 其中k折交叉验证,这种动态验证方式可以降低数据划分带来的影响。 通过将数据集均匀的分成5份 不重复的取其中一份作为测试集,用其他四份作为训练集,之后计算该模型在测试集上的MSE 将5次的MSE平均得到最后的MSE 当模型建立好后模型的试用情况,泛化能力可以理解为模型对未知数据的预测情况。 过拟合指数据在训练集表现很好,但是在交叉验证和集和测试集上表现一般,即泛化能力较弱。 产生过拟合的条件包括:训练集数据较少,训练数据中噪声干扰大;模型过于复杂。 如何降低过拟合:1、获取更多的数据 2、选择合适的模型:根据奥卡姆剃刀法则:对于能够解释已知观测现象的假设中,我们应该挑选最简单的。 模型主要分为两大类:监督模型——分类模型、回归模型;无监督学习——从一堆数据中学习其中的统计规律,可以是类别、转化或者概率。 监督学习:指从对应的x、y关系中学习统计规律,然后预测新给出的x对应的y值 常见的监督学习:K—近邻(KNN)、线性回归(回归)、逻辑回归(分类模型)、支持向量机、决策树和随机森林、神经网络 常见的无监督学习:1、聚类算法:k-平均算法(k—means)、密度聚类算法、最大期望值算法;2、降维:主成分分析(PCA),关联规则学习——Apriori1、一级指标 a、混淆矩阵:混淆矩阵是分别统计分类模型归错类、归对类的观测值个数,然后把结果放置一个表中展示。 模型预测和实际结果一致为TP,即为真阳性;模型预测为是,实际为否为假阳性,其次为假阴性,真阴性。 模型中TP与TN数量越大越好。 面对大量数据时,混淆矩阵往往不够用。可以采取以下指标 准确率:(TP+TN)/(TP+TN+FP+FN)。分类模型中判断正确的结果占总观测值的比重。 精确率:TP/(TP+TN)表示预测为正的样本中有多少是对的 查全率:TPR=TP/(TP+FN)表示样本中有多少正例被正确预测 假正率:FPR=FP/(FP+FN) 表示被错误分到正样本中的真实负样本。 1、平均绝对误差MAE2、均方误差MSE3、均方根误差RMSE4、中位绝对误差
2023-07-01 11:52:341

ROC vs. PRC

评价二元分类器性能的指标,常见的有:Accuracy,ROC curve(Sensitivity + Specificity)、AUC、PR curve(Precision + Recall)、F1 score。 其中,主要的争论在于,评价模型时应该选用ROC(即Sensitivity + Specificity)还是PRC(即Precision + Recall)。 把知乎上 「精确率、召回率、F1 值、ROC、AUC 各自的优缺点是什么?」 下的回答都看了一遍,有人偏向ROC,有人偏向PRC。 但有两点基本是统一的: 这篇文章简单讨论一下不同情况下Sensitivity(也即Recall)、Specificity和Precision的变化情况,和由此得之的ROC、PRC选择偏好。 先放结论:总体而言,如果只能二选一,我会选择ROC。 先讲讲混淆矩阵。 混淆矩阵是用来总结一个分类器结果的矩阵。对于k元分类,它是一个k x k的表格,用来记录分类器的预测结果。 最常见的二元分类,它的混淆矩阵是一个2x2表: 二元分类器的大多数指标都是上述TP、FN、FP、TN的排列组合运算。 这篇文章涉及到ROC和PRC下的三个指标: Sensitivity(Recall)指的是,真实的class 1被正确分类的比例。 Specificity指的是,真实的class 0被正确分类的比例。 Precision指的是,被分类为class 1的数据中,被判断正确的数据的比例。 在实际工作中使用分类器做预测的时候,目的一般是为了识别class 1,比如识别一封邮件是否为垃圾邮件(是:1,否:0)。即,我们想要高Sensitivity(或高Recall)。 以下,我基于数据是否平衡,以及Recall和Specificity或高或低的不同情况(双低的情况就不讨论了),简单设计了相应的混淆矩阵,并计算了每种情况下的Recall值、Specificity值和Precision值,具体如图(请无视其中的F1 score): 在数据平衡的情况中,实际的class 1和class 0在数量上都为100。在数据不平衡的情况中,实际的class 1有20个、class 0有180个。 在数据平衡和不平衡的情况中,都有Recall和Specificity双高(0.8)、或二者中一个高(0.8)一个低(0.2)三种情况。Precision根据不同情况所得的混淆矩阵计算。 通过比较上述六种情况下各指标的值可以发现: 下面我通过两个不同的应用场景,来分析具体情况在应该选择ROC还是PRC。 乍看之下,在这个场景里PRC是更好的选择,因为我们对Precision和Recall的要求高。但结合上述实验结果可以发现,在Recall相同的情况下,无论数据是否平衡,Specificity和Precision变化方向总是相同的,但Precision的变化幅度比Specificity小。换言之,Recall不变的时候,看Specificity比看Precision要更容易对比模型优劣。因此,ROC是更好的选择。 在这个场景下,数据显然是极度不平衡的 ,毕竟地震源很少,并且,我们希望Recall越高越好,即使出现误判,我们也不希望放过一个地震源。这个时候,无论是ROC还是PRC都是可选的。 通过对上述两类应用场景的简单分析,可以发现,在选择ROC还是PRC上,要结合具体情况来考虑,但如果二者只能选其一,ROC是更保险的选择。
2023-07-01 11:53:021

常用的机器学习&数据挖掘知识(点)

常用的机器学习&数据挖掘知识(点)Basis(基础):MSE(Mean Square Error 均方误差),LMS(LeastMean Square 最小均方),LSM(Least Square Methods 最小二乘法),MLE(MaximumLikelihood Estimation最大似然估计),QP(Quadratic Programming 二次规划),CP(Conditional Probability条件概率),JP(Joint Probability 联合概率),MP(Marginal Probability边缘概率),Bayesian Formula(贝叶斯公式),L1 /L2Regularization(L1/L2正则,以及更多的,现在比较火的L2.5正则等),GD(GradientDescent 梯度下降),SGD(Stochastic Gradient Descent 随机梯度下降),Eigenvalue(特征值),Eigenvector(特征向量),QR-decomposition(QR分解),Quantile (分位数),Covariance(协方差矩阵)。Common Distribution(常见分布):Discrete Distribution(离散型分布):BernoulliDistribution/Binomial(贝努利分布/二项分布),Negative BinomialDistribution(负二项分布),MultinomialDistribution(多项式分布),Geometric Distribution(几何分布),HypergeometricDistribution(超几何分布),Poisson Distribution (泊松分布)。Continuous Distribution (连续型分布):UniformDistribution(均匀分布),Normal Distribution /Guassian Distribution(正态分布/高斯分布),ExponentialDistribution(指数分布),Lognormal Distribution(对数正态分布),GammaDistribution(Gamma分布),Beta Distribution(Beta分布),Dirichlet Distribution(狄利克雷分布),Rayleigh Distribution(瑞利分布),Cauchy Distribution(柯西分布),Weibull Distribution (韦伯分布)。Three Sampling Distribution(三大抽样分布):Chi-squareDistribution(卡方分布),t-distribution(t-distribution),F-distribution(F-分布)。Data Pre-processing(数据预处理):Missing Value Imputation(缺失值填充),Discretization(离散化),Mapping(映射),Normalization(归一化/标准化)。Sampling(采样):Simple Random Sampling(简单随机采样),OfflineSampling(离线等可能K采样),Online Sampling(在线等可能K采样),Ratio-based Sampling(等比例随机采样),Acceptance-RejectionSampling(接受-拒绝采样),Importance Sampling(重要性采样),MCMC(MarkovChain Monte Carlo 马尔科夫蒙特卡罗采样算法:Metropolis-Hasting& Gibbs)。Clustering(聚类):K-Means,K-Mediods,二分K-Means,FK-Means,Canopy,Spectral-KMeans(谱聚类),GMM-EM(混合高斯模型-期望最大化算法解决),K-Pototypes,CLARANS(基于划分),BIRCH(基于层次),CURE(基于层次),DBSCAN(基于密度),CLIQUE(基于密度和基于网格)。Classification&Regression(分类&回归):LR(Linear Regression 线性回归),LR(LogisticRegression逻辑回归),SR(Softmax Regression 多分类逻辑回归),GLM(GeneralizedLinear Model 广义线性模型),RR(Ridge Regression 岭回归/L2正则最小二乘回归),LASSO(Least Absolute Shrinkage andSelectionator Operator L1正则最小二乘回归),RF(随机森林),DT(DecisionTree决策树),GBDT(Gradient BoostingDecision Tree 梯度下降决策树),CART(ClassificationAnd Regression Tree 分类回归树),KNN(K-Nearest Neighbor K近邻),SVM(Support VectorMachine),KF(KernelFunction 核函数PolynomialKernel Function 多项式核函、Guassian KernelFunction 高斯核函数/Radial BasisFunction RBF径向基函数、String KernelFunction 字符串核函数)、NB(Naive Bayes 朴素贝叶斯),BN(Bayesian Network/Bayesian Belief Network/ Belief Network 贝叶斯网络/贝叶斯信度网络/信念网络),LDA(Linear Discriminant Analysis/FisherLinear Discriminant 线性判别分析/Fisher线性判别),EL(Ensemble Learning集成学习Boosting,Bagging,Stacking),AdaBoost(Adaptive Boosting 自适应增强),MEM(MaximumEntropy Model最大熵模型)。Effectiveness Evaluation(分类效果评估):Confusion Matrix(混淆矩阵),Precision(精确度),Recall(召回率),Accuracy(准确率),F-score(F得分),ROC Curve(ROC曲线),AUC(AUC面积),LiftCurve(Lift曲线) ,KS Curve(KS曲线)。PGM(Probabilistic Graphical Models概率图模型):BN(Bayesian Network/Bayesian Belief Network/ BeliefNetwork 贝叶斯网络/贝叶斯信度网络/信念网络),MC(Markov Chain 马尔科夫链),HMM(HiddenMarkov Model 马尔科夫模型),MEMM(Maximum Entropy Markov Model 最大熵马尔科夫模型),CRF(ConditionalRandom Field 条件随机场),MRF(MarkovRandom Field 马尔科夫随机场)。NN(Neural Network神经网络):ANN(Artificial Neural Network 人工神经网络),BP(Error BackPropagation 误差反向传播)。Deep Learning(深度学习):Auto-encoder(自动编码器),SAE(Stacked Auto-encoders堆叠自动编码器,Sparse Auto-encoders稀疏自动编码器、Denoising Auto-encoders去噪自动编码器、Contractive Auto-encoders 收缩自动编码器),RBM(RestrictedBoltzmann Machine 受限玻尔兹曼机),DBN(Deep Belief Network 深度信念网络),CNN(ConvolutionalNeural Network 卷积神经网络),Word2Vec(词向量学习模型)。DimensionalityReduction(降维):LDA LinearDiscriminant Analysis/Fisher Linear Discriminant 线性判别分析/Fisher线性判别,PCA(Principal Component Analysis 主成分分析),ICA(IndependentComponent Analysis 独立成分分析),SVD(Singular Value Decomposition 奇异值分解),FA(FactorAnalysis 因子分析法)。Text Mining(文本挖掘):VSM(Vector Space Model向量空间模型),Word2Vec(词向量学习模型),TF(Term Frequency词频),TF-IDF(Term Frequency-Inverse DocumentFrequency 词频-逆向文档频率),MI(MutualInformation 互信息),ECE(Expected Cross Entropy 期望交叉熵),QEMI(二次信息熵),IG(InformationGain 信息增益),IGR(Information Gain Ratio 信息增益率),Gini(基尼系数),x2 Statistic(x2统计量),TEW(TextEvidence Weight文本证据权),OR(Odds Ratio 优势率),N-Gram Model,LSA(Latent Semantic Analysis 潜在语义分析),PLSA(ProbabilisticLatent Semantic Analysis 基于概率的潜在语义分析),LDA(Latent DirichletAllocation 潜在狄利克雷模型)。Association Mining(关联挖掘):Apriori,FP-growth(Frequency Pattern Tree Growth 频繁模式树生长算法),AprioriAll,Spade。Recommendation Engine(推荐引擎):DBR(Demographic-based Recommendation 基于人口统计学的推荐),CBR(Context-basedRecommendation 基于内容的推荐),CF(Collaborative Filtering协同过滤),UCF(User-basedCollaborative Filtering Recommendation 基于用户的协同过滤推荐),ICF(Item-basedCollaborative Filtering Recommendation 基于项目的协同过滤推荐)。Similarity Measure&Distance Measure(相似性与距离度量):Euclidean Distance(欧式距离),ManhattanDistance(曼哈顿距离),Chebyshev Distance(切比雪夫距离),MinkowskiDistance(闵可夫斯基距离),Standardized Euclidean Distance(标准化欧氏距离),MahalanobisDistance(马氏距离),Cos(Cosine 余弦),HammingDistance/Edit Distance(汉明距离/编辑距离),JaccardDistance(杰卡德距离),Correlation Coefficient Distance(相关系数距离),InformationEntropy(信息熵),KL(Kullback-Leibler Divergence KL散度/Relative Entropy 相对熵)。Optimization(最优化):Non-constrainedOptimization(无约束优化):Cyclic VariableMethods(变量轮换法),Pattern Search Methods(模式搜索法),VariableSimplex Methods(可变单纯形法),Gradient Descent Methods(梯度下降法),Newton Methods(牛顿法),Quasi-NewtonMethods(拟牛顿法),Conjugate Gradient Methods(共轭梯度法)。ConstrainedOptimization(有约束优化):Approximation Programming Methods(近似规划法),FeasibleDirection Methods(可行方向法),Penalty Function Methods(罚函数法),Multiplier Methods(乘子法)。Heuristic Algorithm(启发式算法),SA(SimulatedAnnealing,模拟退火算法),GA(genetic algorithm遗传算法)。Feature Selection(特征选择算法):Mutual Information(互信息),DocumentFrequence(文档频率),Information Gain(信息增益),Chi-squared Test(卡方检验),Gini(基尼系数)。Outlier Detection(异常点检测算法):Statistic-based(基于统计),Distance-based(基于距离),Density-based(基于密度),Clustering-based(基于聚类)。Learning to Rank(基于学习的排序):Pointwise:McRank;Pairwise:RankingSVM,RankNet,Frank,RankBoost;Listwise:AdaRank,SoftRank,LamdaMART。Tool(工具):MPI,Hadoop生态圈,Spark,BSP,Weka,Mahout,Scikit-learn,PyBrain…以及一些具体的业务场景与case等。
2023-07-01 11:53:091

Python hmmlearn中的混淆矩阵是怎么表示的

肯定是公式有错,NaN是not a number的意思,肯定是某个地方写错了。不过,既然是matlab编程,为什么不使用神经网络工具...
2023-07-01 11:53:161

分类指标

评估结果用于反应模型的好坏,必须设计合适的评估指标来测量该模型的好坏。模型的好坏是相对的,使用不同的评估指标对模型的判定会得到不一样的结果。 评估指标根据任务类型可以分为:分类指标、回归指标、聚类指标和排序指标等,本文主要关注分类指标。 分类的评价指标一般是分类准确率(accuracy):对于给定的数据集,分类正确的样本数与总的样本数之比。准确率在二分类与多分类都能应用。 对于二分类常用的指标为精确率(precision)与召回率(recall)。 根据上图的混淆矩阵可以得出精确率与召回率的定义: TP—将正类预测为正类的样本数; FN—将正类预测为负类的样本数; FP—将负类预测为正类的样本数; TN—将负类预测为负类的样本数; 精确率定义为: 召回率定义为: 精确率可以理解为在所有预测为正类这个事件的准确率有多高,召回率可以理解为真正的正类有多少被挑选了出来。理想情况下,精确率和召回率都是越高越好,但是事实一般相反,精确率高的时候,召回率低;召回率高的时候,精确率低。因此需要结合实际业务看更关注哪一个指标来判定模型好坏,为了达到更好效果,设计了一些综合考虑精确率与召回率的指标,如 $F_1$ 值, $F_1$ 值是精确率和召回率的调和平均值: 精确率和召回率都高时, 值也会高。 [ROC曲线]作为常用的二分类评价指标,其全称为接收者操作特征曲线(Receiver Operating Characteristic)。该曲线纵坐标真正率(TPR),横坐标为假正率(FPR),其定义如下: 则ROC曲线位于横纵坐标阈值都为0-1之间,因此首先考虑4个特殊点(0,0)、(1, 1)、(0, 1)、(1, 0)。(0, 0)点表示TPR=FPR=0,即TP=FP=0,表示该分类器将所有样本都分为负类。同理,(1, 1)表示分类器将所有样本都分类为正类。(0, 1)点表示:FPR=0,TPR=1;意味着FP=0,FN=0,这样就是一个完美的分类器,正负类都分类完全正确。(1, 0)点表示TP=0, TN=0,这就是最糟糕的一个分类器,完美错过所有正确答案。综上,ROC曲线上的点越靠近左上方,那么该分类器就越好。 每一对TPR与FPR值可以描绘出一个点,为了得到一条ROC曲线,需要调整不同的预测概率,来得到不同TPR于FPR值对,这样就可以得到一条ROC曲线。AUC(Area under the Curve of ROC)即ROC曲线下的面积,取值越大说明正确率越高。 sklearn.metrics模块实现了一些loss, score以及一些工具函数来计算分类性能。 一些二分类(binary classification)使用的case:
2023-07-01 11:53:221

提取的绿地信息精度如何确定

确定提取的绿地信息精度的方法包括:对工作区域进行抽样调查、基于混淆矩阵的评估方法、Kappa系数评估法、ROC曲线评估法等。1、对工作区域进行抽样调查:抽取一定数量的绿地点位和非绿地点位,使用全站仪或高精度GPS测定各点位的实际坐标和面积,然后与提取结果进行对比,计算提取精度和误差,并分析造成误差的原因。2、基于混淆矩阵的评估方法:首先根据分类结果制作混淆矩阵(分类精度矩阵),通过对角线项、错分项和miss items三大指标来评价分类准确性、误差率和漏识率等信息。3、Kappa系数评估法:该方法是一种量化分类精度的方法,它可以考虑到分类准确率、随机预测的表现、样本分布等因素,通过计算Kappa系数来评价算法提取绿地信息的准确性。4、ROC曲线评估法:该方法以真阳率和假阳率作为算法提取准确度的衡量指标,通过计算ROC曲线下的面积来反映分类器的性能。提取的绿地信息精度是指利用遥感技术和相关算法,在遥感影像中自动或半自动地提取绿地信息的准确性程度。这个过程中,绿地被区分为绿地类和非绿地类两个类别之一。提取的绿地信息精度越高,表示绿地被准确地识别和分割出来的可能性就越大。
2023-07-01 11:53:411