文章目录
【零】 出现过拟合的原因
- 训练集的数量级和模型的复杂度不匹配,训练集的数量级小于模型的复杂度
- 训练集和测试集特征分布不一致
- 样本里的噪音数据干扰过大,大到模型过分记住了噪音特征,反而忽略了真实的输入输出间的关系
- 权值学习迭代次数太多(Overtraining),拟合了训练数据中的噪声和训练样例中没有代表性的特征
【一】 Reduce Complexity(降低模型复杂度)
- 缩小宽度,减小深度
【二】 Data Augmentation(数据增强)
- CV 中常见的有,图像旋转,缩放,剪切,添加噪声
【三】 L1-Norm(L1 正则化)
- 公式定义(P=1)
∥ x ∥ p : = ( ∑ i = 1 n ∣ x i ∣ p ) 1 / p \| x \| _ { p } := ( \sum _ { i = 1 } ^ { n } | x _ { i } | ^ { p } ) ^ { 1 / p } ∥x∥p:=(i=1∑n∣xi∣p)1/p
- 著名的 LASSO Regression(常使用 Coordinate Descent 纬度下降法求解)
L = ∏ i = 1 n ∥ w T x − y ∥ F 2 + λ ∥ w ∥ 1 L= \prod _ { i = 1 } ^ { n } \| w^Tx - y \| _ { F } ^ { 2 } + \bm \red {\lambda \| { w } \| _ { 1 } } L=i=1∏n∥wTx−y∥F2+λ∥w∥1
- 求导,发现在梯度更新时,不管 L1 的大小是多少(只要不是0)梯度都是1或者-1,所以每次更新时,它都是稳步向0前进
- 稀疏性(解释1):L1 正则的话基本上经过一定步数后很可能变为0,而 L2 几乎不可能,因为在值小的时候其梯度也会变小。于是也就造成了 L1 输出稀疏的特性。
- 稀疏性(解释2):施加 L1 regularization 时,只要 regularization 项的系数 λ 大于原先函数在 0 点处的导数的绝对值,x = 0 就会变成一个极小值点。
- 稀疏性(解释3):等高线几何思维
【四】 L2-Norm(L2 正则化)
- 公式定义(P=2)
∥ x ∥ p : = ( ∑ i = 1 n ∣ x i ∣ p ) 1 / p \| x \| _ { p } := ( \sum _ { i = 1 } ^ { n } | x _ { i } | ^ { p } ) ^ { 1 / p } ∥x∥p:=(i=1∑n∣xi∣p)1/p
- 著名的 Ridge Regression
L = ∏ i = 1 n ∥ w T x − y ∥ F 2 + λ ∥ w ∥ 2 2 L= \prod _ { i = 1 } ^ { n } \| w^Tx - y \| _ { F } ^ { 2 } + \bm \red {\lambda \| { w } \| _ { 2 } ^ { 2 }} L=i=1∏n∥wTx−y∥F2+λ∥w∥22
- 求导,发现越靠近 0,L2 的梯度就变得越小
【五】 L1-Norm + L2-Norm(Elasting Net)
f
(
θ
)
+
λ
1
∗
L
1
+
λ
2
∗
L
2
f (θ) + λ_1 * L_1 + λ_2 * L_2
f(θ)+λ1∗L1+λ2∗L2
【六】 Decision Tree Pruning(决策树剪枝)
- Reduced-Error Pruning(REP,错误率降低剪枝)
搞一个测试数据集 来纠正过拟合。
对于完全决策树中的每一个非叶子节点的子树,尝试着把它 替换 成一个叶子节点,该叶子节点的类别用子树所覆盖训练样本中存在最多的那个类来代替,这样就产生了一个简化决策树,然后 比较 这两个决策树在测试数据集中的表现。
如果简化决策树在测试数据集中的 错误 比较少,那么该子树就可以替换成叶子节点。
该算法以 bottom-up 的方式遍历所有的子树,直至没有任何子树可以替换使得测试数据集的表现得以改进时,算法就可以终止。
- Pessimistic Error Pruning(PEP,悲观剪枝)- C4.5 算法中提出
把一颗子树(具有多个叶子节点)用一个叶子节点来替代(我研究了很多文章貌似就是用子树的 根 来代替)的话,比起REP剪枝法,它不需要一个单独的测试数据集。
【七】 SVM松弛变量 (个别点线性不可分)
- 图解
- 引入松弛变量 ξ 后的限制条件
【八】 Dropout(随机丢弃神经元)
- 训练过程中,随机丢弃部分神经元,提升模型的泛化能力
a ( k ) ( x ) = w ( k ) ⋅ h ( k − 1 ) ( x ) + b ( k ) a ^ { ( k ) } ( x ) = w ^ { ( k ) } \cdot h ^ { ( k - 1 ) } { ( x ) } + b ^ { ( k ) } a(k)(x)=w(k)⋅h(k−1)(x)+b(k)
h ( k ) ( x ) = g ( a ( k ) ( x ) ) ⊙ m ( k ) s . t m ( k ) = [ 0 , 1 , 0 , 0 , 1 , . . . ] h ^ { ( k ) } ( x ) = g ( a ^ { ( k ) } ( x ) ) \odot \bm \red {m ^ { ( k ) }} \;\;\;\; s.t \;\; \bm \red {m ^ { ( k ) }} = [\; 0, 1, 0, 0, 1, ... \;] h(k)(x)=g(a(k)(x))⊙m(k)s.tm(k)=[0,1,0,0,1,...]
m i ( k ) ∼ B e r n o u l l i ( 1 − p ) \bm \red {m _ { i } ^ { ( k ) }} \sim Bernoulli( 1 - p ) mi(k)∼Bernoulli(1−p)
【九】 EarlyStopping(早停止)
- 训练过程中,验证集(Validation Dataset)精度不再上升,则停止训练
- 模型复杂度越高,训练数据的 acc 和验证数据的 acc 的差值(称为 gap)会越大
【十】 Boosting Learning(集成学习)
- 平均多个模型结果