一、模型选择
1.1 模型
模型就是学习的条件概率分布或者决策函数(这里只指监督学习)。条件概率的集合:,决策函数的集合:
。条件概率表示的模型为概率模型,决策函数表示的模型为非概率模型。
1.2 模型选择
模型选择基本是选择一个模型评估指标(均方差、准确率、F1等)同时考虑欠拟合(在训练集上表现不好-为将训练样本的一般性质学好)和过拟合(在训练集和测试集上表现有很大差异-将训练集上的性质学习的过好)的综合选择。对于模型的泛化能力也是很重要的考虑指标,可以使用“偏差-方差分解”,以回归任务为例,模型的预期预测为,则方差为:
,偏差:
。偏差度量了模型的期望预测与真实结果的偏离程度-模型本身的拟合能力,方差度量了同样大小的训练集的变动所造成的学习性能的变化-数据扰动造成的影响(一般来说,偏差与方差是由冲突的)。
二、误差评估
2.1 评估方法(主要使用的两种)
留出法(留折法)直接将数据集D划分为两个互斥的集合,其中一个集合作为训练集S,另一个作为测试集T。
交叉验证法(k折交叉验证法):将数据集划分为k个大小相似的互斥子集,每个子集都要保持分布一致性,其中k-1子集作为训练集,剩下一个作为测试集,然后依次作为测试集。
2.2 度量性能
2.2.1 分类问题(以二分类为主)
TP-将正例预测为正例,TN-将反例预测为反例,FP-将反例预测为正例,FN-将正例预测为反例。
精确率/查准率 P = TP/(TP+FP) -在预测为正例中真正正例的比例。
召回率/查全率 R = TP/(TP+FN) -真正正例预测为正例的比例。
F1 = 2PR/(P+R)
真实情况 | 预测结果 正 例 负 例 |
正 例 | TP(真正例) FN(假反例) |
负 例 | FP(假正例) TN(真反例) |
一般来说,P与R是一对矛盾的度量。
ROC(Receiver Operating Characteristic-"受试者工作特征")曲线:纵轴-真正例率TPR=TP/(TP+FN),横轴-假正例率FPR=FP/(FP+TN),该曲线从改变分类阈值得到真正例率与假正例率一之间的关系。
AUC:ROC曲线与坐标轴围成的面积。
代码实现(基于sklearn):
#!/usr/bin/env python
# coding: utf-8
# 准确率
import numpy as np
from sklearn.metrics import accuracy_score
y_pred = [0, 2, 1, 3,9,9,8,5,8]
y_true = [0, 1, 2, 3,2,6,3,5,9]
accuracy_score(y_true, y_pred