开发者学堂课程【高校精品课-华东师范大学-人工智能基础:机器学习算法的一般流程】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/920/detail/15579
机器学习算法的一般流程
内容介绍:
一、性能评估
二、算法评价
一、性能评估
模型选择考虑的因素有很多,包括问题类型、数据形式、数据规模、模型的泛化能力。算法模型的性能。
对模型的评价有很多方法,常用的指标有准确率(Accuracy)、错误率(Error rate)、精确率(Precision)、召回率(Recall)和均方误差等。不同的测量方法也会产生不同的判断结果。
(1)错误率(Error rate)
在分类任务中经常使用错误率与精确率对算法进行评价,分类错误的样本数占样本总数的比例称为错误率。
用 e 代表错误率。计算方法如下:e=分类错误的样本数/样本总数
我们来看这个表格动物分类器的分类结果,第一列是真实结果,第二列是预测结果。
在预测结果当中,分别对猫、狗和兔子。得到了一个预测出来的只数。先看第一行,猫。当真实结果是猫的时候,预测结果是两只猫,零条狗,零只兔子,当真实结果是狗的时候,预测结果是一只狗一只兔子,当真实结果是两只兔子的时候,两只兔子都被预测成了猫,结果是两只猫,零条狗,零只兔子。
计算模型总的分类错误率:e=(1+2)/6=0.5及50%
模型对猫的分类错误率ecat:ecat=0/2=0
模型对狗的分类错误率edog:edag=1/2=0.5
模型对兔子的分类错误率erabbit:erabbit=2/2=1
(2)精确率、召回率和 F- measure 指数
精确率(precision)衡量的是查准率。可以表达系统的效用,召回率则衡量的是系统的查全率,可以表达系统的完整性。F- measure指数也称为f1指数,是精确率和召回率的调和平均值。
用公式表达如下:
精确率(p)=正确识别的个体总数/识别出来的个体总数
召回率(r)=正确识别出的个体总数/测试集中存在的个体总数
调和均值(f1)=2pr/(p+r)
二、算法评价
算法评价中使用准确率和召回率比较多
准确率(p)代表的是查准率=正确识别的个体总数/识别出来的个体总数
召回率(r)则代表是查全率=正确识别出的个体总数/测试集中存在的个体总数
例如对这个表格中两只猫,两条狗,两只兔子。他的预测分别为这个表格当中显示的结果
对猫进行预测时,实际有两只猫。预测结果中有两只猫、两只兔子被判断为猫,合计找到四只猫,其中两只预测准确,两只预测错误,则精确率p=2/4=0.5,而召回率r=2/2=1。调和均值 f1=2pr/(p+r)约等于0.667。
对狗进行预测时,实际有两条狗。预测结果中有一条狗被判断为狗,合计找到一条狗,这条狗预测正确。但另一条没找到。则精确率p=1/1=1。找到的都是对的,而召回率r=1/2=0.5只找到了一半,f1=2pr/(p+r)约等于0.667。
对兔子进行预测时,实际有两只兔子。预测结果中,一条狗被判断为兔子,合计找到一只兔子。但是判断错误,则精确率p=0/1=0,而召回率r=0/2=0,调和均值f1=2pr/(p+r)=0。这里要注意。根据这个公式计算,会出现0的问题,所以当P和r都为零时,f1直接为零。整理后识别的结果是这样的,
猫的准确率是0.5,召回率是1,调和均值是0.667。狗的识别准确率是1,召回率是0.5,调和均值是0.667。兔的准确率是0,召回率是0,调和均值是0。
假如一个模型预测出来。他得到了这样的结果。y_true 是代表增值,y_true=[0,1,2,2,2]。5个物体分别是零类、一类、二类、二类、二类。例如,苹果、西瓜、橘子、橘子、橘子。y_pred 代表预测出来的结果。y_pred=[0,0,2,2,1]。与真值有一定的差别。那么这个模型我们来看它的性能。
第一行,先看对零的预测。零的预测结果可以看这个图。
圆圈内的是检出的,圆圈外的是没有检出。实心的是正确,空心的是误判。对零的预测结果,P=1/2=0.5。R=1/1=1。f1=2pr/(p+r)=0.667。
第二行是对一的预测。
可以看到图中P=0/1=0。R=0/1=0。其中的调和平均值f1也取0。第三行是对2的预测结果。
2的预测结果,可以看到这个图中P=2/2=1.r=2/3。调和平均值f1=2*(1*2/3)/(1+2/3)=0.8。
下面我们使用一个实验来执行这个性能评估过程。
我们使用 Classification_ report。第一行包含 Classification_ report 分类报告。y_true=[0,1,2,2,2]代表真值, y_pred=[0,0,2,2,1]代表预测结果。使用 Classification_ report 把 y_true 和 y_pred 作为参数放进来,Print打印结果,
我们运行一下:
对0的预测结果在第一行。precision 是0.5,recall 是1,f1指数是0.67。他的支持样本数是1。
第二行是对1的预测,Precision 是0,recall 是0。f1指数是0。他的支持样本数是1。第三行是对2的预测,Precision是1,recall 是0.67。f1指数是0.8。他的支持样本数是3。合计的支持向量是5。