留出法

                     

贡献者: xzllxls; addis

预备知识 数据,模型评估

   留出法(Hold-out)是评估一个机器学习模型性能的常用方法之一。对于一个整理好的数据集,随机选择一部分样本作为训练数据即训练集,用于训练模型,剩下的部分用于测试模型,作为测试集。

   在划分训练集和测试集的时候,须要遵循的原则之一是保持数据分布的一致性。比如,一个二分类任务,其数据样本的标签值为+或-。那么,在使用留出法划分训练集测试集时,要保证训练集中标签为+(或-)的样本比例与测试集中标签+(或-)的样本比例相同。通常可以采用分层采样的方法来实现这一原则。

   第二个要遵循的原则是多次反复划分,然后取多次测试的平均性能。由于每次随机划分所得到的训练集和测试集中的样本往往不相同,因此在不同的训练样本和测试样本下,所得出的模型性能显然会有一定的差异。为了尽可能消除这种由于随机划分数据集所产生的偏差,可以采用本条原则。

   第三个原则是测试集不可过大或者过小。如果测试集过大,则训练集会过小,由此训练出来的模型可能无法学习到整个原始数据集的规律。反之,如果测试集过小,训练集过大,模型可能会比较容易学习到原始数据中的规律,但由于测试集过小,测试出的性能难以代表模型的真实性能。在机器学习实践中,训练集与测试集的比例通常设置为 3:1 或 4:1。

图
图 1:留出法示意图

1. 知识要点

步骤:

   将所收集到的完整数据集随机划分为训练集和测试集。 在训练集上训练模型,然后在在测试集上评估模型性能。

优点:

缺点:

改进方法:

   考虑到留出法的结果可能受数据划分的影响。人们提出了几种常见的改进方法:

  1. 多次重复划分数据集:多次随机划分数据集并计算平均性能,以减少单次划分带来的不确定性。
  2. 分层抽样:确保训练集和测试集中各类别样本的比例与原始数据集一致,特别适用于类别不平衡的数据集。

2. 编程实战

   给出一个用留出法验证线性回归模型的程序示例。逻辑归回算法基于 scikit-learn 库实现。数据存储与表示基于 numpy 库。

代码示例

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
import numpy as np

# 加载iris数据集
data = load_iris()
X = data.data
y = data.target

# 定义逻辑模型
model = LogisticRegression(max_iter=200)

# 重复Holdout Method的次数
n_splits = 10
accuracies = []

# 反复执行留出法,训练并评估模型,求出分类准确率。
for _ in range(n_splits):
    # 将数据集划分为训练集和测试集
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
    
    # 训练模型
    model.fit(X_train, y_train)
    
    # 评估模型
    y_pred = model.predict(X_test)
    accuracies.append(accuracy_score(y_test, y_pred))

# 输出平均准确率
print("平均准确率:", np.mean(accuracies))

结果与说明

   以上示例程序,对 iris 数据集做 n_splits(=10)次随机划分,每次划分均训练一个逻辑回归模型,,并测试模型分类准确率。最后求出 10 次的平均分类准确率。输出结果如下:

平均准确率: 0.9400000000000001

   注意,由于训练集和测试集是随机划分,因此上述程序每次执行的结果可能不同。


致读者: 小时百科一直以来坚持所有内容免费无广告,这导致我们处于严重的亏损状态。 长此以往很可能会最终导致我们不得不选择大量广告以及内容付费等。 因此,我们请求广大读者热心打赏 ,使网站得以健康发展。 如果看到这条信息的每位读者能慷慨打赏 20 元,我们一周就能脱离亏损, 并在接下来的一年里向所有读者继续免费提供优质内容。 但遗憾的是只有不到 1% 的读者愿意捐款, 他们的付出帮助了 99% 的读者免费获取知识, 我们在此表示感谢。

                     

友情链接: 超理论坛 | ©小时科技 保留一切权利