/ Machine Learning

总结3-机器学习优化

1. 评估学习算法

1.1. 将训练集分类

60% Training Set 训练集

20% Cross-Validation Set 交叉验证集(CV)

20% Test Set 测试集

1.2. 评估

回归问题:用 $J(\theta)$ 来计算误差。

分类问题:使用误分类率来评估。误分类率=错误分类数量/总分类数量。

1.3. 常用解决办法

每项至少6个月(调整λ时间稍短)

  • 获取更多样本
  • 减少特征
  • 增加特征
  • 尝试多项式,d为多项式次方数3.--error
  • 增加λ
  • 减少λ

1.4. 选取最优

  • 调整一个参数,使用Training Set计算 θ
  • 使用 θ 计算对应的 $J_{CV}(\theta)$
  • 选取 $J_{CV}(\theta)$ 最小值对应的参数θ
  • 使用参数θ 计算 $J_{Test}(\theta)$ 的泛化误差。

2. 偏差和方差(Bias vs. Variance)

  • High Bias (underfit) 高偏差(欠拟合): $J_{Train}(\theta)$ 和 $J_{CV}(\theta)$ 都较高,且 $J_{Train}(\theta) \approx J_{CV}(\theta)$ 。

  • High Variance (overfit) 高方差(过拟合): $J_{Train}(\theta)$ 较低, $J_{CV}(\theta)$ 较高,且 $J_{Train}(\theta) \ll J_{CV}(\theta)$ 。

2.1. degree of polynomial的影响

3.d-error

2.2. λ的影响

3.--error-2

$$ \begin {split} J\left( \theta \right) &=\dfrac {1} {2m}\sum _{i=1}^{m}\left( h_{\theta} \left( x^{\left( i\right)}\right) -y^{\left( i\right)}\right) ^{2}+\dfrac {\lambda} {2m} \sum _{j=1}^{n}\theta _{j}^{2}\\ J_{Train}\left( \theta \right) &=\dfrac {1} {2m}\sum _{i=1}^{m}\left( h_{\theta} \left( x^{\left( i\right)}\right) -y^{\left( i\right)}\right) ^{2}\\ J_{CV}\left( \theta \right) &=\dfrac {1} {2m_{CV}}\sum _{i=1}^{m_{CV}}\left( h_{\theta} \left( x_{CV}^{\left( i\right)}\right) -y_{CV}^{\left( i\right)}\right) ^{2}\\ J_{Test}\left( \theta \right) &=\dfrac {1} {2m_{Test}}\sum _{i=1}^{m_{Test}}\left( h_{\theta} \left( x_{Test}^{\left( i\right)}\right) -y_{Test}^{\left( i\right)}\right) ^{2}\\ \end {split} $$
这里的 $J_{Train}( \theta) ,J_{CV}(\theta) ,J_{Test}( \theta) $ 均无需计算正则公式。

2.3. 多项式的影响

  • 低阶多项式:具有High Bias和Low Variance。易欠拟合。
  • 高阶多项式:具有Low Bias和High Variance。易过拟合。
  • 需要在这两者之间确定选择模型,才能更好的适应数据。

2.4. 选择合适的多项式、λ值、θ值

  • 创建λ列表(i.e. [0, 0.01, 0.02, 0.04, 0.08, 0.16, ..., 10.24])。
  • 创建不同次方或更多组合的多项式模型。
  • 通过λs的迭代,用全部的λ来计算对应的θ。
  • 使用 $J_{CV}(\theta)$ 来计算误差。
  • 选取 $J_{CV}(\theta)$ 值最小的最佳组合(多项式,λ,θ )。
  • 使用将最佳组合应用到 $J_{Test}(\theta)$ 上,看其是否有良好的泛化表现。

2.5. 学习曲线(迭代次数的影响)

3.m-error

2.6. 常用解决办法能解决那些问题

  • 获取更多样本 fixed High Variance (overfit) 高方差(过拟合)
  • 减少特征 fixed High Variance (overfit) 高方差(过拟合)
  • 增加特征 fixed High Bias (underfit) 高偏差(欠拟合)
  • 尝试多项式,d为多项式次方数。 fixed High Bias (underfit) 高偏差(欠拟合)
  • 增加λ fixed High Bias (underfit) 高偏差(欠拟合)
  • 减少λ fixed High Variance (overfit) 高方差(过拟合)

2.7. 神经网络中的问题

  • Small Neural Network 【计算量小】易欠拟合
  • Large Neural Network (单层多unit,多层多unit)【计算量大】易过拟合

注1:一般来说Large效果会比Small好,过拟合后克调整λ来修正。

注2:单层和多层,必须自行分析 $J_{Train}( \theta) ,J_{CV}(\theta) $ 来确定哪个效果好。

3. 机器学习系统设计

3.1. 步骤

前期步骤

  • 收集一定量数据
  • 分析数据特征
  • 数据清洗

起步步骤

  • 简单算法,快速实现,尽早使用CV集进行测试。
  • 绘制学习曲线,决定更多的数据和特征是否有效。
  • 手动检查CV集中的错误示例,尝试分析大多数错误趋势,使用数值分析来评估重要性。是否需要进行更高级或针对性的数据清洗。在有新想法时直接通过CV测试来判断是否能减少错误率。

3.2. 处理倾斜数据

3.2.1. 指标

增加两个参考值 Precision查准率 和 Recall召回率。这里y=1的样本为稀少样本!!!

Predicted \ Actual Actual 1 实际为1 Actual 0 实际为0
Predicted 1 预测为1 True Positive 真阳性 False Positive 假阳性
Predicted 0 预测为0 False Negative 假阴性 True Negative 真阴性

查准率 Precision = True Position / (True Positive + False Positive)

召回率 Recall = True Position / (True Positive + False Negative)

这两个值都是越高越高!

3.2.2. 平衡 Precision 和 Recall

3.Precision-Recall

Threshold为判定阈值,$h_{\theta}(x) \geq Threshold$ 则判定为1。之前的示例中都为0.5。

  • 调高Threshold,例如0.7,则表示有更高可信度时才确认,这样使得High Precision和Low Recall。
  • 调低Threshold,例如0.3,则表示有低的漏判率,这样使得Low Precision和High Recall。

更常用的做法是使用F1 Score(F Score)F1值或F值

$$ 2\frac{PR}{P+R} $$
由于$0 \leq P \leq 1$ , $0 \leq R \leq 1$ 所以 $0 \leq F \leq 1$ ,这里F越大越好。

另:Threshold=0.5时,可表述为置信度50%。Threshold=0.7时,可表述为置信度70%。

3.3. 大数据集

!!!大数据集 只对 足够多的特征 才有效!!!