吴恩达机器学习笔记12——机器学习系统设计

第12章 机器学习系统设计

一,确定执行的优先级 Prioritizing what to work on : Spam classification example

构造分类器

在实际中的做法是,在训练集中挑选出最常常出现的10000~50000个字作为特征向量。

如果我能把吴恩达的课程上完,有很大一部分要感谢他会鼓励人。

在有限的时间内,让分类器具有高精准度和低错误率:

1,手机大量数据,比如honeypot项目,注册暴露于众的邮箱,来吸引邮件。

2,更复杂的特征量,通过邮件标题来构建复杂特征。将发件人的信息包含其中,垃圾邮件可能会极力掩盖自己的来源,虚假邮件标题,很奇怪的服务器、路径。

3,根据邮件正文来构建更复杂的特征量,比如有些单词是否是一样的。

4,大小写和标点符号造成的单词误频,更复杂的算法来识别误拼。

二,误差分析

拿到一个问题,可以先简单粗暴地建立模型完成一次,

然后画出学习曲线,考虑更多的数据还是更多的特征变量,避免出现过早优化的问题,不要仅凭直觉。

最后进行误差分析,关注交叉验证集,看看被错误分类的信有什么共同特点规律,来看系统存在什么样的问题。

  

对于不同的算法而言,相同样本带来的困扰是相似的,所以可以通过这种方式快速地找到困扰。然后确定算法。

poter stemmer 词干提取软件,存在困境,会把前面几个字母相同但意思不同的词分成同样的。

单一规则的数值评价体系,交叉验证错误率,从数字上看是否起到作用。

三,不对称性分类的误差评估

skewed classes 偏斜类 比如只有0.5%的病人有癌症,而其他的没有,这就会导致训练得到的模型是一个总是预测有癌症的模型。

另一种误差评估度量值,查准率和召回率,precision recall

如果真正得癌症的人基本为0,recall=0。所以虽然偏斜类可以使平均误差接近0,但不能使precision和recall同时非常好。

精确度:预测正确的posi/总共预测的posi,比如预测99个posi里有96个是对的

四,精确度和召回率的权衡

为了避免错误地估计癌症病人的病情,比如只有大于50%才被判断为有可能得癌症,但实际上,大于50%才告诉可能得癌症的话,可能耽误提早治疗,所以要降低阈值。大于30%就通知,提早检查预防。

threshold 临界值

自动选择临界值的方法,F1 score算法

F1趋近于0的都不是想要的结果。

五,机器学习数据

用来训练的数据有多少,不用盲目地开始,而且花大量的时间来收集大量的数据,因为数据只在一些情况下起作用。

但事实证明,在一定条件下,我会在这个视频里讲到这些条件是什么。得到大量的数据并在某种类型的学习算法中进行训练,可以是一种有效的方法来获得一个具有良好性能的学习算法。而这种情况往往出现在这些条件对于你的问题都成立。 并且你能够得到大量数据的情况下。这可以是一个很好的方式来获得非常高性能的学习算法。

数码笔不好用。。。。

在2001年,有人基于区分易混淆的词语,研究了大量的算法。实验发现,有些劣质的算法在相较好算法有更多的数据时,会获得更多细节,从而得到更好的结果。实验影响较大,以至于机器学习领域出现了拥有更多数据的人wins,而不是更好算法。

那么这种说法在什么时候是真,什么时候是假呢?因为如果我们有一个学习算法,并且如果这种说法是真的,那么得到大量的数据通常是保证我们具有一个高性能算法的最佳方式,而不是去争辩应该用什么样的算法。

Because we have a learning algorithm for which this is true then getting a lot of data is often may be the best way to ensure that we have an algorithm with very high performance rather than debating worrying which of these items to use.

couterexample 反例: 仅仅用房子的面积来估计价格,就算对于房产方面的专家而言,特征量是远远不够的,假设不成立。

有效地测试方式,用已有的x,人了专家可以自信准确地估计y吗?可以就够了。

那么让我们来看一看,大量的数据是有帮助的情况。假设特征值有足够的信息来预测y值,假设我们使用一种需要大量参数的学习算法,比如有很多特征的逻辑回归或线性回归,或者用带有许多隐藏单元的神经网络,那又是另外一种带有很多参数的学习算法,这些都是非常强大的学习算法,它们有很多参数,这些参数可以拟合非常复杂的函数,因此我要调用这些,我将把这些算法想象成低偏差算法,因为我们能够拟合非常复杂的函数,而且因为我们有非常强大的学习算法,这些学习算法能够拟合非常复杂的函数。很有可能,如果我们用这些数据运行这些算法,这种算法能很好地拟合训练集,因此,训练误差就会很低了。

现在假设我们使用了非常非常大的训练集,在这种情况下,尽管我们希望有很多参数,但是如果训练集比参数的数量还大,甚至是更多,那么这些算法就不太可能会过度拟合。也就是说训练误差有希望接近测试误差。

另一种考虑这个问题的角度是为了有一个高性能的学习算法,我们希望它不要有高的偏差和方差。

因此偏差问题,我么将通过确保有一个具有很多参数的学习算法来解决,以便我们能够得到一个较低偏差的算法,并且通过用非常大的训练集来保证。

我们在此没有方差问题,我们的算法将没有方差,并且通过将这两个值放在一起,我们最终可以得到一个低误差和低方差的学习算法。这使得我们能够很好地测试测试数据集。从根本上来说,这是一个关键的假设:特征值有足够的信息量,且我们有一类很好的函数,这是为什么能保证低误差的关键所在。它有大量的训练数据集,这能保证得到更多的方差值,因此这给我们提出了一些可能的条件,如果你有大量的数据,而且你训练了一种带有很多参数的学习算法,那么这将会是一个很好的方式,来提供一个高性能的学习算法。

关键的测试:首先,一个人类专家看到了特征值x,能很有信心的预测出y值吗?因为这可以证明y可以根据特征值x被准确地预测出来。其次,我们实际上能得到一组庞大的训练集,并且在这个训练集中训练一个有很多参数的学习算法吗?如果你不能做到这两者,那么更多时候,你需要一个性能很好的学习算法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值