本文为《吴恩达机器学习》的要点记录算法
当咱们运用训练好了的模型来预测未知数据的时候发现有较大的偏差,咱们下一步能够作什么?一般咱们会有下面选择:网络
那么如何选择呢?能够经过一些机器学习诊断法来作出决定。机器学习
为了检验算法是否过拟合,咱们将数据分红训练集、测试集和交叉验证集,好比可使用60%的数据做为训练集,用20%的数据做为测试集,用20%的数据做为交叉验证集。在训练过程当中能够这样选择 模型:函数
当运行一个学习算法时,若是这个算法的表现不理想,那么多半是出现两种状况:要么是误差比较大,要么是方差比较大。换句话说,出现的状况要么是欠拟合,要么是过拟合问题。 那么这两种状况,哪一个和误差有关,哪一个和方差有关,或者是否是和两个都有关?性能
对于误差和方差的理解: www.zhihu.com/question/20…学习
咱们一般会经过将训练集和交叉验证集的代价函数偏差与多项式的次数绘制在同一张图表上来帮助分析是高误差仍是高方差:测试
上面:设计
通常咱们采用下面方法选择:cdn
咱们能够经过不断增长训练集大小,来观察当前训练模型是处于 误差 or 方差 问题:blog
上图训练模型处于高误差/欠拟合的状况,这时增长数据到训练集不必定能有帮助。
上图训练模型处于高方差/过拟合的状况,增长更多数据到训练集可能能够提升算法效果。
使用较小的神经网络,相似于参数较少的状况,容易致使高误差和欠拟合,但计算代价较小使用较大的神经网络,相似于参数较多的状况,容易致使高方差和过拟合,虽然计算代价比较大,可是能够经过正则化手段来调整而更加适应数据。 一般选择较大的神经网络并采用正则化处理会比采用较小的神经网络效果要好。 对于神经网络中的隐藏层的层数的选择,一般从一层开始逐渐增长层数,为了更好地做选择,能够把数据分为训练集、交叉验证集和测试集,针对不一样隐藏层层数的神经网络训练神经网络,而后选择交叉验证集代价最小的神经网络。
构建一个学习算法的推荐方法为:
咱们能够将咱们的算法预测的结果分红四种状况:
则:
查准率 =
查全率 =
类偏斜状况表现为咱们的训练集中有很是多的同一种类的样本,只有不多或没有其余类的样本。
例如咱们但愿用算法来预测癌症是不是恶性的,在咱们的训练集中,只有0.5%的实例是恶性肿瘤。假设咱们编写一个非学习而来的算法,在全部状况下都预测肿瘤是良性的,那么偏差只有0.5%。然而咱们经过训练而获得的神经网络算法却有1%的偏差。这时,偏差的大小是不能视为评判算法效果的依据的。
为了不偏斜类问题, 咱们须要保证查准率和召回率的相对平衡。
例,在全部咱们预测有恶性肿瘤的病人中,实际上有恶性肿瘤的病人的百分比,越高越好,这时咱们的查全率是比较高的。
若是咱们但愿只在很是确信的状况下预测为真(肿瘤为恶性),即咱们但愿更高的查准率,咱们可使用比0.5更大的阀值,如0.7,0.9。这样作咱们会减小错误预测病人为恶性肿瘤的状况,同时却会增长未能成功预测肿瘤为恶性的状况。
若是咱们但愿提升查全率,尽量地让全部有多是恶性肿瘤的病人都获得进一步地检查、诊断,咱们可使用比0.5更小的阀值,如0.3。
咱们能够将不一样阀值状况下,查全率与查准率的关系绘制成图表,曲线的形状根据数据的不一样而不一样:
那怎么选择阈值呢? 一种方法是计算F1值(F1 Score),其计算公式为:
若是你有大量的数据,并且你训练了一种带有不少参数的学习算法,增大训练集的数量,能够提供一个高性能的学习算法。