模型选择是机器学习中的重要步骤,它指挑选多个候选模型中性能最优的一个。主要的模型选择方法有:
- 交叉验证:将数据集划分为训练集和验证集,在验证集上评估不同模型的性能,选择性能最优的模型。
- 留出法:将部分样本留出不参与模型训练,在留出样本上测试不同模型的性能,选择性能最优的模型。
- 滑动法:将数据集按时间顺序划分,前面部分用于模型训练,后面部分用于模型评估和选择。
- 自助法:建立一个性能测评的函数,在这个函数的帮助下搜索最优模型。
常用的模型选择指标有:
- 准确率:分类任务中使用,表示总体预测正确的样本所占比例。
- 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)