网站备案现场浏览器官网入口
news/
2025/9/27 1:39:14/
文章来源:
网站备案现场,浏览器官网入口,温州建设工程监理管理学会网站,响应式手机网站建设目录
一、前言#xff1a;误差与拟合
#xff08;一#xff09;经验误差
#xff08;二#xff09;过拟合、欠拟合
二、评估方法
#xff08;一#xff09;评估总体的思路
#xff08;二#xff09;如何划分训练集和测试集
1.留出法
2.k折交叉验证
3.自助法 …目录
一、前言误差与拟合
一经验误差
二过拟合、欠拟合
二、评估方法
一评估总体的思路
二如何划分训练集和测试集
1.留出法
2.k折交叉验证
3.自助法
三、性能度量
一均方误差
二错误率精度
三查准率查全率
补充
四F1Fβ
五ROCAUC 为了实现对模型指导实现自主建模我们会对模型进行选择和评估主要有以下几个问题 一、前言误差与拟合
一经验误差 使用上述流程理解其中 a 为预测错误的个数m为使用的样本数量则有以下概念
错误率(error rate)分类错误的样本数占样本总数的比例。即在 m 个样本中有 a 个样本分类错误则错误率E a / m。精度(accuracy)精度1 - a / m 即 精度 1 - 错误率 。误差(error)学习器的预测输出与样本之间的差异。其中学习器在训练集上的误差称为“训练误差(training error)”或“经验误差(empirical error)”在新样本上的误差称为“泛化误差(generalization error)”。
二过拟合、欠拟合 对于机器学习而言泛化误差越小越好但经验误差不一定越小越好因为会出现“过拟合”问题西瓜书中就有这样一个例子 过拟合(overfitting)学习器在训练样本中表现得过于优越导致在验证数据集以及测试数据集中表现不佳。
可能原因
建模样本选取影响如样本数量太少选样方法错误样本标签错误等导致选取的样本数据不足以代表预定的分类规则样本噪音无关影响因素干扰使得机器将部分噪音认为是特征从而扰乱了预设的分类规则参数太多模型复杂度过高
欠拟合(underfitting)可能由于模型过于简单或特征量过少等原因相对于过拟合学习器对训练样本的一般性质尚未学好不能很好地捕捉到数据特征。 二、评估方法
一评估总体的思路 在学习过程中应尽量减少欠拟合或过拟合对模型的影响选择泛化误差最小的模型。 泛化误差是无法直接获得的因此会将数据分为训练集(training set)和测试集(testing set)训练集用于投喂给模型进行学习而测试集用来“测试”所得到的模型对新样本的泛化能力然后以测试集上的“测试误差”testing error作为泛化误差的近似。
评估方法的关键在于怎么获得“测试集” (test set) 此外可能有些地方会有“验证集”(validation set)验证集的存在一般是为了调节参数
二如何划分训练集和测试集
1.留出法 将训练集和测试集简单地37分或28分 注意事项
测试集和训练集在总体中独立同分布如使用分层采样的方式进行数据划分测试集应该尽可能与训练集互斥通常进行若干次随机划分、重复实验评估取平均值最为评估结果 测试集数量不能极端太大或太小都不合适 ( 如 1/5~1/3 如此划分) 代码实现 如对于一个有监督学习X 为原数据集如顾客特征y 为数据对应标签是否购买某物品可以使用 train_test_split() 函数进行数据集的划分
# Splitting the dataset into the Training set and Test set
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test train_test_split(X, y, test_size 0.25, random_state 0) 函数详细用法参见python机器学习 train_test_split()函数用法解析及示例 划分训练集和测试集 以鸢尾数据为例 入门级讲解-CSDN博客
2.k折交叉验证 k折交叉验证即将原本数据集分成 k 分每次取其中一块当测试集每次的测试结果平均值作为标准 这种方法可以通过 sklearn 中 model_selection 模块的 cross_val_score() 函数实现 例先生成一个名为 “classifier” 的SVN模型进行交叉验证后以其均值作为模型精度方差作估计误差
# Fitting Kernel SVM to the Training set
from sklearn.svm import SVC
classifier SVC(kernel rbf, random_state 0)
classifier.fit(X_train, y_train)####################################
# Applying k-Fold Cross Validation #
####################################
from sklearn.model_selection import cross_val_score#######################################################
# Split training set into 10 folds #
# 10折交叉验证指定训练模型、数据集、数据标签、迭代次数 #
#######################################################
accuracies cross_val_score(estimator classifier, X X_train, y y_train, cv 10)accuracies.mean() # Get mean as accuracy of model performance
accuracies.std() # Get standard deviation to evaluate variance 亦有其他代码可实现再此不多赘述 补充关于留一法 直接将样本分成 m 分每份一个样本这样做不会受样本划分方式的影响但在数据量大的情况下对算力有很高要求结果也未必一定会更准确
3.自助法 该方法通常用于样本量较小的情况对于含有 m 个数据的样本进行放回抽样在进行 m 次后有 36.8% 的样本是不会被取到的这由以下这个高数中的重要极限得出 被取到的概率为 1/m不被取到的概率为 1-1/m进行 m 次抽取
注意事项
该方法在数据集较小且难以划分时使用会改变数据分布引入误差
三、性能度量 旨在评价模型的准确度衡量其泛化能力实际中什么样的模型是“好”的不仅取决于算法和数据 还取决于任务需求
一均方误差 对于回归任务最常用的是均方误差公式如下 即输出值减去实际值平方进行累加后取平均 字母恐惧的伙伴也别急这里有解释
D给定的样集D{(x1,y1),(x2,y2),...(xm,xm)}此处为实际的特征 x 和实际标签 ym样集中的样本个数f学习器/模型ff(x)模型对于每个 x 输出的预测值y数据中每个 x 对应的实际标签
二错误率精度 这两个指标十分易于理解也在文章开头就做了介绍总言之就是模型预测正确的样本及错误样本的占比
三查准率查全率 又称准确率和召回率 上面这个图叫作混淆矩阵在实际应用中很有用先知道几个概念
真正例(True Positive)实际结果为positive模型预测结果也为positive假正例(False Positive)实际结果为negative模型预测结果却为positive假反例(False Negative)实际结果为positive模型预测结果却为negative真反例(True Positive)实际结果为negative模型预测结果也为negative 这里的正反例比如一个顾客购买了可以说是正例某疾病检测结果显示阴性健康也可以说是正例真假则是反应的模型输出结果与实际结果是否一致 此基础上有查准率与查全率公式 换成人话理解即
查准率预测正确的的正例占所有预测结果为正例的比例即所有 f(x) 中的准确率反应所有预测为正例中正确样本的占比看查的准不准 如模型预测100人购买实际上只有75人购买预测正确则查准率为75%有25%被错误地预测为购买
查全率预测正确的的正例占所有实际为正例的比例反应所有真实正例中被预测正确的占比就是有没有把它们找出来查的全不全 如模型预测100位顾客购买实际上有125人购买则查全率80%有20%被错误地预测为未购买 由于FN与FP负相关查准率和查全率是一对矛盾的度量两者呈负相关趋势 P-R图像 阈值-PR图像阈值越小要求低精确度则越低找的越全反之同样道理 阈值可以大致理解为找出正例的那个标准关于这两指标的意义文章健康检测的例子举的非常好可参考【机器学习】模型评估与选择理论_提高阈值,查准率查全率-CSDN博客
补充 平衡点(Break-Event Point简称 BEP) 是“查准率查全率”时的取值。如右图中学习器C的BEP是0.64而基于BEP的比较可认为学习器A优于B
模型性能比较 实际上P-R曲线可以用来比较多个模型的效果如上图中模型B在任何情况下PR值均比模型C高效果就比模型C好那对于模型A和B的比较
比较AB面积根据平衡点进行比较使用指标F1及Fβ 在 sklearn 中可用以下方法查看混淆矩阵 假设已有预测结果 y_pred 与真实结果 y_test
print(y_test)
print(-------------------------------)
print(y_pred)[0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 1 0 0 0 0 0 1 1 0 0 0 00 0 1 0 0 0 0 1 0 0 1 0 1 1 0 0 0 1 1 0 0 1 0 0 1 0 1 0 1 0 0 0 0 1 0 0 10 0 0 0 1 1 1 0 0 0 1 1 0 1 1 0 0 1 0 0 0 1 0 1 1 1]-------------------------------[0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 1 0 0 0 0 0 0 1 0 0 0 00 0 1 0 0 0 0 1 0 0 1 0 1 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 00 0 1 0 1 1 1 1 0 0 1 1 0 1 0 0 0 1 0 0 0 0 0 0 1 1] 可得到混淆矩阵
# Making the Confusion Matrix
from sklearn.metrics import confusion_matrix
cm confusion_matrix(y_test, y_pred)
cmarray([[65, 3],[ 8, 24]], dtypeint64)
四F1Fβ 由于P与R各有侧重F1实际上是查全率P与查准率R的加权平均 则有 在一些应用中对查准率和查全率的重视程度有所不同会对两者进行加权调和平均计算 对于β 0度量了查全率对查准率的相对重要性 1为标准的 1 1 时查全率 R 有更大影响 1 时查准率 P 有更大影响 上述问题主要对于单个二分类问题对于多分类问题除了直接使用某些算法也可以看成 n 个二分类问题one vs one 或 one vs rest多个二分类问题会产生多个P值、R值若要衡量总体效果可以 1.先计算再求平均 2.先平均再计算 法2即将多次分类得到的真正例真反例等等个数进行平均再计算 F 值
五ROCAUC 受试者特征曲线 ROC 由以下两部分构成 TPR 真正利率其实就是召回率FPR 假正例率就是反例被错误地分成正例的比率 AUC 即 Area Under Curve表示一条曲线下面的面积ROC曲线的AUC值可以用来对模型进行评价。一个纯随机分类器 ROC 曲线下面积是等于 0.5的可以以此判断一个模型效果如何 同一模型真正例预测出来的越多假正例自然也会越多因为总体预测为正例的数量多了 在有实际测试样例时会得到如下图类似的图像 曲线的绘制过程假设m个正例与m个反例在得分排序后阈值最大时所有样例都为反例即 (0,0)接下来就是移动坐标连线 每检测出一个真正例或假正例则在对应轴上增加1/m或1/m我们一般希望假正例率增加的越慢越好的 关于代价损失、代价敏感错误率与代价曲线部分内容理解还不够深刻待日后涉及到了再补更
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/918996.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!