数据运用:注意对数据先进行random_shuffle(如果数据有一定顺序,下述划分会导致数据范围不全面)
1)数据7:3划分
train err/ test err
2)数据6:2:2划分
train err/ validation err/ test err
跑NN是降低train err, 可以理解为获得某个固定的超参数下, NN的model中的最优参数
对于不同的超参数(一些常数, 权值初始化, model选择等), 比较跑NN后的validation err, 能够找到好的超参数
由于这个超参数表明了它对validation set好, 但是不表明对其他数据也好, 比如超参数试多了, 可能连着training set和validation set一起overfit了
所以最后还要再测test err看下模型在unseen data上的表现
test err不能轻易使用, 比如不能说我看到validation err比较小了, 觉得开心, 就跑去test一下, 发现好像不行, 然后又重新调超参数, 这样test就沦为validation了
注意当使用regularization时,使用带(lambdasum heta^2)的(J)训练,但使用不带的去计算三种err
实现时不用写俩函数,传参时lambda设成0就好
算法调整
目前理解bias / variance
bias是train err比较大, variance是train err和test err的差距比较大
bias就比如用直线去拟合一条比较复杂的曲线,连train err都比较大
variance就比如用非常高次的多项式去拟合并不那么复杂的曲线,能把train err弄得比较小,但波动大,而增加数据可以使假设逐步向曲线靠近,类比泰勒展开每增加一阶导数曲线的变化
此外learning curve中
train err增test err减,逼近较快,之后gap较小,train err较大,为high bias + low variance
train err增test err减,逼近较慢,之后gap较大,train err较小,为low bias + high variance
1)high bias
+features(additional or polynomial)
+hidden layer
-lambda(lambda过大变成直线)
2)high variance
+training set
+lambda(lambda过小)
-features
绘图法
J-Iter
train err, test err-training set size (learning curve,每次训练一个training set前缀,测完整的test set)
err-parameter
评测指标
对于01分类问题,以诊断癌症为例(1为癌症)
precision(P):预测为1的人中有多少真实为1(可以理解为预测准确度)
recall(R):真实为1的人中有多少被预测为1(可以理解为预测灵敏度)
F: (2frac {PR}{P+R}) F越大越好(这种公式即并联电阻的总电阻,使P,R都不会太低)