什么是模型选择?常见的模型选择方法有哪些?代码举例讲解

模型选择是机器学习中的重要步骤,它指挑选多个候选模型中性能最优的一个。主要的模型选择方法有:

  • 交叉验证:将数据集划分为训练集和验证集,在验证集上评估不同模型的性能,选择性能最优的模型。
  • 留出法:将部分样本留出不参与模型训练,在留出样本上测试不同模型的性能,选择性能最优的模型。
  • 滑动法:将数据集按时间顺序划分,前面部分用于模型训练,后面部分用于模型评估和选择。
  • 自助法:建立一个性能测评的函数,在这个函数的帮助下搜索最优模型。

常用的模型选择指标有:

  • 准确率:分类任务中使用,表示总体预测正确的样本所占比例。
  • F1值:分类任务中使用,综合考虑了精确率和召回率。
  • 平方误差:回归任务中使用,表示预测值与真实值偏差的大小。
  • 交叉熵:分类任务中使用,表示模型预测值与真实类别之间的差异。

代码示例:

交叉验证:

python
from sklearn.model_selection import cross_val_score

scores = cross_val_score(model, x, y, cv=5) 
print(" Accuracy: %0.2f (+/- %0.2f)" % (scores.mean(), scores.std() * 2))

留出法:

python
from sklearn.model_selection import train_test_split

x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=1) 

model.fit(x_train, y_train)
score = model.score(x_test, y_test)
print("Accuracy on test set: ", score)

滑动法:

python  
train_size = int(len(x) * 0.7)

for i in range(0, len(x) - train_size, train_size // 10): 
    model.fit(x[i:i + train_size], y[i:i + train_size])
    score = model.score(x[i + train_size:], y[i + train_size:])
    print("Accuracy at step %d: " % i, score)