精华内容
下载资源
问答
  • 算法和算法评价

    万次阅读 多人点赞 2019-07-05 20:42:11
    一、算法的基本概念 ...2.确定性:算法中每条指令必须有确切的含义,不会产生二义性,对于相同的输入只能得出相同的输出。 3.可行性:一个算法是可行的,即算法中描述的操作都是可以通过已经实现的基本运算执行有...

    一、算法的基本概念

     

    算法是对特定问题求解步骤的一种描述,它是指令的有限序列,其中的每条指令表示一个或多个操作。具有以下性质:

    1.有穷性:一个算法必须总是在执行有穷步之后结束,且每一步都可在有穷时间内完成

    2.确定性:算法中每条指令必须有确切的含义,不会产生二义性,对于相同的输入只能得出相同的输出。

    3.可行性:一个算法是可行的,即算法中描述的操作都是可以通过已经实现的基本运算执行有限次来实现的。

    4.输入:一个算法有零个或多个输入,这些输入取自于某个特定的对象的集合。

    5.输出:一个算法有一个或多个输出,这些输出是与输入有着某种特定关系的量。

    我们的目标是设计出正确、可读、健壮、高效率、低存储量需求的算法!

     

    二、算法效率的度量:时间复杂度与空间复杂度

    1.时间复杂度

     

    (1)基本概念

           一个语句的频度是指该语句在算法中被重复执行的次数。算法中所有语句的频度之和记为T(n),它是该算法问题规模n的函数,时间复杂度主要分析T(n)的数量级,因此通常采用算法中基本运算的频度f(n)来分析算法的时间复杂度。因此,算法的时间复杂度记为

    T(n)=O(f(n))。

    式中,O的含义是T(n)的数量级,其严格的数学定义是:若T(n)和f(n)是定义在正整数集合上的两个函数,则存在正常数C和n0 ,使得当n≥n0 时,都满足0≤T(n)≤Cf(n)。

           算法的时间复杂度不仅依赖于问题的规模n,也取决于待输入数据的性质(如输入数据元素的初始状态)

           例如,在数组[0…n-1]中,查找给定值k的算法大致如下:

           (1)i=n-1;

           (2)while(i≥0&&(A[i]!=k)

           (3)i--;

           (4)return i;

    在上面的算法中语句(3)为基本运算,我们令t=i,则程序结束条件为t=n-1,也就是基本运算执行了n-1次,所以时间复杂度为O(n);

           当然,我们在上面也说过,时间复杂度也与输入元素取值有关,例如在上例中,若A中没有与k相同的元素,则(3)语句频度为f(n)=n;若A中最后一个元素为k,则语句(3)频度f(n)=0。

           据此,我们得到最坏时间复杂度,平均时间复杂度,最好时间复杂度。

     

    (2)最坏时间复杂度、平均时间复杂度、最好时间复杂度

    最坏时间复杂度:在最坏情况下,算法的时间复杂度。

    平均时间复杂度:在所有可能输入实例在等概率出现的情况下,算法的期望运行时间。

    最好时间复杂度:在最好情况下,算法的时间复杂度

    一般总是考虑在最坏情况下的时间复杂度,以保证算法的运行时间不会比它更长。

     

    (3)计算规则

     

    a.加法规则

     

    b.乘法规则

     

    常用渐进时间复杂度为

     

    2.空间复杂度

           算法的空间复杂度S(n)定义为该算法所耗费的存储空间,它是问题规模n的函数。渐进空间复杂度也常简称为空间复杂度,记为S(n)=O(g(n))

     

    展开全文
  • 分类算法评价

    千次阅读 2017-04-26 21:33:56
    在不同的数据集上表现的效果也不同,我们需要根据特定的任务进行算法的选择,如何选择分类,如何评价一个分类算法的好坏,前面关于决策树的介绍,我们主要用的正确率(accuracy)来评价分类算法。 正确率确实是一...

    一、引言
    分类算法有很多,不同分类算法又有很多不同的变种。不同的分类算法有不同的特征,在不同的数据集上表现的效果也不同,我们需要根据特定的任务进行算法的选择,如何选择分类,如何评价一个分类算法的好坏,前面关于决策树的介绍,我们主要用的正确率(accuracy)来评价分类算法。
    正确率确实是一个很好很直观的评价指标,但是有时候正确率高并不能代表一个算法就好。比如对某个地区某天地震的预测,假设我们有一堆的特征作为地震分类的属性,类别只有两个:0:不发生地震、1:发生地震。一个不加思考的分类器,对每一个测试用例都将类别划分为0,那么它就可能达到99%的正确率,但真的地震来临时,这个分类器毫无察觉,这个分类带来的损失是巨大的。为什么99%的正确率的分类器却不是我们想要的,因为这里数据分布不均衡,类别1的数据太少,完全错分类别1依然可以达到很高的正确率却忽视了我们关注的东西。接下来详细介绍一下分类算法的评价指标。
    二、评价指标
    首先介绍几个常见的模型评价术语,现在假设我们的分类目标只有两类,计为正例(positive)和负例(negtive)分别是:
    ① True positives(TP): 被正确地划分为正例的个数,即实际为正例且被分类器划分为正例的实例数(样本数);
    ② False positives(FP): 被错误地划分为正例的个数,即实际为负例但被分类器划分为正例的实例数;
    ③ False negatives(FN):被错误地划分为负例的个数,即实际为正例但被分类器划分为负例的实例数;
    ④ True negatives(TN): 被正确地划分为负例的个数,即实际为负例且被分类器划分为负例的实例数。
    这里写图片描述
    评价指标

    1,正确率(accuracy)
    正确率是我们最常见的评价指标,accuracy = (TP+TN)/(P+N),这个很容易理解,就是被分对的样本数除以所有的样本数,通常来说,正确率越高,分类器越好;
    2,错误率(error rate)
    错误率则与正确率相反,描述被分类器错分的比例,error rate = (FP+FN)/(P+N),对某一个实例来说,分对与分错是互斥事件,所以accuracy =1 - error rate;
    3,灵敏度(sensitive)
    sensitive = TP/P,表示的是所有正例中被分对的比例,衡量了分类器对正例的识别能力;
    4,特效度(specificity)
    specificity = TN/N,表示的是所有负例中被分对的比例,衡量了分类器对负例的识别能力;
    5,精度(precision)
    精度是精确性的度量,表示被分为正例的示例中实际为正例的比例,precision=TP/(TP+FP);
    6,召回率(recall)
    召回率是覆盖面的度量,度量有多个正例被分为正例,recall=TP/(TP+FN)=TP/P=sensitive,可以看到召回率与灵敏度是一样的。
    7,其他评价指标
    计算速度:分类器训练和预测需要的时间;
    鲁棒性:处理缺失值和异常值的能力;
    可扩展性:处理大数据集的能力;
    可解释性:分类器的预测标准的可理解性,像决策树产生的规则就是很容易理解的,而神经网络的一堆参数就不好理解,我们只好把它看成一个黑盒子。

    展开全文
  • 算法性能评价

    千次阅读 2019-09-23 08:05:25
    一种数据结构的优劣是由实现其各种运算的算法具体体现的,对数据结构的分析实质上就是实现运算算法的分析,除了要验证算法是否正确解决该问题之外,还需要对算法的效率作性能评价。在计算机程序设计中,算法分析是...

    一种数据结构的优劣是由实现其各种运算的算法具体体现的,对数据结构的分析实质上就是实现运算算法的分析,除了要验证算法是否正确解决该问题之外,还需要对算法的效率作性能评价。在计算机程序设计中,算法分析是十分重要的。

    算法分析是每个程序设计人员应该掌握的技术。评价算法性能的标准主要从算法执行时间与占用内存空间两方面考虑,即算法执行所需的时间和存储空间来判断一个算法的优劣。

    1.性能评价

    对问题规模与该算法在运行时所占用空间与所耗费时间给出一个数量关系的评价。

    数量关系评价体现在时间上,即算法经编程实现后在计算机中运行所耗费的时间。

    数量关系评价体现在空间上,即算法经编程实现后再计算机中运行所占用的存储量。

    2.问题规模

    算法性能与问题规模相关。问题规模是问题大小的本质表示,对不同的问题其表现形式不同,算法求解问题的输入量称为问题的规模,一般用整数表示。一个图论问题的规模则是图中的顶点数或边数,对矩阵而言是其阶数,对多项式运算而言是多项式项数,对集合运算而言是集合中的元素个数,可以说算法效率应是问题规模的函数。

    算法的时间性能分析

    1.算法耗费的时间

    一个算法的执行时间是指算法中所有语句执行时间的总和。每条语句的执行时间等于该条语句的执行次数乘以执行一次所需实际时间。

    由于语句的执行要由源程序经编译程序翻译成目标代码,目标代码经装配后再执行,语句执行一次实际所需的具体时间是与计算机的软、硬件环境(计算机速度、编译程序质量、输入数据量等)密切相关的,故难以精确估计。

    2.语句频度

    质量一个算法的效率应当抛弃具体计算机条件,仅仅考虑算法本身的效率高低。算法时间分析质量的标准并不是针对实际执行时间精确算法执行的时间,而是根据算法中语句的执行次数做出估计,从中得到算法执行时间的信息。

    语句频度是指该语句在一个算法中重复执行的次数。一个算法的时间耗费就是该算法中所有语句频度之和。

    例1.   求两个n阶方阵的乘积C=A*B。

    #define n 100      /*n可根据需求定义,这里假定为100*/

    void MatrixMulti(int a[n][n],int b [n][n],int c[n][n])

    {                                                                                             该算法每一语句的语句频度为

    (1)for(i=0;i<n;i++)                                                                   n+1

    (2)  for(j=0;j<n;j++)                                                                 n(n+1)

    (3)    {   c[i][j]=0;                                                                      n^2

    (4)        for(k=0;k<n;k++)                                                        n^2(n+1)

    (5)           c[i][j]=c[i][j]+a[i][k]*b[k][j];                                         n^3

                 }

    }

    【分析】语句(1)的循环控制变量i从0增加到n,测试条件i=n成立才会终止,故它的语句频度是n+1,但是它的循环体却只能执行n次。语句(2)作为语句(1)循环体内的语句应该执行n次,但语句(2)作为语句(1)循环体内的语句应该执行n次,但语句(2)本身要执行n+1次,所以语句(2)的频度是n(n+1).同理可得语句(3)、(4)和(5)的频度分别是n^2、n^2(n+1)和n^3.

    该算法中所有语句的频度之和(即算法的时间耗费)为

    f(n)=2n^3+3n^2+2n+1

    也就是说、该矩阵乘积算法的问题规模是矩阵的阶数n,时间耗费是矩阵阶数n的函数。

    3.算法的时间复杂度

    为便于比较解决同一问题的不同算法,通常以算法中基本操作重复执行的频度作为度量标准。基本操作是指算法中选取一种对所研究问题是基本运算的操作,用随着问题规模增加的函数来表征,以此作为时间量度。

    对于算法分析,关心的是算法中语句总的执行次数f(n)是问题规模n的函数,进而分析f(n)随n的变化情况并确定T(n)的数量级(Order of Magnitude)。这里用“O”来表示数量级,给出算法的时间复杂度概念。算法的时间复杂度T(n)是该算法的时间度量,记作

    T(n)=O(f(n))

    它表示随问题规模n的增大,算法的执行时间的增长率和f(n)的增长率相同,称作算法的渐进时间复杂度,简称时间复杂度。

    在例1中算法MatrixMulti中,当n充分大时,f(n)和n^3之比是一个不等于零的常数,即f(n)和n^3是同阶的,或者说f(n)和n^3的数量级相同,O(n^3)是算法MatrixMulti的渐进时间复杂度。

    数学符号“O”的严格数学定义为:

    若T(n)和f(n)是定义在正整数集合上的两个函数,则T(n)=O(f(n))表示存在正的常数C和n0,使得当n>=n0时都满足0<=T(n)<=Cf(n).

    4.渐进时间复杂度

    由于算法执行的实际机器时间难以精确统计,因此主要考虑用算法时间复杂度的数量级(即算法的渐进时间复杂度)来评价一个算法的时间性能。

    例如,由两个算法A1和A2求解同一问题,时间复杂度分别是T1(n)=100n^2,T2(n)=5n^3.

    ①当输入量n<20时,有T1(n)>T2(n),后者花费的时间较少。

    ②随着问题规模的增大,两个算法的时间开销之比5n^3/100n^2=n/20亦随着增大。即当问题规模较大时,算法A1比算法A2有效的多。

    它们的渐进时间复杂度O(n^2)和O(n^3)从宏观上评价了这两个算法在时间方面的质量。在算法分析时,往往对算法的时间复杂度渐进时间复杂度不予区分,而经常是讲渐进时间复杂度T(n)=O(f(n))简称为时间复杂度,其中的f(n)一般是算法中频度最大的语句频度。例1中的算法MatrixMulti的时间复杂度为T(n)=O(n^3),f(n)=n^3是该算法中语句(5)的频度。

    下面在举例说明如何求算法的时间复杂度。

    例1.4   常数阶实例

    temp=i;

    i=j;

    j=temp;

    以上三条单个语句的频度均为1,该程序段的执行时间是一个与问题规模n无关的常数。算法的时间复杂度为常数阶,记作T(n)=O(1)。如果算法执行的时间不随着问题规模n的增大而增长,即使算法中有上千条语句,其执行时间也不过是一个较大的常数。此类算法的时间复杂度是O(1)。

    例1.5  线性阶实例

    for(i=1;i<=n;i++)

    x=x+1;

    其时间复杂度为O(n),称为线性阶。

    例1.6  平方阶实例

    (1)x=0;y=0;

    (2)for(k=1;k<=n;k++)

    (3)x++;

    (4)for(i=1;i<=n;i++)

    (5)for(j=1;j<=n;j++)

    (6)y++;

    一般情况下,对步进循环语句只需考虑循环体中语句的执行次数,忽略该语句中步长加1、终值判断、控制转移等成分。因此,以上程序段中频度最大的是语句(6),其频度为f(n)=n^2,所以该程序段的时间复杂度为T(n)=O(n^2).

    当有若干个循环语句时,算法的时间复杂度是由嵌套层数最多的循环语句中最内层语句的频度f(n)决定的。

    例1.7给出源操作x=x+1;语句频度及程序的时间复杂度分析。

    (1)x=1;

    (2)for(i=1;i<=n;i++)

    (3)for(j=1;j<=i;j++)

    (4)x=x+1

    该程序段中频度最大的是语句(4),内循环的执行次数虽然与问题规模n没有直接关系,但是却与外层循环的变量取值有关,而最外层循环的次数直接与n有关,因此可以从内层循环向外层分析语句(4)的执行次数:当i=1时,j取值范围是1~1,原操作执行次数为1;当i=2时,j取值范围是1~2;当i=3时,j取值范围是1~3,执行次数为3,以此类推,故原操作x=x+1;执行的总次数为

    f(n)=(1+2+3+...+n)=n(n+1)/2=n^2/2+n/2

    则该程序段的时间复杂度为T(n)=O(n^2/2+n/2)=O(n^2).

    5.常用算法时间复杂度

    数据结构中常用的时间复杂度频率计数有以下7种:

    O(1)常数型,O(n)线性型,O(n^2)平方型,O(n^3)立方型,O(2^n)指数型,O(log2n)对数型(ps:以2为底n的对数),O(nlog2n)二维型(ps:同上)

    按时间复杂度由小到大递增排列如下所示。一般来说,前三种可实现,后三种虽理论上是可实现的,但实际上只有当n限制在很小的范围时才有意义,当n较大时实现困难。

                                                                           常用的时间复杂度频率表

    log2n                n                      nlog2n                     n^2                                 n^3                              2^n

    0                       1                         0                             1                                     1                                2

    1                       2                         2                             4                                     8                                4

    2                       4                         8                             16                                   64                              14

    3                       8                        24                            64                                  512                            256

    4                      16                       64                            256                                5096                         65536

    5                      32                      160                          1024                               32768                       2147483648

     

    6.最坏时间复杂度和平均时间复杂度

    算法的时间复杂度不仅仅依赖于问题的规模,还输入实例的初始状态有关。

    例1.8  在数值A[0..n-1]中查找给定值k的算法大致如下,分析其时间复杂度。

    (1)i=n-1;

    (2)while(i>=0&&(a[i]!=k))

    (3)i--;

    (4)return i;

    此算法中,语句(3)的频度不仅与问题规模n有关,还与A的各元素值及k的取值有关。

    ①最坏情况:若A中没有与k相等的元素,则语句(3)的频度f(n)=n。

    ②最好情况:若A的最后一个元素等于k,则语句(3)的频度f(n)是常数0.

    最坏情况下的时间复杂度称最坏时间复杂度。一般不特别说明,讨论的时间复杂度均是最坏情况下的时间复杂度。这样做的原因是:最坏情况下的时间复杂度是算法在任何输入实例上运行时间的上界,这就保证了算法的运行时间不会比这一上界更长。由此可知,上述算法的时间复杂度为T(n)=O(n)。

    平均时间复杂度是指所有可能的输入实例均以等概率出现的情况下,算法的期望运行时间。

    算法的空间性能分析

    一般情况下,一个程序在机器执行时,除了需要存储本身所用的指令、常数、变量和输入数据以外,还需要一些对数据进行操作的辅助存储空间。其中,对于输入数据所占用的具体存储量取决于问题本身,与算法无关,这样只需分析该算法在实现时所需要的辅助空间个数即可。

    1.算法耗费的空间

    一个算法的占用空间是指算法实际占用的辅助空间总和。

    由于实际占用空间与计算机的软件(编译系统)、硬件(字长等)环境密切相关,以整形为例,可能在一种系统中需要2字节,在另一个系统中需要4字节,实际占用空间的多少难以相互类比。算法空间分析度量的标准并不是计算实际占用空间,而是计算整个算法的辅助空间单元个数。

    2.算法的空间复杂度

    算法的空间复杂度S(n)定义为该算法所耗费的存储空间数量级,它是问题规模n的函数。记作

    S(n)=O(f(n))

    若算法执行时所需的辅助空间相对于输入数据量而言是一个常数,则称这个算法为原地工作。辅助空间为O(1)。

    例1.9  将一维数组a中的n个数据逆序存放到原数组中,给出实现该问题的两种算法。

    【算法1】

    for (i=0;<n;i++)

      b[i]=a[n-i-1];

    for(i=0;<n;i++)

      a[i]=b[i];

    【算法2】

    for(i=0;i<n/2;i++)

    {

      t=a[i];

      a[i]=a[n-i-1];

      a[n-i-1]=t;

      }

    算法1的空间复杂度为O(n),需要一个大小为n的辅助数组b。

    算法2的空间复杂度为O(1),仅需要一个变量t,与问题规模没有关系。

    算法的时间复杂度和空间复杂度合称为算法的复杂度。

    算法性能选择

    要想使一个算法即占用存储空间少,又运行时间短,而且其他性能也好,这是很难做到的。原因是上述要求有时相互抵触:要节约算法的执行时间往往要以牺牲更多的空间为代价,而为了节约空间可能要耗费更多的计算时间。因此,只要根据具体的情况进行取舍。

    ①若程序使用次数少,则力求算法简明易懂

    ②对于反复使用的程序,应尽可能选用快速的算法。

    ③若待解决的问题数据量较大,计算机存储空间较小,则相应算法主要考虑如何节省空间。

    展开全文
  • 分类算法评价标准

    千次阅读 2017-04-06 16:37:08
    在不同的数据集上表现的效果也不同,我们需要根据特定的任务进行算法的选择,如何选择分类,如何评价一个分类算法的好坏,前面关于决策树的介绍,我们主要用的正确率(accuracy)来评价分类算法。正确率确实是一个很...

    一、引言

    分类算法有很多,不同分分类算法又用很多不同的变种。不同的分类算法有不同的特定,在不同的数据集上表现的效果也不同,我们需要根据特定的任务进行算法的选择,如何选择分类,如何评价一个分类算法的好坏,前面关于决策树的介绍,我们主要用的正确率(accuracy)来评价分类算法。

    正确率确实是一个很好很直观的评价指标,但是有时候正确率高并不能代表一个算法就好。比如某个地区某天地震的预测,假设我们有一堆的特征作为地震分类的属性,类别只有两个:0:不发生地震、1:发生地震。一个不加思考的分类器,对每一个测试用例都将类别划分为0,那那么它就可能达到99%的正确率,但真的地震来临时,这个分类器毫无察觉,这个人类带来的损失是巨大的。为什么99%的正确率的分类器却不是我们想要的,因为这里数据分布不均衡,类别1的数据太少,完全错分类别1依然可以达到很高的正确率却忽视了我们关注的东西。接下来详细介绍一下分类算法的评价指标。

    二、评价指标

    1、几个常用的术语

    这里首先介绍几个 常见 的 模型评价术语,现在假设我们的分类目标只有两类,计为正例(positive)和负例(negtive)分别是:

    1)True positives(TP):  被正确地划分为正例的个数,即实际为正例且被分类器划分为正例的实例数(样本数);

    2)False positives(FP): 被错误地划分为 正 例的个数,即 实际为负例但被分类器划分为正例的实例数;

    3)False negatives(FN):被 错误地划分为 负 例的个数,即 实际为 正 例但被分类器划分为 负 例的实例数;

    4)True  negatives(TN):  被正确地划分为 负 例 的个数 ,即实际为 负 例且被分类器划分为 负 例的实例数。

    预测类别

     

    Yes

    No

    总计

    Yes

    TP

    FN

    P (实际为Yes )

    No

    FP

    TN

    N (实际为No )

    总计

    P’ (被分为Yes )

    N’ (被分为No )

    P+N

    上图是这四个术语的混淆矩阵,我只知道FP叫伪阳率,其他的怎么称呼就不详了。注意P=TP+FN表示实际为正例的样本个数,我曾经误以为实际为正例的样本数应该为TP+FP,这里只要记住True、False描述的是分类器是否判断正确,Positive、Negative是分类器的分类结果。如果 正例计为1、负例计为-1,即positive=1、negtive=-1,用1表示True,-1表示False,那么实际的类标=TF*PN,TF为true或false,PN为positive或negtive。例如True positives(TP)的实际类标=1*1=1为正例,False positives(FP)的实际类标=(-1)*1=-1为负例,False negatives(FN)的实际类标=(-1)*(-1)=1为正例,True negatives(TN)的实际类标=1*(-1)=-1为负例。

    2、评价指标

    1)正确率(accuracy

    正确率是我们最常见的评价指标, accuracy = (TP+TN)/(P+N),这个很容易理解,就是被分对的样本数除以所有的样本数,通常来说,正确率越高,分类器越好;

    2)错误率(error rate)

    错误率则与正确率相反,描述被分类器错分的比例,error rate = (FP+FN)/(P+N),对某一个实例来说,分对与分错是互斥事件,所以 accuracy =1 -  error rate;

    3)灵敏度(sensitive)

    sensitive = TP/P,表示的是所有正例中被分对的比例,衡量了分类器对正例的识别能力;

    4)特效度(specificity)

    specificity = TN/N, 表示的是所有负例中被分对的比例,衡量了分类器对负例的识别能力;

    5)精度(precision

    精度是精确性的度量,表示被分为正例的示例中实际为正例的比例, precision=TP/(TP+FP);

    6)召回率(recall

    召回率是覆盖面的度量,度量有多个正例被分为正例, recall=TP/(TP+FN)=TP/P=sensitive,可以看到召回率与灵敏度是一样的。

    7)其他评价指标

    • 计算速度:分类器训练和预测需要的时间;
    • 鲁棒性:处理缺失值和异常值的能力;
    • 可扩展性:处理大数据集的能力;
    • 可解释性:分类器的预测标准的可理解性,像决策树产生的规则就是很容易理解的,而神经网络的一堆参数就不好理解,我们只好把它看成一个黑盒子。

    对于某个具体的分类器而言,我们不可能同时提高所有上面介绍的指标,当然,如果一个分类器能正确分对所有的实例,那么各项指标都已经达到最优,但这样的分类器往往不存在。比如我们开头说的地震预测,没有谁能准确预测地震的发生,但我们能容忍一定程度的误报,假设1000次预测中,有5次预测为发现地震,其中一次真的发生了地震,而其他4次为误报,那么正确率从原来的999/1000-99.9%下降到996/1000=99.6,但召回率从0/1=0%上升为1/1=100%,这样虽然谎报了几次地震,但真的地震来临时,我们没有错过,这样的分类器才是我们想要的,在一定正确率的前提下,我们要求分类器的召回率尽可能的高。


    (http://blog.csdn.net/xiaoyu714543065/article/details/8559741)

    查准率和查全率反映了分类器分类性能的两个方面。如果综合考虑查准率与查全率,可以得到新的评价指标F1测试值,也称为综合分类率

     

          为了综合多个类别的分类情况,评测系统整体性能,经常采用的还有微平均F1(micro-averaging)和宏平均F1(macro-averaging )两种指标。宏平均F1与微平均F1是以两种不同的平均方式求的全局的F1指标。其中宏平均F1的计算方法先对每个类别单独计算F1值,再取这些F1值的算术平均值作为全局指标。而微平均F1的计算方法是先累加计算各个类别的a、b、c、d的值,再由这些值求出F1值。由两种平均F1的计算方式不难看出,宏平均F1平等对待每一个类别,所以它的值主要受到稀有类别的影响,而微平均F1平等考虑文档集中的每一个文档,所以它的值受到常见类别的影响比较大。


    (http://blog.csdn.net/xiahouzuoxin/article/details/43165253)

    ROC与PR指标

    Precision和Recall(有人中文翻译成召回率)则分别构成了PR曲线的y轴和x轴。

    ROC:

    图:ROC空间


    ROC曲线绘制代码:

    1. Local: prec_rec.m
    2. Mathworks: prec_rec.m


    AUC(Area Under the ROC Curve)


    展开全文
  • 算法效率评价

    千次阅读 2019-05-24 14:15:19
    1.算法效率评价标准 对于同样的编程问题,使用不同的算法最终的结果是一样的,但计算机计算过程是消耗的时间和空间却不一样,但是我们又不能去计算每个算法用的时间和空间,我们只能通过数学的方法来估算这个算法,...
  • ·(对于数据点,找到最近的{i}ci(聚类中心),将分配到{i}ci中) ·(更新聚类中心点,是新类别数值的均值点) ·(计算每一类的偏差) ·返回返回第二步 1.2 基于层次的方法 代表:CURE算法 ·每个样本作为单独的...
  • 算法评价

    千次阅读 2018-06-05 21:59:19
    算法评价法则1、正确性2、高效性3、空间性4、可读性算法的效率通常,通过统计算法中基本操作重复执行的次数,就可近似的得到算法的执行效率,用O(n)表示,也称为时间复杂度...
  • 常用聚类算法以及算法评价

    千次阅读 2016-07-24 17:02:45
    聚类模型是一种非监督的学习方法,聚类的输入是一组未标记... 主要算法 划分方法 k-Means,k-Medoids(k中心点),CLANRANS(基于选择的算法) 层次分析方法 BIRCH(平均迭代规约和聚类),CURE(代表点聚类),CHAMELEON(动态
  • DIP关键算法-去噪算法评价标准

    千次阅读 2016-09-15 17:57:55
    去噪算法是图像处理里面一个基础的问题,对于去噪算法的好坏一个直接的判断就是视觉上的感知,但是这只能作为一个定性的判断,在实际的应用中,我们还需要进行定量分析,进而做出最终的判断。在实际中往往采用原始...
  • 算法算法评价

    千次阅读 2018-04-16 22:02:52
    》》算法的基本概念:  算法是对特定问题求解步骤的一种描述,它是指令的有限序列,其中  每一条指令表示一个或多个操作。此外,一个算法还具有下列5个重要的  特性。  (1)、有穷性  一个算法必须总是(对...
  • 聚类算法评价指标

    万次阅读 多人点赞 2016-09-10 17:28:31
     缺点:因使用欧式距离 所以对于环状分布 聚类评测很差 4、Dunn Validity Index (邓恩指数)(DVI)    DVI计算 任意两个簇元素的最短距离(类间)除以任意簇中的最大距离(类内)  DVI越大意味着...
  • 多目标跟踪算法评价指标

    千次阅读 2019-02-21 18:21:07
    标准CLEAR-MOT测量,包括: Multi-Object Tracking Accuracy(MOTA) Multi-ObjectTracking Precision (MOTP)这两个评价标准。 此外,额外引入了若干指标来进行评价:↑:表示得分越高越好,反之亦然。...
  • 一些用于理解的概念: 内排序和外排序 在排序过程中,所有需要排序的数都在内存,并在内存中调整它们的存储顺序,称为内排序; 在排序过程中,只有部分数被调入内存,并借助内存调整数在外存中的...1. 性能评价标准
  • 数据结构算法算法效率评价

    千次阅读 2017-11-24 14:25:20
    一、算法的基本概念 算法(Algorithm):是...换句话说就是:对于相同的输入必须得出相同的输出结果。 1.3、可行性:算法是可行的,算法中描述的操作都是可以通过已经实现的基本运算执行有限次得到。 1.4、输入 1.
  • 数据挖掘分类算法评价指标

    千次阅读 2018-04-02 15:15:06
    在不同的数据集上表现的效果也不同,我们需要根据特定的任务进行算法的选择,如何选择分类,如何评价一个分类算法的好坏,前面关于决策树的介绍,我们主要用的正确率(accuracy)来评价分类算法。正确率确实是一个很...
  • 多目标优化算法评价指标

    万次阅读 2018-11-26 20:47:44
    多目标进化算法解集的性能评价指标主要分为三个方面: 1)解集的收敛性评价(Convergence Performance, CP), 反映解集与真实Pareto前沿之间的逼近程度 2)解集的均匀性评价(Uniformity Performance, UP), 体现解...
  • 分类算法评价(集合)

    千次阅读 2016-10-14 12:02:22
    在不同的数据集上表现的效果也不同,我们需要根据特定的任务进行算法的选择,如何选择分类,如何评价一个分类算法的好坏,前面关于决策树的介绍,我们主要用的正确率(accuracy)来评价分类算法。  正确率确实是一...
  • 如何评价算法的好坏?

    千次阅读 2019-11-25 11:48:10
    评价一个算法的好坏,我认为关键是看能不能解决问题。如果算法能很好地解决实际的问题,那么我认为就是好算法。 比如预测的算法,关键是看预测的准确率,即预测值与实际值之间的接近程度,而不是看算法本身的评分...
  • 分类与预测算法评价

    千次阅读 2018-03-13 21:16:42
    1.背景分类与预测模型对训练集进行预测而得出的准确率并不能很好滴反映预测模型未来的性能,为了有效判断一个预测模型的性能表现,需要一组没有参与预测模型建立的数据集,并在该数据集上评价预测模型的准确率,哲族...
  • 机器学习算法评价指标之group auc(gauc)

    万次阅读 热门讨论 2019-02-23 14:55:30
    在机器学习算法中,很多情况我们都是把auc当成最常用的一个评价指标,而auc反映整体样本间的排序能力,但是有时候auc这个指标可能并不能完全说明问题,有可能auc并不能真正反映模型的好坏,以CTR预估算法(推荐算法...
  • 深度学习算法评价标准AP bbox bev 3d

    千次阅读 2020-09-07 10:23:08
    深度学习算法的检测指标 深度学习算法测试的数据集一般采用公开的数据集进行训练和测试,比如常用的KITTI数据集。 深度学习算法的检测指标通常由bbox、bev、3d、aos四个检测指标 上述四个检测指标的含义: bbox:2D...
  • 时间复杂度-算法评价的标准

    千次阅读 2018-09-21 13:45:00
    前言:算法,一直是每个程序员的心病,确是程序的核心,很多人觉得算法很难,没错,但是世界上真的有很难的事情吗?如果不去尝试,只去抱怨,不去尝试,我觉得可能一辈子也就只能当一名普通的程序员了。有一句老话说...
  • 无监督聚类算法该如何评价

    万次阅读 多人点赞 2017-07-03 21:57:29
    学过机器学习的小伙伴应该都很清楚:几乎所有的机器学习理论与实战教材里面都有非常详细的理论化的有监督分类学习算法评价指标。例如:正确率、召回率、精准率、ROC曲线、AUC曲线。但是几乎没有任何教材上有明确的...
  • 分类与预测算法评价标准

    千次阅读 2017-10-28 15:56:46
    2.模型预测效果评价指标:相对/绝对误差、平均绝对误差、均方根误差、平均绝对百分误差。 绝对误差:E=Y-Y1;其中E为绝对误差,Y为实际值,Y1为预测值; 相对误差:e=(Y-Y1)/Y; 平均绝对误差: 均方误差:避免正负...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 147,893
精华内容 59,157
关键字:

对于算法的评价