前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >数据科学31 |机器学习-模型评价

数据科学31 |机器学习-模型评价

作者头像
王诗翔呀
发布于 2020-07-09 07:24:29
发布于 2020-07-09 07:24:29
1.2K00
代码可运行
举报
文章被收录于专栏:优雅R优雅R
运行总次数:0
代码可运行

错误类型

二元预测:

决策类型:真阳性、假阳性、真阴性、假阴性。

关键指标:

・灵敏度:真阳性/(真阳性+假阴性)

・特异性:真阴性/(假阳性+真阴性)

・阳性预测值:真阳性/(真阳性+假阳性)

・阴性预测值:真阴性/(假阴性+真阴性)

・准确性:(真阳性+真阴性)/(真阳性+假阳性+真阴性+假阴性)

连续数据:

均方误差(Mean squared error,MSE):

均方根误差(Root mean squared error,RMSE):

常见错误指标:
  1. MSE/RMSE 用于连续型数据,对离群点敏感
  2. 中值绝对偏差 取观测值和预测值之间的距离的绝对值的中位数,用于连续型数据
  3. 灵敏度 减少假阴性
  4. 特异性 减少假阳性
  5. 准确性 对假阳性、假阴性平均加权
  6. 一致性

ROC曲线

在二元预测中,通常会估计样本出现其中一种结局(如阳性)的概率,需要找到一个常数,即阈值(threshold)或门槛值(cutoff value),若概率值大于阈值,则预测为阳性。通过变动这一阈值,可以改变预测的特异性和灵敏度。

变动阈值可能带来的影响可以通过来进一步观察,ROC曲线可对一个区间内的门槛值画出特异性和敏感度之间的关系。

应用:利用ROC曲线可以找出合适的阈值,通过比较不同算法的ROC曲线可以选择最有效的算法。

ROC 曲线是以灵敏度(真阳性)为y轴、以1-特异性(假阴性)为x 轴,曲线上的点对应特定的阈值。

图1.ROC曲线

ROC曲线下的面积AUC:

ROC曲线下的面积AUC(Area under the curve)可以用来比较不同算法的优劣。

・AUC=0.5,预测算法表示为图中45º斜线,相当于随机对样本进行分类。

・AUC=1,预测算法表示为图中左上角顶点,在这个阈值下,可以得到100%的灵敏度和特异性,是个完美的分类器。

・通常AUC>0.8时可以认为是良好的预测算法。

图2.AUC评价算法优劣

交叉验证(cross validation)

使用训练集建立模型,然后将模型回代到训练集验证模型的有效性,通常会得到较好的验证效果,但由于可能存在过度拟合,而模型未必真的有效,因此需要用独立的新的数据集验证模型是否有效,来获得更好的模型参数估计、更高的测试集准确性。但是实际上不能用测试集进行验证,否则某种意义上测试集变成训练集的一部分,特别是新的样本数据难以收集时。

交叉验证法可以评价模型的泛化能力,而且可以用于某些参数的确定、变量的筛选等。

交叉验证将已有的样本训练集再分为训练集和测试集两部分,根据新的训练集建立模型,使用另一部分测试集进行验证,重复过程可以计算平均估计误差。常见的误差衡量标准是均方误差和均方根误差, 分别为交叉验证的方差和标准差。

1. 随机再抽样验证(random subsampling cross-validation):

图3.随机再抽样验证

重复随机抽取测试集样本,计算平均估计误差。

2. K重交叉验证(K-fold cross-validation):

图4.K重交叉验证

将样本分为k个子样本,轮流将k–1个子样本组合作为训练集建立模型,另外1个子样本作为测试集,计算平均估计误差。

3. 留一交叉验证(leave-one-out cross-validation, LOOCV)

图5.留一交叉验证

只使用原本样本中的一项来当做测试集,而其余的作为训练集,重复步骤直到每个样本都被当作一次测试集,相当于k为原本样本个数的K重交叉验证。

所有这些模型的建立和评估都在训练集中进行,我们将其分为子训练集和子测试集以评估模型。

注意:

  1. 对于时间序列数据,一个时间点可能取决于先前的时间点,如果仅对数据进行随机再抽样,可能会忽略许多重要信息,因此必须使用连续的时间段数据。
  2. 对于K重交叉验证,一般而言,随着k的增加,偏差会变小(模型回代效果好),但方差会增大(验证效果差)。
  3. 随机抽样必须是无放回抽样,有放回抽样(bootstrap,自举法)会低估误差。
  4. 交叉验证得到的模型必须应用到新的独立的训练数据集以得到实际的训练集误差。

数据要求

预测有关X的某些信息,请尽可能使用与X密切相关的数据,数据相关性越低,预测越难。了解数据实际上如何与实际尝试预测的事物相关联非常重要,这是机器学习中最常犯的错误,机器学习通常被认为是一种黑箱预测程序,在一端输入数据,在另一端得到预测结果。

caret 包

内置函数:

・预处理:preProcess()函数

・数据分割:createDataPartition()函数、createTimeSlices()函数、createResample()函数

・训练和测试:train()函数、predict()函数

・模型比较:confusionMatrix()函数

R中内置的机器学习算法:

・线性判别分析(Linear discriminant analysis)

・回归分析(Regression)

・朴素(Naive Bayes)

・支持向量机(Support vector machines)

・分类回归树(Classification and regression trees)

・随机森林(Random forests)

・提升(boosting),等等

R中有来自不同的开发者开发的不同的机器学习算法,每种算法都略有不同。

表1 不同R包中的机器学习算法的预测函数

算法类型

R包

predict()函数语法

lda

MASS

predict(obj)(不需设置选项)

glm

stats

predict(obj, type = "response")

gbm

gbm

predict(obj, type = "response", n.trees)

mda

mda

predict(obj, type = "posterior")

rpart

rpart

predict(obj, type = "prob")

Weka

RWeka

predict(obj, type = "probability")

LogitBoost

caTools

predict(obj, type = "raw", nIter)

使用以上算法应用predict()函数预测时必须传递不同的type选项参数。caret包提供了一个统一的框架,允许只使用一种函数且不需指定选项来进行预测。

例:spam数据集

将数据分为训练集和测试集:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
library(caret)
library(kernlab)
data(spam)
inTrain <- createDataPartition(y=spam$type,
                               p=0.75, list = FALSE) #75%的数据作为训练集
training <- spam[inTrain, ]
testing <- spam[-inTrain, ]
dim(training)
[1] 3451   58

拟合模型:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
set.seed(32343)
modelFit <- train(type ~., data = training, method="glm")
modelFit
Generalized Linear Model

3451 samples
  57 predictor
   2 classes: 'nonspam', 'spam'

No pre-processing
Resampling: Bootstrapped (25 reps) 
Summary of sample sizes: 3451, 3451, 3451, 3451, 3451, 3451, ... 
Resampling results:

  Accuracy   Kappa    
  0.9207464  0.8333755

采用重抽样的方式测试模型,选择最佳模型。进行25次有放回重抽样,并校正了自举抽样可能带来的潜在偏差。

查看拟合的最佳模型:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
modelFit <- train(type ~., data = training, method="glm")
modelFit$finalModel
Call:  NULL

Coefficients:
      (Intercept)               make            address                all  
       -1.541e+00         -3.248e-01         -1.448e-01         -4.829e-02  
            num3d                our               over             remove  
        1.968e+00          4.750e-01          5.455e-01          2.218e+00  
         internet              order               mail            receive  
        6.016e-01          5.926e-01          1.638e-01         -8.654e-01  
             will             people             report          addresses  
       -1.416e-01          8.584e-02          1.268e-01          2.017e+00  
             free           business              email                you  
        9.468e-01          1.084e+00          1.746e-01          9.129e-02  
           credit               your               font             num000  
        2.903e+00          3.356e-01          1.740e-01          1.933e+00  
            money                 hp                hpl             george  
        2.605e-01         -2.556e+00         -7.866e-01         -9.418e+00  
           num650                lab               labs             telnet  
        6.231e-01         -2.372e+00         -3.618e-01         -7.320e-02  
           num857               data             num415              num85  
        1.305e-01         -4.910e-01         -1.918e+01         -5.939e+00  
       technology            num1999              parts                 pm  
        1.180e+00          1.585e-01         -5.811e-01         -9.438e-01  
           direct                 cs            meeting           original  
       -2.426e-01         -4.281e+01         -3.005e+00         -1.240e+00  
          project                 re                edu              table  
       -1.790e+00         -8.871e-01         -1.212e+00         -1.981e+00  
       conference      charSemicolon   charRoundbracket  charSquarebracket  
       -4.245e+00         -1.269e+00         -1.424e-01         -4.982e-01  
  charExclamation         charDollar           charHash         capitalAve  
        3.084e-01          5.776e+00          3.337e+00         -1.680e-02  
      capitalLong       capitalTotal  
        1.199e-02          6.359e-04

Degrees of Freedom: 3450 Total (i.e. Null);  3393 Residual
Null Deviance:	    4628 
Residual Deviance: 1367 	AIC: 1483

进行预测:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
predictions <- predict(modelFit, newdata = testing)
predictions
 [1] spam    spam    spam    nonspam spam    spam    spam    spam    spam    spam   
[11] spam    spam    spam    spam    spam    spam    spam    spam    spam    nonspam
[21] spam    spam    spam    nonspam spam    spam    spam    nonspam spam    nonspam
[31] spam    spam    spam    spam    spam    spam    spam    spam    spam    spam   
[41] spam    spam    spam    spam    spam    nonspam spam    spam    spam    spam   
[51] nonspam spam    spam    nonspam spam    spam    spam    spam    spam    nonspam
  ……
Levels: nonspam spam

比较预测结果与实际结果,得到汇总统计信息:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
confusionMatrix(predictions, testing$type)
Confusion Matrix and Statistics

          Reference
Prediction nonspam spam  #预测效果
   nonspam     660   59
   spam         37  394
                                         
               Accuracy : 0.9165         
                 95% CI : (0.899, 0.9319) #准确性的置信区间
    No Information Rate : 0.6061         
    P-Value [Acc > NIR] : < 2e-16        
                                         
                  Kappa : 0.8237         
                                         
 Mcnemar's Test P-Value : 0.03209        
                                         
            Sensitivity : 0.9469  #灵敏度       
            Specificity : 0.8698  #特异性     
         Pos Pred Value : 0.9179         
         Neg Pred Value : 0.9142         
             Prevalence : 0.6061         
         Detection Rate : 0.5739         
   Detection Prevalence : 0.6252         
      Balanced Accuracy : 0.9083         
                                         
       'Positive' Class : nonspam
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-07-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 优雅R 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
生信代码:机器学习-训练模型
在构建预测模型的开始可以使用数据分割构建训练集和测试集,也可以在训练集中用于执行交叉验证或自举(bootstrapping),以评估模型。
科研菌
2021/02/19
1.5K1
生信代码:机器学习-训练模型
机器学习之分类性能度量指标 : ROC曲线、AUC值、正确率、召回率
同见博客:http://zhwhong.ml/2017/04/14/ROC-AUC-Precision-Recall-analysis/(对Latex公式支持更好) ---- 在分类任务中,人们总是喜欢基于错误率来衡量分类器任务的成功程度。错误率指的是在所有测试样例中错分的样例比例。实际上,这样的度量错误掩盖了样例如何被分错的事实。在机器学习中,有一个普遍适用的称为混淆矩阵(confusion matrix)的工具,它可以帮助人们更好地了解分类中的错误。 比如有这样一个在房子周围可能发现的动物类型的预测,这
zhwhong
2018/05/16
2.7K0
【Python机器学习】系列之从线性回归到逻辑回归篇(深度详细附源码)
第1章 机器学习基础 将机器学习定义成一种通过学习经验改善工作效果的程序研究与设计过程。其他章节都以这个定义为基础,后面每一章里介绍的机器学习模型都是按照这个思路解决任务,评估效果。 第2章 线性回归 介绍线性回归模型,一种解释变量和模型参数与连续的响应变量相关的模型。本章介绍成本函数的定义,通过最小二乘法求解模型参数获得最优模型。 第3章 特征提取与处理 很多机器学习问题需要研究的对象可能是分类变量、文字甚至图像。本章介绍提取这些变量特征的方法。这些技术是数据处理的前提——序列化,更是机器学习的基
量化投资与机器学习微信公众号
2018/01/29
2.4K0
关于机器学习,不可不知的15个概念
‍‍ 作者:布奇·昆托(Butch Quinto) 来源:大数据DT(ID:hzdashuju) 有监督学习 有监督学习是利用训练数据集进行预测的机器学习任务。有监督学习可以分为分类和回归。回归用于预测“价格”“温度”或“距离”等连续值,而分类用于预测“是”或“否”、“垃圾邮件”或“非垃圾邮件”、“恶性”或“良性”等类别。 分类包含三种类型的分类任务:二元分类、多类别分类和多标签分类。回归中包含线性回归和生存回归。 无监督学习 无监督学习是一种机器学习任务,它在不需要标记响应的情况下发现数据集中隐藏
AI科技大本营
2023/05/08
3510
关于机器学习,不可不知的15个概念
机器学习day4
二值分类器是机器学习中最常见的分类器。评价的指标也有很多,precision,recall,F1 score等等。ROC曲线也是之一。 ROC,Receiver Operating Characteristic Curve,受试者工作特征曲线。 ROC曲线的横坐标为假阳性率(False Positive Rate,FPR),纵坐标为真阳性率(True Positive Rate,TPR)。
福贵
2020/06/04
3560
21个经典数据科学面试题及答案(上)
本文翻译自kdnuggets网站热文 21 Must-Know Data Science Interview Questions and Answers 本篇为第一部分,第二部分待更新,敬请期待。 《检测伪数据科学家的20个问题》在1月获得了最多的阅读量。但作者并没有提供这些问题的答案,所以KDnuggets的编辑们聚在一起解答了这些问题。我也额外增加了一个通常容易被忽略的问题。下面是这些问题的回答。 问题1: 什么是正则化项以及它为什么有用。【Matthew Mayo解答】 正则化项是用以保证模型平滑性
架构师研究会
2018/04/09
1.9K0
21个经典数据科学面试题及答案(上)
R语言实现逻辑回归模型
首先,本章节使用到的数据集是ISLR包中的Default数据集,数据包含客户信息的模拟数据集。这里的目的是预测哪些客户将拖欠他们的信用卡债务,这个数据集有1w条数据,3个特征:
庄闪闪
2021/04/09
4.8K0
机器学习之分类性能度量指标 : ROC曲线、AUC值、正确率、召回率
在分类任务中,人们总是喜欢基于错误率来衡量分类器任务的成功程度。错误率指的是在所有测试样例中错分的样例比例。实际上,这样的度量错误掩盖了样例如何被分错的事实。在机器学习中,有一个普遍适用的称为混淆矩阵
用户1332428
2018/03/09
3.7K0
机器学习之分类性能度量指标 : ROC曲线、AUC值、正确率、召回率
机器学习模型性能的10个指标
尽管大模型非常强大, 但是解决实践的问题也可以不全部依赖于大模型。一个不太确切的类比,解释现实中的物理现象,未必要用到量子力学。有些相对简单的问题,或许一个统计分布就足够了。对机器学习而言, 也不用言必深度学习与神经网络,关键在于明确问题的边界。
半吊子全栈工匠
2023/12/28
4.5K0
机器学习模型性能的10个指标
21个你必懂的数据科学面试问答
KDnuggets编辑为20个辨别真伪数据科学家的问题准备了答案,包括什么是正规化、我们喜爱的数据科学家、模型验证等等。
机器人网
2018/07/23
4190
21个你必懂的数据科学面试问答
100+数据科学面试问题和答案总结 - 基础知识和数据分析
来自Amazon,google,Meta, Microsoft等的面试问题,问题很多所以对问题进行了分类整理,本文包含基础知识和数据分析相关问题
deephub
2022/11/11
1.1K0
100+数据科学面试问题和答案总结 - 基础知识和数据分析
数据科学面试题-2023面试题库
数据科学是一个跨学科领域,它挖掘原始数据,对其进行分析,并提出用于从中提取有价值的见解的模式。统计学、计算机科学、机器学习、深度学习、数据分析、数据可视化和各种其他技术构成了数据科学的核心基础。
jack.yang
2025/04/05
1290
数据科学面试题-2023面试题库
重点!11个重要的机器学习模型评估指标
构建机器学习模型的想法应基于建设性的反馈原则。你可以构建模型,从指标得到反馈,不断改进,直到达到理想的准确度。评估指标能体现模型的运转情况。评估指标的一个重要作用在于能够区分众多模型的结果。
用户9861443
2022/09/01
2K0
重点!11个重要的机器学习模型评估指标
【数据】数据科学面试问题集一
数据科学也被称为数据驱动型决策,是一个跨学科领域,涉及以各种形式从数据中提取知识的科学方法,过程和系统,并基于这些知识进行决策。 数据科学家不应仅仅根据他/她对机器学习的知识进行评估,而且他/她也应该具有良好的统计专业知识。 我将尝试从非常基础的数据科学入手,然后慢慢转向专家级。 所以让我们开始吧。
陆勤_数据人网
2018/07/30
6380
【数据】数据科学面试问题集一
机器学习实战:模型评估和优化
原文:http://www.developer.com/mgmt/real-world-machine-learning-model-evaluation-and-optimization.html
用户1737318
2018/06/06
9940
《机器学习》学习笔记(二)——模型评估与选择
错误率(error rate):分类错误的样本占样本总数的比例 精度(accuracy):1 - 错误率误差(error):学习器的实际预测输出与样本的真实输出之间的差异 错误率和精度相反 (错误率+精度=1) 训练误差(training error)(即经验误差(empirical error)):学习器在训练集上的误差 泛化误差(generalization error):在新样本(即测试样本)上的误差
荣仔_最靓的仔
2021/02/02
2.4K0
《机器学习》学习笔记(二)——模型评估与选择
超强,必会的机器学习评估指标
构建机器学习模型的关键步骤是检查其性能,这是通过使用验证指标来完成的。 选择正确的验证指标就像选择一副水晶球:它使我们能够以清晰的视野看到模型的性能。 在本指南中,我们将探讨分类和回归的基本指标和有效评估模型的知识。 学习何时使用每个指标、优点和缺点以及如何在 Python 中实现它们。
算法金
2024/06/28
3470
超强,必会的机器学习评估指标
周志华《机器学习》第2章部分笔记
①误差(error):学习器的预测输出与样本的真实输出之间的差异 ②训练误差(training error)或经验误差(empirical error):在训练集上的误差 ③测试误差(test error):在测试集上的误差 ④泛化误差(generalization error):学习器在所有新样本上的误差 ⑤过拟合(overfitting):学习能力过于强大,把训练样本自身的一些特点当成所有潜在样本都会有的一般性质,导致泛化能力下降 ⑥欠拟合(underfitting):学习能力太差,对训练样本的一般性质尚未学好 在过拟合问题中,训练误差很小,但测试误差很大;在欠拟合问题中,训练误差和测试误差都比较大。目前,欠拟合问题容易克服,如在决策树中扩展分支,在神经网络中增加训练轮数;但过拟合问题是机器学习面临的关键障碍。 ⑦模型选择:在理想状态下,选择泛化误差最小的学习器。
Natalia_ljq
2020/06/03
8370
周志华《机器学习》第2章部分笔记
你知道这11个重要的机器学习模型评估指标吗?
【磐创AI导读】:评估一个模型是建立一个有效的机器学习模型的核心部分,本文为大家介绍了一些机器学习模型评估指标,希望对大家有所帮助。想要获取更多的机器学习、深度学习资源,欢迎大家点击上方蓝字关注我们的公众号:磐创AI。
磐创AI
2019/08/23
3.9K0
搞懂机器学习的常用评价指标!
我与评价指标的首次交锋是第一次实习面试时,面试官开头就问分类任务的评价指标。我当时TP,FP,FN,TN各种组合一顿上,回答得乱七八糟。后来经历多了,发现评价指标的确是面试的高频考点。
Datawhale
2021/07/30
5830
相关推荐
生信代码:机器学习-训练模型
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档