赞
踩
(一)经验误差
基本术语 | 释义 |
---|---|
错误率 | 分类错误的样本数占总样本数的比例 |
精度 | 精度=1-错误率 |
训练误差 | 在训练集上的误差 |
泛化误差 | 在新样本上的误差 |
(二)过拟合
一般来说,欠拟合比较好解决,而过拟合无法彻底避免,只能尽量“缓解”(若可彻底避免过拟合,则说明可以获得最优解,即通过构造证明了“P=NP”)。
为了衡量一个模型的泛化能力,需要使用“测试集”来测试模型对新样本的判别能力,以测试集上的“测试误差”作为泛化误差的近似。
测试集应遵循与训练集互斥的原则。
(一)留出法
直接将数据集 D D D分为两个互斥集合,需要兼顾模型样本均衡性,必要时可采用分层抽样的方法。
单次使用留出法结果不够可靠,需要若干次随机划分,重复进行实验评估后取平均。
通常选择2/3~4/5的样本作为训练集,剩余作为测试集。
#加载库 import numpy as np import pandas as pd #创建数据集 data=np.random.randint(100,size=[25,4]) #创建分割函数(此段代码为shenhuaifeng发布) def split_train(data,test_ratio): shuffled_indices=np.random.permutation(len(data)) test_set_size=int(len(data)*test_ratio) test_indices =shuffled_indices[:test_set_size] train_indices=shuffled_indices[test_set_size:] return data[train_indices],data[test_indices] #切分训练集 train_data,test_data=split_train(data,0.2)
(二)交叉验证法
#加载库 from sklearn import datasets from sklearn import metrics from sklearn.model_selection import KFold,cross_val_score from sklearn.pipeline import make_pipeline from sklearn.linear_model import LogisticRegression from sklearn.preprocessing import StandardScaler # 加载手写数字的数据集 digits = datasets.load_digits() # 创建特征矩阵 features = digits.data #创建目标向量 target = digits.target #创建标准化对象 standardizer =StandardScaler() # 创建逻辑回归对象 logit=LogisticRegression() #创建包含数据标准化和逻辑回归的流水线 pipeline = make_pipeline(standardizer,logit) #创建k折交叉验证对象 kf = KFold(n_splits=10,shuffle=True,random_state=1) #创建k折交叉验证 cv_results = cross_val_score(pipeline,features,target,cv=kf,scoring="accuracy") # 计算得分 cv_results #计算平均得分 cv_results.mean()
(三)自助法
自助法能够避免因划分区间而产生的训练集样本规模减小问题。
#载入包 import numpy as np #创建数据集 data=np.random.randint(100,size=[25,4]) #定义自助法函数 def bootstrap_train(data): bootstrapping = [] #自主法抽取样本号 for i in range(len(data)): bootstrapping.append(np.floor(np.random.random()*len(data))) train_set = [] #按样本号抽取样本保存为train_set for i in range(len(data)): train_set.append(data[int(bootstrapping[i])]) #将train_set存储为np数组 train_set = np.array(train_set) data_rows = data.view([('', data.dtype)] * data.shape[1]) train_rows = train_set.view([('', train_set.dtype)] * train_set.shape[1]) #data与train_data求差集 test_data = (np.setdiff1d(data_rows, train_rows).view(data.dtype).reshape(-1, data.shape[1])) return train_set,test_data train_data,test_data=bootstrap_train(data)
回归任务中最常用的性能度量“均方误差”(MSE)。
E ( f ; D ) = 1 m ∑ i = 1 m ( f ( x i ) − y i ) 2 E(f;D)=\frac{1}{m}\sum^m_{i=1}(f(x_i)-y_i)^2 E(f;D)=m1i=1∑m(f(xi)−yi)2
(一)错误率与精度
对于样本集
D
D
D,分类错误率定义为:
E
(
f
;
D
)
=
1
m
∑
i
=
1
m
Π
(
f
(
x
i
)
≠
y
i
)
E(f;D)=\frac{1}{m}\sum^m_{i=1}\Pi(f(x_i)\neq y_i)
E(f;D)=m1i=1∑mΠ(f(xi)=yi)
精度则定义为:
a
c
c
(
f
;
D
)
=
∑
i
=
1
m
Π
(
f
(
x
i
)
)
y
i
)
=
1
−
E
(
f
;
D
)
acc(f;D)=\sum^m_{i=1}\Pi(f(x_i)) y_i)=1-E(f;D)
acc(f;D)=i=1∑mΠ(f(xi))yi)=1−E(f;D)
#加载包
import numpy as np
from sklearn.metrics import accuracy_score
#准备数据
real = [0,0,1,0,1,0]
pred = [1,0,1,1,1,0]
#错误率
error_rate=1-accuracy_score(real,pred)
#精度
acc=accuracy_score(real,pred)
(二)查准率、查全率与F1
基本术语 | 英文 |
---|---|
查准率 | precision |
查全率 | recall |
真正例 | true positive (TP) |
假正例 | false positive (FP) |
真反例 | true negative (TN) |
假反例 | false negative (FN) |
查准率(准确率):
p
r
e
c
i
s
i
o
n
=
T
P
T
P
+
F
P
precision = \frac{TP}{TP+FP}
precision=TP+FPTP
查全率(召回率):
r
e
c
a
l
l
=
T
P
T
P
+
F
N
recall = \frac{TP}{TP+FN}
recall=TP+FNTP
F
1
F1
F1:
F
1
=
2
×
p
r
e
c
i
s
i
o
n
×
r
e
c
a
l
l
p
r
e
c
i
s
i
o
n
+
r
e
c
a
l
l
F1=\frac{2 \times precision \times recall}{precision+recall}
F1=precision+recall2×precision×recall
(三)ROC与AUC
ROC纵轴为真正例率(TPR),横轴为假正例率(FPR)。
T
P
R
=
T
P
T
P
+
F
N
TPR = \frac{TP}{TP+FN}
TPR=TP+FNTP
F
P
R
=
F
P
T
N
+
F
P
FPR =\frac{FP}{TN+FP}
FPR=TN+FPFP
AUC为ROC曲线下各部分面积之和。
#载入包 import numpy as np import matplotlib.pyplot as plt #读入TPR与FPR数据 true_positive_rate = np.array([0,0.133,0.814,0.983,0.997,1]) false_positive_rate = np.array([0,0.001,0.155,0.629,0.904,1]) #绘图 plt.title("Reciver Operating Characteristic") plt.plot(false_positive_rate,true_positive_rate) plt.plot([0,1],ls="--") plt.plot([0,0],[1,0],c=".7"),plt.plot([1,1],c=".7") plt.xlabel("False Positive Rate") plt.ylabel("True Positive Rate") plt.show()
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。