精华内容
下载资源
问答
  • 深度学习——时间序列模型评价指标总结
    千次阅读
    2021-09-08 07:53:59

    大Y老师:小X,你做的这个时间序列模型用什么指标评价啊?

    小X 直接把这篇甩给老师:老师您看哪个指标顺眼,就选哪个指标~


    最近在实现基于深度学习的时间序列模型时,需要对模型进行评价,总结了一些常用的和不常用的评价指标,还有相关概念的辨析。

    上面是玩笑话,在对模型进行评价时,要根据实际的数据特征和指标特性进行选择。

    和方差

    SSE(the sum of squares due to error),是观测值(observed values)与预测值(predicted values)的误差的平方和,公式为:
    S S E ( y , y ^ ) = ∑ i = 1 n ( y i − y ^ i ) 2 SSE(y,\widehat{y})=\sum_{i=1}^{n}(y_{i}-\widehat{y}_{i})^{2} SSE(y,y )=i=1n(yiy i)2

    均方误差

    MSE(mean squared error),是观测值(observed values)与预测值(predicted values)的误差的平方和的均值,即SSE/n。它是误差的二阶矩,包含估计量的方差(variance)及其偏差(bias),是衡量估计量质量的指标,其公式为:
    M S E ( y , y ^ ) = 1 n ∑ i = 1 n ( y i − y ^ i ) 2 MSE(y,\widehat{y})=\tfrac{1}{n}\sum_{i=1}^{n}(y_{i}-\widehat{y}_{i})^{2} MSE(y,y )=n1i=1n(yiy i)2

    均方根误差

    RMSE(root mean squared error),也称作RMSD(root mean square deviation),是MSE的算数平方根。由于每个误差(each error)对RMSD的影响与误差的平方(squared error)成正比,因此较大的误差会对RMSE影响过大,RMSE对异常值很敏感。其公式为:
    R M S E ( y , y ^ ) = 1 n ∑ i = 1 n ( y i − y ^ i ) 2 RMSE(y,\widehat{y})=\sqrt{\tfrac{1}{n}\sum_{i=1}^{n}(y_{i}-\widehat{y}_{i})^{2}} RMSE(y,y )=n1i=1n(yiy i)2

    平均绝对值误差

    MAE(mean absolute error),是时间序列分析中预测误差常用的指标,由于MAE使用的是与被测数据相同的尺度(scale),因此不能用于比较两个不同尺度的序列。MAE又被称为L1范数损失函数(就是可以做为损失函数),是真实数据与预测数据之差的绝对值的均值。

    公式为:
    M A E ( y , y ^ ) = 1 n ∑ i = 1 n ∣ y i − y ^ i ∣ MAE(y,\widehat{y})=\tfrac{1}{n}\sum_{i=1}^{n}\left | y_{i}-\widehat{y}_{i}\right | MAE(y,y )=n1i=1nyiy i

    平均绝对值百分比误差

    MAPE(mean absolute percentage error),也被称为MAPD(mean absolute percentage deviation),是一种衡量预测方法的预测准确性的指标。MAPE在解释相对误差(relative error)方面非常直观,在评价模型时MAPE通常用作回归(regression)问题的损失函数(loss function)。

    从式子中可以看出,在计算MAPE时如果出现一系列特别小的分母,可能会出现一些问题。比如分母为0的奇异点、较小的误差引起结果发生非常大的变化等。

    解决这个问题的替代方案,可以将公式中的实际值,替换为该序列的所有实际值的平均值。这种方案等效于求绝对差的总和除以实际值的总和,也被称为加权绝对百分比误差(WAPE),或者wMAPE(weighted mean absolute percentage error)。

    公式为:
    M A P E ( y , y ^ ) = 100 % n ∑ i = 1 n ∣ y i − y ^ i y i ∣ MAPE(y,\widehat{y})=\tfrac{100\% \displaystyle }{n}\sum_{i=1}^{n}\left | \frac{y_{i}-\widehat{y}_{i}}{y_{i}}\right | MAPE(y,y )=n100%i=1nyiyiy i

    对称平均绝对百分比误差

    SMAPE(symmetric mean absolute percentage error),实际值与预测值差值的绝对值除以实际值与预测值绝对值之和的一半。公式为:
    S M A P E ( y , y ^ ) = 100 % n ∑ i = 1 n ∣ y i − y ^ ∣ ∣ ∣ y i ∣ + ∣ y ^ i ∣ 2 ∣ SMAPE(y,\widehat{y})=\frac{100\%}{n}\sum_{i=1}^{n}\frac{\left | y_{i}-\widehat{y}\right |}{\left | \frac{\left |y_{i} \right | + \left |\widehat{y}_{i}\right |}{2}\right |} SMAPE(y,y )=n100%i=1n2yi+y iyiy

    均方对数误差

    MSLE(mean squared log error),公式为:

    M S L E ( y , y ^ ) = 1 n ∑ i = 1 n ( l o g ( 1 + y i ) − l o g ( 1 + y ^ i ) ) 2 MSLE(y,\widehat{y})=\frac{1}{n}\sum_{i=1}^{n}\left ( log(1+y_{i})-log(1+\widehat{y}_{i})\right )^{2} MSLE(y,y )=n1i=1n(log(1+yi)log(1+y i))2

    绝对中位差

    MAD(median absolute deviation),是数据点到中位数的差值的绝对值再取中位数,MAD通常用于统计数据离差(dispersion)。对于MAD来说,少量的异常值不会影响最终结果。

    公式为:

    M A D ( y , y ^ ) = m e d i a n ( ∣ y 1 − y ^ 1 ∣ , . . . , ∣ y n − y ^ n ∣ ) MAD(y,\widehat{y})= median(\left | y_{1} - \widehat{y}_{1}\right |,...,\left | y_{n} - \widehat{y}_{n}\right |) MAD(y,y )=median(y1y 1,...,yny n)
    论文中常用的指标:

    结构相似性

    SSMI(structural similarity ),用于衡量两幅图像的相似度,公式为:
    S S I M ( x , y ) = ( 2 μ x μ y + C 1 ) ( 2 σ x y + C 2 ) ( μ x 2 + μ y 2 + C 1 ) ( σ x 2 + σ y 2 + C 2 ) SSIM(x,y)= \frac{(2\mu_{x}\mu_{y} + C_{1})(2\sigma_{xy} + C_{2})}{(\mu_{x}^{2}+\mu_{y}^{2}+C_{1})(\sigma _{x}^{2}+\sigma _{y}^{2}+C_{2})} SSIM(x,y)=(μx2+μy2+C1)(σx2+σy2+C2)(2μxμy+C1)(2σxy+C2)
    其中x为预测图像的像素值,y为真实图像的像素值。𝜇𝑥为𝑥的均值,𝜇𝑦为𝑦的均值,𝜎𝑥 2为𝑥的方差,𝜎𝑦 2为𝑦的方 差, 𝜎𝑥𝑦为𝑥和𝑦的协方差,𝐶1 、𝐶2 是像素值的动态范围。SSIM的范围为0~1,值越大说明两幅图像越相似。

    临界成功指数

    CSI(critical success index),公式为:
    C S I = a a + b + c CSI=\frac{a}{a+b+c} CSI=a+b+ca

    命中率

    POD(probability of detection),公式为:
    P O D = a a + c POD=\frac{a}{a+c} POD=a+ca

    虚警率

    FAR(false alarm rate),公式为:
    F A R = b a + b FAR=\frac{b}{a+b} FAR=a+bb
    其中:

    a为命中数,即预测值与实际值均大于判别阈值的数量。

    b为空报数,即预测值大于判别阈值而实际值小于判别阈值。

    c为漏报数,即预测值小于判别阈值而真实值大于判别阈值。


    方差

    Variance,用于衡量随机变量离散程度的度量,是各样本数据与平均值之差的平方和的均值。公式为:
    V a r = 1 n ∑ i = 1 n ( x i − μ ) 2 Var=\frac{1}{n}\sum_{i=1}^{n}\left ( x_{i}-\mu\right )^{2} Var=n1i=1n(xiμ)2
    其中,xi为变量,𝜇为总体均值,n为样本总数。

    标准差

    SD(standard deviation),又称均方差,是方差的平方根,公式为:
    S D = 1 n ∑ i = 1 n ( x i − μ ) 2 SD= \sqrt{\frac{1}{n}\sum_{i=1}^{n}\left ( x_{i}-\mu\right )^{2}} SD=n1i=1n(xiμ)2

    方差、标准差、均方误差、均方根误差辨析:

    1.标准差就是均方差,不是均方误差。

    2.方差与均方误差形式上接近,但概念不同。方差是样本数据与样本平均值差值的平方和的均值。均方误差是预测数据与真实数据差值的平方和的均值。

    3.同样,标准差与均方根误差形式上接近,但概念不同。

    更多相关内容
  • 模型评价指标

    2021-01-21 16:42:31
    在此总结一下基本的模型评价指标和使用方法: 附上几个写的比较清晰的博客: 常见的回归评价 一文读懂分类算法常用评价指标 解sklearn中logloss的计算过程 评价指标的选择是很重要的 回归问题 MSE(均方误差) 真实...
  • 机器学习算法评价指标:精确率、召回率、准确率、错误率、F1值、PR曲线、ROC曲线、AUC值

    机器学习笔记(5)——模型评价指标

    本文部分图片来源网络或学术论文,文字部分来源网络与学术论文,仅供学习使用。

    目录

    机器学习笔记(5)——模型评价指标

    1、精确率、召回率、准确率、错误率

    混淆矩阵

    各个指标的对比

    注意

    2、F1值

    为什么选择F1值?

    F值的定义

    两个场景帮助更好理解F1值

    3、PR曲线

    PR曲线适用范围(优缺点)

    PR曲线怎么看?

    4、ROC曲线

    ROC曲线怎么看?

    ROC曲线的主要作用:

    ROC曲线的优点

    何时选择PR曲线和ROC曲线?

    4、AUC值

    AUC值定义

    AUC值怎么看?

    AUC值的意义

    AUC指标评价的优点

    ROC曲线与AUC值的比较


    1、精确率、召回率、准确率、错误率

    混淆矩阵

    首先需要了解模型预测结果得到的混淆矩阵。

    Actual positive

    Actual negative

    Predicted positive

    TP (true positive)

    真阳性

    FP (false positive)

    假阳性

    Predicted negative

    FN (false negative)

    假阴性

    TN (true negative)

    真阴性

     (Positive与Negative是预测标签,True与false代表预测正误。)

    TP (真正,True Positive)表示真实结果为正例,预测结果也是正例;

    FP (假正,False Positive)表示真实结果为负例,预测结果却是正例;

    TN (真负,True Negative)表示真实结果为正例,预测结果却是负例;

    FN (假负,False Negative)表示真实结果为负例,预测结果也是负例。

    不难发现四者满足以下关系式:TP+FP+FN+TN=样本总数;FN+TP=TN+FP

    各个指标的对比

     有上述混淆矩阵可以得到几个评价指标:准确率、精确率、灵敏度(召回率)、特异度几个指标。

    指标

    公式

    含义

    适用范围

    准确率

    (accuracy)

    真实为positive的占所有所有预测总数的比例

    二分类、多分类

    错误率

    (errorrate)

    真实为negative的占所有所有预测总数的比例

    二分类、多分类

    召回率(R值)

    (recall)

    灵敏度

    (sensitivity)

    真实positive被预测为positive的比例

    二分类

    精确率(P值)

    (precision)

    模型预测为positive中真实的positive比例

    二分类

    特异性

    (specific)

    真实negative被预测为negative的比例

    二分类

    F1值

    F1值是精确率P值和召回率R值的调和均值

    二分类

    AUC值随机给定一个正样本和一个负样本,分类器输出该正样本为正的那个概率值比分类器输出该负样本为正的那个概率值要大的可能性。二分类

    注意:

    精确率和召回率是二分类指标,不适用多分类,由此得到P-R曲线以及ROC曲线均是二分类评估指标(因为其横纵轴指标均为二分类混淆矩阵计算得到)。

    准确率适用于多分类评估。(可以将多分类问题转换为二分类问题进行求解,将关注的类化为一类,其他所有类化为一类)。

    2、F1值

    为什么选择F1值?

    理想情况下,精确率和召回率两者都越高越好。然而事实上这两者在某些情况下是矛盾的,精确率高时,召回率低;精确率低时,召回率高,此时需要调和P值和R值。

    F值的定义

    F函数是一个常用指标,F值是精确率和召回率的调和均值,F值可泛化为对精确率和召回率赋不同权值进行加权调和:

    利用α给P和R赋予不同的权重,若α=1则为F1值,即

     

    • 地震的预测对于地震的预测,我们希望的是recall非常高,也就是说每次地震我们都希望预测出来。这个时候我们可以牺牲precision。情愿发出1000次警报,把10次地震都预测正确了;也不要预测100次对了8次漏了两次。此时,我们就只看recall=99.9999%(地震全中)时的precision,其他指标就变得没有了意义。

      嫌疑人定罪基于不错怪一个好人的原则,对于嫌疑人的定罪我们希望是非常准确的。及时有时候放过了一些罪犯(recall低),但也是值得的。对于分类器来说,本质上是给一个概率,此时,我们再选择一个CUTOFF点(阀值),高于这个点的判正,低于的判负。那么这个点的选择就需要结合你的具体场景去选择。

    • 3、PR曲线

    • PR曲线:横坐标是召回率R值,纵坐标是精确率P值

    PR曲线适用范围(优缺点)

    优点:

    • 利用ROC曲线对不同模型进行比较。
    • 如果一个模型的ROC曲线被另一个模型的曲线完全包住,则可断言后者的性能由于前者,否则较难比较。
    • 因为ROC曲线很容易画,ROC曲线下的面积也比较容易计算。

    缺点:

    • 如果数据中类别分布不均衡,ROC不再适用。
    • 当两个模型的ROC曲线发生交叉,则很难说哪一个模型更好,这时候可以用AUC来作为一个比较合理的判据。
    • precision与Recall的折中(trade off),曲线越靠近右上角性能越好,曲线下的面积叫AP分数,能在一定程度上反应模型的精确率和召回率都很高的比例。
    • 先看平滑不平滑,在看谁上谁下(同一测试集上),一般来说,上面的比下面的好(红线比黑线好)。
    • 看平衡点,上图红色线代表的模型的平衡点要大于黑色线模型代表的平衡点,表明前者优于后者。
    • 因为P值、R值用来评价二分类模型效果,因此PR曲线也只能评价二分类模型。

    PR曲线怎么看?

    1. precision与Recall的折中(trade off),曲线越靠近右上角性能越好,曲线下的面积叫AP分数,能在一定程度上反应模型的精确率和召回率都很高的比例。
    2. 先看平滑不平滑,在看谁上谁下(同一测试集上),一般来说,上面的比下面的好(红线比黑线好)。
    3. 看平衡点,上图红色线代表的模型的平衡点要大于黑色线模型代表的平衡点,表明前者优于后者。

     

    4、ROC曲线

    ROC曲线:横坐标(x轴)是假阳性率、纵坐标(y轴)是真阳性率。

     真阳性率(TPR)和假阳性率(FPR)的公式如下:

    同时,TPRFPR又有其他名称,如下:

    敏感度 sensitivity = 召回率recall = true positive rate

    特异性 specificity = 1- false positive rate

    ROC曲线怎么看?

    当数据量少时,绘制的ROC曲线不平滑;当数据量大时,绘制的ROC曲线会趋于平滑。

    ROC曲线越靠近左上角性能越好。左上角坐标为(0, 1),即假阳性率FPR=0,真阳性率TPR=1,根据FPRTPR公可以得知,此时FN=0 FP=0,模型对所有样本分类正确。

    一般来说,如果ROC是光滑的,那么基本可以判断没有太大的overfitting,这个时候调模型可以只看AUC,面积越大一般认为模型越好。

    ROC曲线的主要作用:

    1. ROC曲线能很容易的查出任意阈值对学习器的泛化性能影响。
    2. 有助于选择最佳的阈值。ROC曲线越靠近左上角,模型的查全率就越高。最靠近左上角的ROC曲线上的点是分类错误最少的最好阈值,其假正例和假反例总数最少。
    3. 可以对不同的学习器比较性能。将各个学习器的ROC曲线绘制到同一坐标中,直观地鉴别优劣,靠近左上角的ROC曲所代表的学习器准确性最高。

    ROC曲线的优点:

    1. 方法简单、直观、通过图示可观察分析方法的准确性,并可用肉眼作出判断。ROC曲线将真正例率和假正例率以图示方法结合在一起,可准确反映某种学习器真正例率和假正例率的关系,是检测准确性的综合代表。
    2. 在生物信息学上的优点:ROC曲线不固定阈值,允许中间状态的存在,利于使用者结合专业知识,权衡漏诊与误诊的影响,选择一个更加的阈值作为诊断参考值。

    何时选择PR曲线和ROC曲线?

    ROC曲线:如果测试数据集类别分布大致均衡的时候我们可以用ROC曲线。

    PR曲线:当数据集类别分布不均衡的时候采用PR曲线。

    5、AUC

    AUC值定义

    Area Under roc Curve(AUC),即ROC 曲线下方的那部分面积的大小,衡量学习器优劣的一种性能指标。AUC可通过对ROC曲线下各部分的面积求和而得。假定ROC曲线是由坐标为 的点按序连接而形成,则AUC可估算为:

    AUC值怎么看?

    通常AUC的值介于0.51.0之间,较大的AUC代表了较好的性能。一般训练出的模型,AUC>0.5,如果AUC=0.5,这个分类器等于没有效果,效果与完全随机一样,如果AUC<0.5,则可能是标签标注错误等情况造成

    AUC值的意义

    MannWhitney U statistic的角度来解释,AUC就是从所有1样本中随机选取一个样本, 从所有0样本中随机选取一个样本,然后根据你的分类器对两个随机样本进行预测,把1样本预测为1的概率为p1,把0样本预测为1的概率为p0p1>p0的概率就等于AUC

    AUC是指随机给定一个正样本和一个负样本,分类器输出该正样本为正的那个概率值比分类器输出该负样本为正的那个概率值要大的可能性。

    AUC指标评价的优点

    AUC的计算方法同时考虑了学习器对于正例和负例的分类能力,在样本不平衡的情况下,依然能够对分类器做出合理的评价。AUC对样本类别是否均衡并不敏感,这也是不均衡样本通常用AUC评价预测性能的一个原因。

    ROC曲线与AUC值的比较

    ROC 曲线具有不随样本比例而改变的良好性质,因此能够在样本比例不平衡的情况下较好地反映出分类器的优劣。

    AUC计算主要与排序有关,所以他对排序敏感,而对预测分数没那么敏感。

    展开全文
  • 回归模型的性能的评价指标主要有:RMSE(平方根误差)、MAE(平均绝对误差)、MSE(平均平方误差)、R2_score。 先看看计算公式: 1、MSE(平均平方误差、均方误差) 均方误差是线性回归中最常见的损失函数,MSE...

    回归模型的性能的评价指标主要有:RMSE(平方根误差)、MAE(平均绝对误差)、MSE(平均平方误差)、R2_score。

    先看看计算公式:

    1、MSE(平均平方误差、均方误差)

    均方误差是线性回归中最常见的损失函数,MSE可以评价数据的变化程度,MSE的值越小,说明预测模型描述实验数据有更好的精确度。

    2、RMSE(均方根误差、标准误差)

    标准误差是均方误差的算术平方根,开方后,误差的结果与数据是一个级别的。标准误差对测量中的离群点反映非常敏感。标准误差可以反映出测量的精密度。

    3、MAE(平均绝对误差)

     平均绝对误差能更好的反映预测值误差的实际情况。

    4、R2_score

     如果结果是1,说明我们的预测模型无错误

    分子分母同除以m,分子就变成了均方误差,分子为方差。

     R2介于0和1之间,越接近于1,回归拟合效果越好,一般认为超过0.8的模型拟合优度比较高。

    展开全文
  • LDA主题模型评价指标汇总

    千次阅读 多人点赞 2021-02-04 11:49:42
    主题模型评价指标-主题距离引入与效果展示注意事项个人经验 引入与效果展示 在训练好LDA模型后,一个很自然的举动就是尝试去衡量模型的好坏。 比如去看看自己聚出来的模型直接有哪些不同。 本文介绍的模型评价可视化...

    前言

    在训练好LDA模型后,一个很自然的举动就是尝试去衡量模型的好坏。在介绍这些评价方法之前,有些东西是需要意识到的

    • 使用gensim包进行LDA建模时对于相同语料集会每次建模会产生不同的模型,这将导致影响模型的评价指标。可以通过

      numpy.dandom.seed(1)

      来固定随机种子似的每次训练都能得到相同的模型。

    一、主题距离(Topic distance)

    引入与思考

    在我们训练一个LDA模型时可能会考虑如下问题

    1. 因为训练LDA模型是一个十分漫长的过程,如果我们能知道模型何时收敛,那么就可以及时停止训练,节省训练时间。因此一个很自然的想法就是每隔特定的时间或者轮数或者文档数就输出一次模型,然后进行模型之间的比较。具体模型之间的比较方法请往下看。

    在我们得到一个LDA模型后通常会思考两件事:

    1. 看看这个模型和其他模型相比的好坏。

      我们都知道LDA可以看做两个矩阵,分别是文档和主题的矩阵以及主题和单词的矩阵。gensim的dictionary可以通过训练语料集得到corpus,所以其实每个模型可以用 θ ( T o p i c ∗ D i c t i o n a r y ) \theta(Topic*Dictionary) θ(TopicDictionary)的矩阵来表示。

      横向研究一个模型的好坏,很重要的一点是计算它与其他模型之间的相似性和差异性。

      对于一个模型中的一个主题,使用最能体现该主题的 t o p n top_n topn个词进行标注表示(annotation),再通过距离计算公式计算矩阵 [ t o p i c i ] [ t o p i c j ] [topic_i][topic_j] [topici][topicj]的大小来刻画主题i和主题j之间的差异性和相似性。

    2. 看看自己聚出来的模型中每个主题之间有哪些不同。
      如下图,对于单个模型评价可视化指标的最终的效果是这样的:
      在这里插入图片描述

    • 我使用LDA把语料集聚成了10类,所以横纵坐标长度为10,格子的颜色代表纵坐标主题和横坐标主题的相关程度,非对角线上的格子越蓝越好,z值越趋近于1越好,因为这说明两个主题之间的区分度比较大,交集较少。
    • +++的意思是两个主题之间共享的主题词
    • .- - -的意思是“ words from the symmetric difference of topics”,也就是最能体现两个主题差异的单词
    • 对于两个模型进行比较,方法也很简单,只需要把横轴或者纵轴换成另一个模型的主题表示即可。

    函数与原理

    本文重点分析一下该方法实现的原理是是什么。先看下实现该指标可视化的函数:

    def plot_difference_plotly(mdiff, title="", annotation=None):
        """Plot the difference between models.
    
        Uses plotly as the backend."""
        import plotly.graph_objs as go
        import plotly.offline as py
    
        annotation_html = None
        if annotation is not None:
            annotation_html = [
                [
                    "+++ {}<br>--- {}".format(", ".join(int_tokens), ", ".join(diff_tokens))
                    for (int_tokens, diff_tokens) in row
                ]
                for row in annotation
            ]
    
        data = go.Heatmap(z=mdiff, colorscale='RdBu', text=annotation_html)
        layout = go.Layout(width=950, height=950, title=title, xaxis=dict(title="topic"), yaxis=dict(title="topic"))
        py.iplot(dict(data=[data], layout=layout))
    

    可以看到该函数有三个输入参数,mdiff,title,annotation。其中title就是可视化图片的标题,mdiff是不同主题之间的距离矩阵,annotation则记录了不同主题之间的共享主题词和差异主题词(就是上面提到的+++和- - -),可以通过

    mdiff, annotation = lda_model.diff(lda_model, distance='jaccard', num_words=50)
    

    得到。其中lda_model就是你用gensim包训练的lda模型, distance='jaccard’说明采用了jaccard距离进行计算, 除了jaccard,还有‘kullback—leibler’,‘hellinger’以及‘jensen-shannon‘共四种距离计算方法可以选择。num_words=50说明使用了相关性最高的50个单词代表主题进行计算。

    Jaccard distance

    Jaccard系数常用来衡量两个样本之间的相似性,公式为:
    J ( A , B ) = ∣ A ⋂ B ∣ ∣ A ⋃ B ∣ J(A,B)=\frac{|A\bigcap B|}{|A\bigcup B|} J(A,B)=ABAB
    在这里插入图片描述
    通过维基百科上的图片可以很好理解这一概念,其实就是两个数据集重合的部分所占的比例。

    至于Jaccard distance,有两种不同的表示,其一是 J d ( A , B ) = 1 − J ( A , B ) J_d(A,B)=1-J(A,B) Jd(A,B)=1J(A,B),其二是等于非交集(symmetric difference),即 J d ( A , B ) = ∣ A ⋃ B ∣ − ∣ A ⋂ B ∣ J_d(A,B)=|A\bigcup B|-|A\bigcap B| Jd(A,B)=ABAB

    Kullback-Leibler divergence

    KL散度用来衡量两个分布的差异性。就是说对于 t o p i c i topic_i topici来说, t o p i c j topic_j topicj有多大程度的不同。值得注意的是,KL散度是不对称的。
    D K L ( P ∥ Q ) = ∑ x ∈ X P ( x ) ln ⁡ ( P ( x ) Q ( x ) ) D_{\mathrm{KL}}(P \| Q)=\sum_{x \in \mathcal{X}} P(x) \ln \left(\frac{P(x)}{Q(x)}\right) DKL(PQ)=xXP(x)ln(Q(x)P(x))
    Aurélien Géron的这个视频对KL散度的物理意义解释的非常清晰

    Hellinger distance

    同样是用来衡量两个分布差异性或相似性的方法,属于f-divergence的一种。对于离散的两个分布,有如下定义:
    H ( P , Q ) = 1 2 ∥ P − Q ∥ 2 H(P, Q)=\frac{1}{\sqrt{2}}\|\sqrt{P}-\sqrt{Q}\|_{2} H(P,Q)=2 1P Q 2
    系数的目的是为了让值在区间[0,1]之间

    注意事项

    • 此函数仅适用于gensimLDA模型,gensim的HDP和malletLDA并不可用,如果使用会报错如:
    AttributeError: 'LdaMallet' object has no attribute 'diff'
    
    • Jaccard 的鲁棒性较好,但是敏感度较低,(就是训练得到的效果看起来会好一点);hellinger的敏感度要高一些。

    个人经验

    此指标需要与其他指标综合进行考虑。仅仅看模型在该指标下可视化效果还不错,并不能说明你的模型很好。我在实际训练过程中发现不管我的预处理做的有多烂(正常范围内的烂),coherence score有多低(只有0.3多一点),pyvislda看到的效果有多差(很大面积的重叠),这项指标总会以一个“相对很让我满意”的结果安慰我一下。

    所以切记不可太过依赖该指标。你可以考虑在其他指标都还可以的情况下,看看这项指标,了解一下主题间的一些差异性,而不应该通过该指标来进行预处理工作中和LDA中的参数修改。

    二、pyldavis

    简介

    这是一个常用的LDA结果可视化工具包,使用pip install pyldavis进行导入。
    调用函数:

    pyLDAvis.enable_notebook()
    
    #mLDA时需要添加
    #mallet_model = gensim.models.wrappers.ldamallet.malletmodel2ldamodel(ldamallet)
    
    vis = pyLDAvis.gensim.prepare(model, corpus, dictionary)
    pyLDAvis.save_html(vis,'model.html')
    

    输入参数有模型,语料集以及字典。
    可视化效果如下所示:

    在这里插入图片描述
    左边的气泡代表聚出来的主题,气泡的大小体现该主题的重要程度。左边则是对整个语料集和每个主题内关键词进行打分排序。

    注意事项

    两个坐标轴是通过PCoA(principal coordinate analysis,主坐标分析)得到的,但也在某种程度上是无意义的。它其实只是把每个主题给在坐标轴上表示出来了,但是仅此而已,因为语义空间是高维的。

    • 你很难直观的比较每个主题之间的重要程度,仅仅通过比较每个气泡的大小
    • 你也很难比较每个主题之间的相关性关系,因为气泡之间的位置关系和他们的相关性没多大关系。
      在这里插入图片描述

    三、困惑度(perplexity)

    perplexity是一个很垃圾的评价指标,别用它。因为它并没有进行任何语义上的分析。让我们仅仅看下perplexity是如何评价模型的:
    H ( D ′ ) = ∑ D ′ P ( w d ) log ⁡ 2 P ( w d ) P P = 2 H ( D ′ ) \begin{aligned} H\left(D^{\prime}\right) &=\sum_{D^{\prime}} P\left(w_{d}\right) \log _{2} P\left(w_{d}\right) \\ P P &=2^{H\left(D^{\prime}\right)} \end{aligned} H(D)PP=DP(wd)log2P(wd)=2H(D)
    这只是个对于保留集(hold out data)的极大似然估计罢了。 D ′ D^{\prime} D保留集数据,我们假设你有个很捞的模型,不管输入什么最后的分类预测结果都是cat,这时恰好你的预留集里面只有cat,结果只能是自欺欺人罢了。

    所以我们说,perplexity并没有告诉你语料集的语义信息。

    四、语义一致性(Coherence Score)

    概念及流程

    现在考虑一种能捕捉到模型中语义信息的评价方法。

    假设我们没有模型,我们想看下面这两句话的语义一致性
    在这里插入图片描述
    那么我们可能会首先提取出这些关键词来表示这两句话的语义
    在这里插入图片描述
    然后这两句话实际上都是描写曲棍球(ice hockey)的,那么再去掉那些低信息的词后,我们就得到了如下表示曲棍球的关键词词袋。
    在这里插入图片描述
    现在的问题是如果再给我们一个新的语料集,我们怎么分析它们和这些表示曲棍球词袋的语义一致性。

    在这里插入图片描述
    具体处理步骤如上图流水线所示,

    1. t是你模型训练得到的主题集,如下图所示
      在这里插入图片描述

    2. S是你模型得到的每个主题中的前n个关键词的组合。必须是两个两个一组,可以是两个单词一组,两个(两个单词)一组,或者两个(三个单词)一组。
      在这里插入图片描述

    3. 然后引入外部语料集计算probability:
      在这里插入图片描述

    4. 计算语义确信度衡量(confirmation messure)之 C U M a s s C_{UMass} CUMass: C U M a s s = 2 N ∗ ( N − 1 ) ∑ i = 2 N ∑ j = 1 i − 1 log ⁡ P ( w i , w j ) P ( w j ) C_{U M a s s}=\frac{2}{N *(N-1)} \sum_{i=2}^{N} \sum_{j=1}^{i-1} \log \frac{P\left(w_{i}, w_{j}\right)}{P\left(w_{j}\right)} CUMass=N(N1)2i=2Nj=1i1logP(wj)P(wi,wj)

      可以看到这其实是单词间同时出现的条件似然,同时包括了两个单词的信息。所以说这是能体现语境(context)的,不像perplexity。
      最后一步的Aggregation其实就是求个均值。

    注意事项

    • 除了 C U M a s s C_{UMass} CUMass之外,还有很多计算coherence score的指标,比如 C V C_{V} CV C U C I C_{UCI} CUCI等等,但是有几个需要注意的问题:
      1. 在流水线中仅在最后计算了均值,但是却没有关注方差。所以能难去确认你算的均值能否代表整个语料集的相似性。
      2. 流水线中的数据处理没有做归一化
      3. 需要格外注意测试集的选取,有时结果不好可能并不是你的模型不好,而是你的测试集和训练集不匹配。
      4. 有时你模型聚出来100类,发现效果没有35类的分数高,可能是因为那100类中有55类是没用的主题,拉低了分数。但是!那100类中还有45类有用的主题,却没有被该评价指标反映出来。

    五、主观参考评价(Human Judgement Based Methods)

    Word Intrusion

    当我们用模型训练得到一个主题时,主观判断这个模型好坏的一个方法是先得到这个主题的关键词,然后人为的插入一个不属于该主题的词,再让别人把这个插入词给找出来。如果有很多人一下就能找出来这个插入词,比如下面这个集合中apple就是插入词,那么就说明这个模型聚出来的主题效果还不错。
    {dog, cat, horse, apple, pig, cow}
    反之,如果别人找不出来所谓的插入词,则说明你聚出来的主题效果可能不大行,比如下面这个集合。
    {cat, airport, yarn, horse, security, tomorrow}

    Topic Intrusion

    对于一篇文档我们也可以训练出一些主题的概率分布,对于那些概率分布极低的主题,我们可以相信这篇文档大概说的主要不是那些内容。
    在这里插入图片描述
    如果同时给出几个主题,你认为的那些和文档讨论内容相关度高的主题恰好是模型聚出来概率分布高的主题,而那些和文档讨论内容相关度低的主题恰好是模型聚出来概率分布低的主题;则说明模型的效果不错。

    总结:主题模型很难评价!

    • 定性分析费时费力且主观因素强
    • 定量分析通常是一些被封装好的算法(intrinsic methods),有时很难去理解结果。
      最后,模型的好坏终究还是取决于你自己。在这里插入图片描述

    参考

    papers

    1. Chang et. al Reading Tea Leaves: How Humans Interpret Topic Models, NIPS 2009
    2. Wallach et. al Evaluation Methods for Topic Models, ICML 2009
    3. Lau et. al Machine Reading Tea Leaves: Automatically Evaluating Topic Coherence and Topic Model Quality, ACL 2014
    4. Röder et. al Exploring the Space of Topic Coherence Methods, Web Search and Data Mining 2015
    5. Sievert et. al LDAvis: A method for visualizing and interpreting topics ACL 2014 Workshop on Interactive Language Learning, Visualization, and Interfaces
    6. Chuang et. al Termite: Visualization Techniques for Assessing Textual Topic Models, AVI 2012
    7. Chuang et. al Topic Model Diagnostics: Assessing Domain Relevance via Topical Alignment, ICML 2013

    others

    1. https://github.com/RaRe-Technologies/gensim/pull/1243
    2. https://www.youtube.com/watch?v=UkmIljRIG_M&list=RDCMUCOjD18EJYcsBog4IozkF_7w&start_radio=1&t=0
    3. https://radimrehurek.com/gensim/models/ldamodel.html
    4. https://en.wikipedia.org/wiki/Jaccard_index
    5. https://en.wikipedia.org/wiki/Hellinger_distance
    6. https://rare-technologies.com/what-is-topic-coherence/
    7. https://mattilyra.github.io/2017/07/30/evaluating-topic-models.html
    展开全文
  • 机器学习模型评价指标整理

    千次阅读 2020-04-24 06:30:09
    最近对这几个指标最近又有点生疏了,整理个笔记方便查看: 分类/回归问题评估指标: 分类问题 回归问题 准确率 – Accuracy MSE(均方误差) 精确率(查准率)- Precision MAE (平均绝对误差) 召回率...
  • 推荐模型评价指标 AUC

    千次阅读 2019-05-22 14:50:07
    推荐中常用的模型评价指标有准确率,召回率,F1-score和AUC。 1. 什么是AUC AUC指标是一个[0,1]之间的实数,代表如果随机挑选一个正样本和一个负样本,分类算法将这个正样本排在负样本前面的概率。值越大,表示分类...
  • 【深度学习】模型评价指标

    千次阅读 2021-09-10 10:25:24
    一、分类任务 分类任务一般有二分类、多分类和多标签分类。 多分类: 表示分类任务中有多...常见的评价指标有:准确率(Accuracy)、精确率(Precision)、召回率(Recall)、F1 score、ROC曲线(Receiver Operating
  • 世上最全的模型评价指标解析

    千次阅读 2020-01-04 09:45:31
    分类模型评价指标 评价指标: 准确率 (Accuracy),混淆矩阵 (Confusion Matrix),精确率(Precision)即查准率,召回率(Recall)即查全率,灵敏度(sensitivity),特异度(specificity),TPR,, FPR,PR...
  • 分类模型评价指标

    千次阅读 2019-05-20 14:39:49
    在分类型模型评判的指标中,常见的方法有如下三种: 混淆矩阵(也称误差矩阵,Confusion Matrix) ROC曲线 AUC面积 混淆矩阵是ROC曲线绘制的基础,同时它也是衡量分类型模型准确度中最基本,最直观,计算最简单的...
  • sklearn 回归模型评价指标及代码示例

    千次阅读 2022-01-23 23:46:02
    评价指标主要包括: R-Square (R^2)决定系数、线性相关系数 取值范围为 [0,1] ,越接近1,模型效果越好,越接近0,效果越差;但是随着预测数据量的增加会增加降低R2值,因此只能大致评估模型 from sklearn....
  • 介绍模型四个评价指标之前,先介绍一下混淆矩阵: 混淆矩阵 (Confusion Matrix) 真实值 正样本(Position) 负样本(Negative) 预测值 正样本(Position) TP(True Position) FP(False Position) ...
  • 机器学习二分类模型评价指标详述

    千次阅读 2021-01-10 17:32:37
    问题建模 机器学习解决问题的通用流程...在这个过程中要明确业务指标模型预测目标,根据预测目标选择适当指标用于模型评估。接着从原始数据中选择最相关的样本子集用于模型训练,并对样本子集划分训练集和测试集...
  • 大家都知道,机器学习无非就是分类和回归,回归需要用到哪些评价指标呢,以及如何看这些评价指标?以下是对全网几篇文章部分的截取,由于文章较为分散,篇幅也不长,就不贴引用了,作者见谅。 1.R Square介绍以及为...
  • 机器学习分类模型评价指标详述

    万次阅读 多人点赞 2018-09-10 11:38:37
    问题建模 机器学习解决问题的通用流程:问题建模——特征...在这个过程中要明确业务指标模型预测目标,根据预测目标选择适当指标用于模型评估。接着从原始数据中选择最相关的样本子集用于模型训练,并对样本子集...
  • 机器学习分类算法模型评价指标

    千次阅读 2019-10-14 11:18:13
    概览 目前,业内对于机器学习,数据挖掘,...这篇文章主要总结的是分类算法(二分类)的一些模型评价指标。 1.混淆矩阵 要了解准确率和召回率,先要知道什么是混淆矩阵,它反映的是预测值与真实值的预测情况,它共有...
  • 评估模型不同的应用有着不同的目标,不同的评价指标模型评价指标准确率准确率越高,模型不一定越好准确率是常见的一种评估模型,但是准确率越高模型不一定越好。举个例子假设,在1000个样本中,有999个正样本,1个负...
  • 回归模型评价指标

    千次阅读 2018-11-20 10:37:13
    回归模型应用场景:预测,趋势分析、投资风险分析等 (1)MAE(Mean Absolute Error)平均绝对差值 (2)MSE(Mean Square Error)均方误差,是回归任务最常用的性能度量,最小二乘估计也是使用均方误差 (3)...
  • 机器学习算法模型评价指标ROC AUC

    千次阅读 2018-03-04 21:12:52
    当然,在进行实验的时候,一种或两种衡量指标并不能说明一个模型的好坏,因此我们需要了解常用的几种机器学习算法衡量指标。 本文整理介绍了7种最常用的机器学习算法衡量指标:分类精度、对数损失、混淆矩阵、曲线下...
  • 需要项目数据、代码资料,请扫码关注公众号:风控圏子 联系后台人员获取资料!!!也可同时加入相关社群,一起学习,...建模过程中,评价模型经常用到一些指标,现整理如下。指标具体含义还请查阅相关资料。
  • 机器学习之算法模型评价指标

    千次阅读 2018-08-07 21:49:57
    机器学习评价指标 1、几个概念 精确率:Precision——”正确被检索的item(TP)”占所有”实际被检索到的(TP+FP)”的比例 召回率:Recall——“正确被检索的item(TP)”占所有”应该检索到的item(TP+FN)”的比例 ...
  • 常用的一些算法模型评价指标

    千次阅读 2017-04-11 17:57:36
    1. 基本概念 ...TP —— True Positive (真正, TP)被模型预测为正的正样本;...TN —— True Negative(真负 , TN)被模型预测为负的负样本 ;可以称作判断为假的正确率  FP ——False Positive
  • 机器学习分类器模型评价指标

    万次阅读 2017-01-09 14:28:15
    分类器评价指标主要有: 1,Accuracy 2,Precision 3,Recall 4,F1 score 5,ROC 曲线 6,AUC 7,PR 曲线混淆矩阵混淆矩阵是监督学习中的一种可视化工具,主要用于比较分类结果和实例的真实信息。矩阵中的每...
  • 二分类模型评价指标-Python实现

    千次阅读 2018-07-16 12:43:52
      Sklearn的metrics模块下有多个计算模型评价指标的函数,本文只介绍二分类的指标函数。 1.准确率 1.1参数说明 sklearn.metrics.accuracy_score(y_true, y_pred, normalize=True, sample_weight=None) ...
  • 当我们训练完自己的模型以后,怎样知道不同的权重到底哪个好呢。一张张看?显然不合理,所以需要有一个衡量的标准。 1.分类网络: 首先要知道TP,FP,TN,FN的概念 如下图: 多种类的时候可以使用混淆矩阵来看...
  • 本文介绍了回归模型模型选择上的常见评估指标:SST、SSR、SSE和R-square。 SST:The sum of squares total SSR:The sum of squares regression SSE:The sum of squares error SST The sum of squares total. SST...
  • 对于二分类问题,预测模型会对每一个样本预测一个概率p。 然后,可以选取一个阈值t,让p>t的样本预测为正,反之为负。 这样一来,根据预测的结果和实际的样本标签可以把样本分为4类 实际正样本 实际负样....
  • 模型评价指标简介-从准确度到AUC

    千次阅读 2020-12-22 16:57:46
    一、模型评价指标简介模型评价指标是为了衡量模型的泛化能力而建立的指标。对于分类和回归两类监督学习,分别有各自的评判标准。二、分类模型评价指标混淆矩阵:实际表现实际表现10预测值1TPFP预测值0FNTF说明:T/F:...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 67,605
精华内容 27,042
关键字:

模型评价指标

友情链接: 计数器.rar