(http://siliangdu.tk/2011/11/106)
10 Debugging a learning algorithm:
1 获取更多训练集:修正过度拟合
2 使用更少的特征:修正过度拟合
3 使用更多的特征:修正bias(与过度拟合相对,应该是指拟合不足)
4 使用多项式特征(x1^2, x1*x2...):修正bias
5 减小惩罚因子lambda:修正bias
6 增大惩罚因子:修正过度拟合
11 Trading off precision and recall:
precision: 预测为正(即数字1)的样例中,有多少样例实际上确实是正的,true positive / (true positive + false positive)。
recall: 在确实是正的样例中,有多少是正确预测为正的,true positive / (true positive + false negtive)
增大判断的阈值(即h(x) >=0.7预测为正,h(x)<0.7预测为0,0.7为阈值),则增大precision,减小recall;相反,减小判断的阈值,则减小recall,增大precision。
12 SVM
增大C:修正bias
减小C:修正过度拟合
使用Gaussian Kernel时:
增大σ:图形坡度变缓,修正过度拟合
减小σ:图形坡度变陡,修正bias
13 离群点检测
个人认为,离群点检测与某些特定的分类(两类)有些相似,但又有很多区别,主要体现在:
1)离群点检测的训练集、交叉验证集和测试集都极不平衡,甚至只是单类的;而分类的训练集应该是比较均衡的
2)交叉验证时,classification accuracy对离群点检测不适用,原因也是因为数据集的不平衡
3)离群点可以有好多种,也就是说,无法确定离群点的具体类别,只能确定某点不是主流的点而已;而分类可以确定每个点的具体类别
常用基于密度的检测方法,利用高斯分布公式,当一个点x的概率p(x) < ε时,此点被标记为离群点。
假设点x有n个特征:x(1) x(2) ... x(n),则p(x) = p(x(1)) * p(x(2)) * ... p(x(n))
步骤:1)选择对离群点有代表性的特征x(i) 2)计算相应的特征均值和方差 3)计算p(x)