机器学习策略
1.误差分析
当我们在训练一个模型的时候,如一个猫和狗分类模型,最终得到了90 % 90%90%的精确度,即有10 % 10%10%的错误率。所以我们需要对模型的一些部分做相应调整,才能更好地提升分类的精度。
方法:
1.修改哪些被分类成猫的狗狗图片的标签
2.修改哪些错误分类的大型猫科动物
3.提升图片质量(模糊度)
2.显著性检验
示例:ming开了一家王者荣耀公司。公司分别在成都,北京开设分公司,现在知道2020年二个分公司对应每个月的销售额数据,现在ming想知道那个分公司销售额更大
在这里用平均值去比较,不妥,因为这样的销售额出现实质上是偶然造成的,并不是一种必然。
方法:
假设:两个样本集之间不存在任何区别
结果:在显著性水平a=0.05情况下,p>0.05接受原假设,p值<0.05拒绝原假设。
方法:F值=组间方差与组内方差的比值,查表:F实际值>F查表值,则p<=0.05;F实际值<F查表值 则p>0.05
显著性检验:是用于检测科学实验中实验组与对照组之间是否有差异以及差异是否显著的办法。
一般而言,要把检验的假设称之为原假设,记为H0,把H0对应的假设记为H1。
原理
如果原假设为真,而检验的结论却劝你放弃原假设,此时,我们把这种错误称为第一类错误,出现概率记为a
如果原假设不真,而检验的结论却劝你不要放弃原假设,此时第二类错误,出现概率记为b
通常只限定犯第一类错误的最大概率α, 不考虑犯第二类错误的概率β。我们把这样的假设检验称为显著性检验,概率α称为显著性水平。
案例解释
根据ming开设的王者荣耀公司销售额分析
显著性检验分为参数检验和非参数检验,参数检验要求样本来源于正态总体(服从正态分布)
3.方差分析
方差分析又称“变异数分析或者F检验”,用于两个及两个以上的样本均数差别的显著性检验
(1)实验条件:即不同处理造成的差异,称为组间差异,用变量在各组的均值与总均值之间的偏差平方和的总和表示,记为ssb,组间自由度dfb(自由度为样本量-变量个数)
(2)随机误差,如测量误差造成的差异或个体差异,称为组内差异,用变量在各组的均值与该组内变量值之偏差平方总和表示,ssw组内自由度dfw
总偏差平方和sst=ssb+ssw
(3)用ssw和ssw分别除以各自的自由度,得到均方msw,msb,msb/msw构成F分布。
若F值接近1,则说明各组均值间的差异没有统计学意义,若F值远大于1,则说明各组均值间的差异有统计学意义
对于错误标记的样本处理
1.情况一
由于随机误差导致错误标记分类,由于深度学习算法具有好的鲁棒性,这里对这类错误,不需要进行操作
2.情况二
由于系统误差导致错误标记,系统误差即系统一直把同样白色的狗标记为猫。
4.数据集划分问题
留出法(hold-out)
LOO留一发 or LPO 留P法
K-Fold
是否重复试验与分层
交叉验证
#加载数据 from sklearn.model_selection import train_test_split,LeaveOneOut,LeavePOut from sklearn import datasets from sklearn import svm from sklearn.metrics import accuracy_score import numpy as np iris=dataset.load_iris() clf_svc=svm.SVC(kernel='linear') iris.data.shape,iris.targe.shape #hold out x_train,x_test,y_train,y_test=train.test_split(irsi.data,iris.target,test_size=0.4,random_state=0) clf_svc.fit(x_trian,y_train) accuracy_score(clf_svc.predict(x_test),y_test) #leave one out loo=LeaveOneOut() loo.get_n_splits(iris.data) mean_accuracy_score_list=[] for train_index,test_index in loo.split(iris.data): clf_svc.fit(iris.data[train_index],iris.target[train_index]) prediction=clf_svc.predict(iris.data[test_index]) mean_accuracy_score_list.append(accuracy_score(iris.target[test_index],prediction)) print(np.average(mean_accuracy_score_list))