《机器学习-吴恩达》课程笔记Week6

目录

Advice for Applying Machine Learning

Evaluating a Learning Algorithm

Evaluating a Hypothesis

Model Selection and Train/Validation/Test Sets

Bias vs. Variance

Diagnosing Bias vs. Variance

Regularization and Bias/Variance

Deciding What to do Next Revisited

Machine Learning System Design

Building a Spam Classifier

Prioritizing What to Work On

Error Analysis

Handling Skewed Data

Error Metrics for Skewed Classes

Trading Off Precision and Recall

Using Large Data Sets

Data For Machine Learning

ex-5

实验过程

疑问


Advice for Applying Machine Learning

Evaluating a Learning Algorithm

Evaluating a Hypothesis

如果一个ML system表现得比较差,常见的优化方法有:

  • 获得更多的训练集数据
  • 使用少一点的features
  • 增加新的的features
  • 根据现有的features做多项式组合
  • 增大或减少bias项的λ

但是我们如何知道哪些方法对现在的system是生效的,哪些是无效的呢?这需要根据具体的情况进行分析。

Model Selection and Train/Validation/Test Sets

在实际问题中不会像Kaggle那样提供test数据集,往往是有一个整的data samples,然后我们对数据进行划分,来训练、选择和评估模型。

如果我们只划分为两个集合,训练集和测试集,然后选训练集中误差最小的,我们可能并不能公平正确的对模型进行评价,因为我们挑选的可能是对训练集过拟合的预测模型。这里引入了validation集,一般来说数据划分的比例为:

  • Training set: 60%

  • Cross validation set: 20%

  • Test set: 20%

三个集合的作用分别为:

  1. training set:对不同的多项式设计,得到不同的预测权重θ

  2. cross validation set:根据1中的θ对cv集处理,计算误差后得到使误差最小最佳的多项式维度d

  3. test set:把它们看做新得到的之前未知的数据,对2中得到的具体θ进行评价 

Bias vs. Variance

Diagnosing Bias vs. Variance

High bias(underfitting):具体表现为数据量小时train的cost低,cv的值高,当数据达到一定规模时,二者接近相等

High variance(overfitting):具体表现为train的cost function值低,cv的高,当数据达到一定规模时,二者仍有明显差距

而我们训练模型的目的,就是找到一个合适的模型复杂程度,把误差降到可接受范围

Regularization and Bias/Variance

合适的正则化有助于解决过拟合or欠拟合问题。如何选择lambda?

  1. 创建一个列表λ∈{0,0.01,0.02,0.04,0.08,0.16,0.32,0.64,1.28,2.56,5.12,10.24}
  2. 建立一组模型,包含多个不同的维度或变量的组合
  3. 对所有的模型遍历λ,并计算损失函数Θ
  4. 用cv对得到的Θ进行测试(注意此时损失函数中的λ=0,这里是做评价而非梯度下降minimize)
  5. 选择cv上表现最佳的Θ并将其应用于测试集
  6. 看问题是否有好的泛化解决

Deciding What to do Next Revisited

fixes high variance:

  • 更多训练集
  • 更少的features
  • 增大λ

fixes high bias:

  • 增加features
  • 新增features的多项式组合
  • 减少λ

对于神经网络有:

  • 参数少容易欠拟合,但是计算消耗小
  • 参数多的容易过拟合,但是计算成本高。可以正则化来减弱过拟合
  • 使用单个隐藏层作为启动,然后用cv验证不同隐藏层的效果,选择性能最佳的

Machine Learning System Design

Building a Spam Classifier

Prioritizing What to Work On

给定一个数据集,我们可以为每封电子邮件构建一个向量作为x。 此向量中的每个条目代表一个单词。 该向量通常包含 10,000 到 50,000 个条目,是通过在数据集中查找最常用的单词而收集的。 那么怎么提高准确性呢?

  • 收集大量数据
  • 开发复杂的功能(例如:使用邮件标题数据)
  • 算法以不同方式处理输入(识别垃圾邮件中的拼写错误)

 很难说哪个选项最有帮助。

Error Analysis

解决机器学习问题的推荐方法是:

  • 从一个简单的算法开始,快速实施它,并在cv data上尽早对其进行测试。
  • 绘制学习曲线以确定更多数据、更多特征等是否有帮助。
  • 手动检查cv data中label预测出错的数据,并尝试找出大多数错误发生的趋势,找到可以用来取分它们和一般数据的features

Handling Skewed Data

Error Metrics for Skewed Classes

在supervised learning中,如果某个label占的比例超过正常值(例如,假设cancer检测中99%的samples是良性,只有1%是恶性),模型可能倾向于恒定判断结果y为某label,因为这确实能让误差值变得很小。像这样的数据就是skewed data。

这里引入一种正确预测占比的方式作为评估,定义如下:

可以分为 true positive、false positive、true negative、false negative。positive/negative为预测值,true/false为实际值与预测值是否相等。

Precision = True pos / (True pos + False pos)

Recall = True pos / (True pos + False neg)

Trading Off Precision and Recall

之前的logistic regression中,默认概率以0.5为分界点来标志0/1,但在遇到skewed data时,可以根据实际需要来定义threshhold

 

 可以看到,cancer问题中,想要尽可能精准的判断出恶性癌,就需要threshold越大。反之想要避免漏判,threshold越小。

可以用F1作为自动判最优的指标来调节threshold

 

Using Large Data Sets

Data For Machine Learning

在生产环境下,使用哪种算法带来的准确率提升差异不大,而数据量差异带来的准确率提升很大:

原因在于,当模型的features非常多时,此时是low bias的,能够使训练集的cost function值偏小。而在拥有很多training data时,使train和test的cost function不断接近,于是test的cost func值也偏小。拥有多features和大data set的模型往往会表现的很好,是low bias同时又low variance的。

一般来说,可以先人工分析一下,当前的features如果手工判定,能否得到一个较好的预测结果,以此为根据看features是否充足。然后再尽可能多的扩充data set。

ex-5

这次的实验比较简单,给的data X初始只有一个features,y也是一维。总结一下从可视化到拟合。

实验过程

1. 数据load后可视化,画出X和y的图像

2. 选择一个简单的模型做预测

3. 让数据量从小到大变化,画出train和cv的Learning Curve,看当前模型有哪些问题

如图,明显为high bias

4. 做了映射,把当前数据X组合了多个多项式,再正则化

5. 4中新数据集再加上bias项,重新预测,bias的lambda取数组,看结果选表现最好的

疑问

1. 之后在kaggle上训练时,如何把具有大量features的高维数据做可视化并分析?

2. 好像ex5给的有个画图函数有问题(tbc)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值