1.过拟合和欠拟合
1.1过拟合:
在调试统计模型的时候,使用了过多的参数,模型对于训练数据拟合上程度过当。
在训练数据上表现很好,但在测试集上表现不好。
解决方法:使用交叉验证,增加样本数,改变超参数(设置范围进行循环)
1.2欠拟合
模型在训练和预测时表现都不好的情况;
欠拟合很容易被发现。
2.交叉验证及参数调整
验证曲线
sklearn.model_selection.validation_curve
参数调整
1.模型自带参数:通过样本学习得到的参数,如:逻辑回归及神经网络中的权重及偏置的学习等。
2.超参数:模型框架的参数,如:kmeans中的k,神经网络中的网络层数及每层的节点个数,通常由手工设定
如何调整参数:
1.交叉验证
sklearn.model_selection.cross_val_score
2.网格搜索
sklearn.model_selection.GridSearchCV
3.特征选择
去除方差小的特征,VaricanceThreshold
极端情况,日过所有样本在某个维度上的特征全都相同,即0方差,说明该特征描述或代表样本的能力很弱;
基于单变量统计特征:
根据单变量统计测试选取特征,SelectKBeat
基于模型的特征选择:
如:随机森林等
4.评价指标补充
不一定是准确率越高越好
4.1 曲线下面积(AUC)
二分类模型的评价指标;
曲线:接受者操作特征曲线(ROC曲线);
AUC的值就是ROC曲线下的面积;
真阳性(TP):预测1,真实1;
假阳性(FP):预测1,真实0;
真阴性(TN):预测0,真实0;
伪阴性(FN):预测0,真实1;
True positive rate
T
P
T
P
+
F
N
\frac{TP}{TP+FN}
TP+FNTP
所有实际为1的情况中预测为0;
False positivev rate
F
P
F
P
+
T
N
\frac{FP}{FP+TN}
FP+TNFP
所有实际为0的情况中预测为1;
ROC空间将FPR定义为x轴,TPR为y轴;
根据预测概率和设定的阈值样本划到相应类别中;
选取0-1每个点为阈值,根据所划分的类别分别计算TPR和FPR,描绘在ROC空间内,连接这些坐标点就得到了ROC曲线;
AUC在0-1之间:
0.5<AUC<1:优于随机猜测
0<AUC<0.5:比随机猜测还差
4.2对数损失(logloss)
对每个样本来说,预测样本结果会将其归到某一类中;但有时输出结果是一组概率;
如【0.1 0.8 0.1】被预测为第二个类;
对于这类模型的输出可以用LOGLOSS来评价预测结果,公式如下:
logloss = -
1
N
∑
i
=
1
N
∑
i
=
1
N
y
i
,
j
l
o
g
(
p
i
,
j
)
\frac{1}{N}\sum_{i=1}^{N}\sum_{i=1}^{N}y_{i,j}log(p_{i,j})
N1∑i=1N∑i=1Nyi,jlog(pi,j)
其中,N是样本数量,M是类别个数;
如果第i个样本属于第j个类,
y
i
,
j
y_{i,j}
yi,j为1,否则为0;
p
i
,
j
p_{i,j}
pi,j是第i个样本被预测为第j类的概率;
sklearn.metics.log_loss