Stanford机器学习---第七讲 机器学习系统设计

Stanford机器学习---第七讲. 机器学习系统设计 本栏目(Machine learning)包括单参数的线性回归、多参数的线性回归、Octave Tutorial、Logistic Regression、Regularization、神经网络、机器学习系统设计、SVM(Support Vector Machines 支持向量机)、聚类、降维、异常检测、大规模机器学习等章节。所有内容均来自Standford公开课machine learning 阅读详情

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.youkuaiyun.com/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               

本栏目(Machine learning)包括单参数的线性回归、多参数的线性回归、Octave Tutorial、Logistic Regression、Regularization、神经网络、机器学习系统设计、SVM(Support Vector Machines 支持向量机)、聚类、降维、异常检测、大规模机器学习等章节。所有内容均来自Standford公开课machine learning中Andrew老师的讲解。(https://class.coursera.org/ml/class/index)


第七讲. 机器学习系统设计——Machine learning System Design

===============================

(一)、决定基本策略

(二)、Error分析

☆(三)、对Skewed Classes建立Error Metrics

☆(四)、在Precision 和 Recall (精度和召回率)间权衡

(五)、机器学习数据选定



===============================

(一)、决定基本策略


在本章中,我们用一个实际例子<怎样进行垃圾邮件Spam的分类>来描述机器学习系统设计方法。

首先我们来看两封邮件,左边是一封垃圾邮件Spam,右边是一封非垃圾邮件Non-Spam:


观察其样式可以发现,垃圾邮件有很多features,那么我们想要建立一个Spam分类器,就要进行有监督学习,将Spam的features提取出来,而希望这些features能够很好的区分Spam vs. Non-Spam.

就如下图所示,我们提取出来deal, buy, discount, now等feature,建立起这样的一个feature向量:


这里请大家注意:事实上,对于spam分类器,我们并非人工选择100个看似是spam feature的feature作为特征,而是选取spam中词频最高的100个词取而代之。

下面就是本节重点——如何决定基本策略,一些可能有利于classifier工作的方法:

  • 收集大量数据——如“honeypot" project
  • 从Email Route着手建立较为复杂的feature——如发件人为cheapbuying@bug.com
  • 对message正文建立复杂精确的feature库——如是否应把discount和discounts视作同一个词等
  • 建立算法检查拼写错误,作为feature——如"med1cine"

当然,上述策略并非全部奏效,如下面的练习题所示:




===============================

(二)、Error分析

我们常常在一个ML算法设计的起步阶段有些困惑,要用怎样的系统?建立怎样的模型,feature怎样提取等……

这里呢,我们给大家推荐一个方法,用来建立一个ML系统:

  • 用at most 一天,24小时的时间实现一个简单的算法,logistic regression也好,linear regression也好,用simple features而非仔细探究哪个特征更有效。然后呢,在cross-validation数据集上进行测试;
  • 利用画learning curves的方法去探究,数据集更多 或者 加入更多features 是否有利于系统工作;
  • Error Analysis:上面已经在cross-validation数据集上测试了系统性能,现在呢,我们人工去看是哪些数据造成了大error的产生?是否可以通过改变systematic trend减少error?

还是用Spam-Classifier举例,我们看一下进行Error Analysis的步骤:

  • 在建立了simple system 并在CV set上做测试后,我们进行error analysis步骤,将所有spam分为pharma,replica/fake,Steal password 和 其他,这四类。
  • 找到一些可能有助于改善分类效果的features。
如下图所示:


这里呢,我们不要感性地去想,而是最好用数字体现效果。比如对于discount/discounts/discounted/discounting是否被视为都含有discount这个feature的问题,我们不要主观地去想,而是看如果看都含有这个feature,那么结果是有3%的error,如果不都看做有discount这个feature,则有5%的error,由此可见哪种方法比较好。

PS:介绍一个软件Porter stemmer,可以google到,是将discount/discounts/discounted/discounting视为同类的软件。

对于是否将大小写视作同一个feature是同样的道理。





===============================

(三)、对Skewed Classes建立Error Metrics

有些情况下,Classification-accuracy 和 Classification-error不能描述出整个系统的优劣,比如针对下面的Skewed Classes。

什么是Skewed Classes呢?一个分类问题,如果结果仅有两类y=0和y=1,而且其中一类样本非常多,另一类非常少,我们称这种分类问题中的类为Skewed Classes. 

比如下面这个问题:

我们用一个logistic regression作为预测samples是否为cancer患者的模型。该模型在cross-validation set上测试的结果显示,有1%的error,99%的正确诊断率。而事实上呢,只有0.5%的样本为真正的cancer患者。这样一来,我们建立另一个算法去predict:

function y=predictCancer(x)

          y=0; %即忽略x中feature的影响

return;

好了,这么一来,该算法将所有sample预测为非癌症患者。那么只存在0.5%的误差,单纯从classification-error来看,比我们之前做的logistic regression要强,可事实上我们清楚这种cheat方法只是trick,不能用作实际使用。因此,我们引入了Error Metrics这个概念。

考虑一个二分问题,即将实例分成正类(positive)或负类(negative)。对一个二分问题来说,会出现四种情况。如果一个实例是正类并且也被 预测成正类,即为真正类(True positive),如果实例是负类被预测成正类,称之为假正类(False positive)。相应地,如果实例是负类被预测成负类,称之为真负类(True negative),正类被预测成负类则为假负类(false negative)。

TP:正确肯定的数目;
FN:漏报,没有正确找到的匹配的数目;
FP:误报,给出的匹配是不正确的;
TN:正确拒绝的非匹配对数;

这样就可以建立一个Error Metrics(下图左),并定义precision和recall,如下图所示:


也可参考我原来关于ROC曲线的文章。

precision:正确预测正样本/我所有预测为正样本的;

recall:正确预测正样本/真实值为正样本的;

当且仅当Precision和Recall都高的时候我们可以确信,该predict算法work well !

ok, 我们再来看看当初将所有sample预测为Non-Cancer的算法,这里,TP=0,FP=0, FN=1, TN=199(假设sample共200个)


由于TP=0, 所以precision=recall=0!证明了该算法的un-avaliable!

所以,无论一个类是否是Skewed Classes,只要满足precision 和 recall都很高才可以保证该算法的实用性。

练习题,做下看:


最后需要提醒大家的是,关于哪边作为true,哪边作为false的问题。对于上面那个问题,我们给定cancer的为true,实际应用中,我们应当在binary classification中指定类中sample较少的那一类作为true,另一类作为false。这一点千万不能搞错!




===============================

(四)、在Precision 和 Recall (精度和召回率)间权衡


上一小节中给出了precision和recall的definition,这一节中,我们通过画出precision-recall之间的变化关系在两者间进行一个trade-off.

对于一个prediction问题,假设我们采用如下方法进行预测:


这里存在一个threshold=0.5。

根据


不同的threshold有如下两类情况:

  • 如果我们希望在很确信的情况下才告诉病人有cancer,也就是说不要给病人太多惊吓,我告诉你有cancer,你肯定有cancer;我告诉你没cancer,你也有可能有cancer,那么该情况下有:higher threshold,higher precision,lower recall
  • 如果我们不希望让病人错过提前治疗,与上例相反,就有:lower threshold,lower precision,higher recall

这里大家如果想不清楚可以把error metrics画出来看一下。

那么我们可以画出来precision-recall图:


不同的数据,其曲线形式不同,但有一条规律是不变的:

thres高对应高precision低recall;

thres低对应低precision高recall;

☆那么在不同算法或不同threshold造成的的{precision,recall}间,我们怎样选择那个算法比较好呢?

加入我们现在有三个算法(或threshold)的数据:


可见,Algorithm3中,recall=1,即predict所有y=1,这显然违背了我们的初衷。下面看评判标准。用p表示precision,r表示recall;

如果我们选取评判标准=(p+r)/2,则algorithm3胜出,显然不合理。这里我们介绍一个评价标准:F1-Score.


当p=0 或 r=0时,有f=0;

当p=1&&r=1时,有f=1,最大;

同样我们将f1 score 应用于以上三个算法,可的结果,algorithm1最大,也就是最好;algorithm3最小,也就是最差。因此我们用F1 score来衡量一个算法的性能,也就是我们说的precision和recall间的trade-off。


练习,做下吧~(这道略弱):





===============================

(五)、机器学习数据选定


对于机器学习,我们可以选择很多不同的algorithems进行prediction,如:


可见,随着training set的上升,accuracy一般会得到提高,但事实上也不全是这样。

比如房价预测,如果我仅仅给你房子的面积,而没有房子在市中心还是偏远地区?房龄多少?等信息,我们是无法进行良好预测的。

这里就涉及到如何合理处理训练数据及的问题。

记得上一讲中我们已经介绍过了bias和variance的定义和区别,这里我们来看,他们的产生环境:

bias:J(train)大,J(cv)大,J(train)≈J(cv),bias产生于d小,underfit阶段;

variance:J(train)小,J(cv)大,J(train)<<J(cv),variance产生于d大,overfit阶段;


  • 想要保证bias小,就要保证有足够多的feature,即linear/logistics regression中有很多parameters,neuron networks中应该有很多hidden layer neurons.
  • 想要保证variance小,就要保证不产生overfit,那么就需要很多data set。这里需要J(train)和J(CV)都很小,才能使J(test)相对小。

如下图所示:




综上所述,对数据及进行rational分析的结果是两条:

首先,x中有足够多的feature,以得到low bias;

其次,有足够大的training set,以得到low variance;

练习题:





==============================================

本章重要,讲述了机器学习中如何设计机器学习系统,涉及机器学习方法、策略、算法的问题,希望大家牢牢掌握,以减少不必要的时间浪费。



关于Machine Learning更多的学习资料将继续更新,敬请关注本博客和新浪微博Sophia_qing。



           

给我老师的人工智能教程打call!http://blog.youkuaiyun.com/jiangjunshow
这里写图片描述
全志DRM框架下LVDS双屏异显配置实战 本文详细介绍了在全志DRM框架下配置LVDS双屏异显的实战经验。涵盖硬件连接、内核配置、设备树修改、背光控制及U-Boot适配等关键步骤,重点解析屏参转换技巧与双屏route配置,帮助开发者解决工业控制台等多屏应用中的显示适配问题,提升开发效率。 阅读详情

相关推荐

USRP X410 MPM版本与主机UHD版本不匹配问题记录与解决

至此大功告成!之前安装软件的坑算是填起来了,再次记录一下,希望能帮到有同样问题的小伙伴~

yanzuwu233的博客 1436

机器学习系统的设计(Machine Learning System Design)

假设特征值有足够的信息来预测𝑦值,假设我们使用一种需要大量参数的学习算法,比如有很多特征的逻辑回归或线性回归,或者用带有许多隐藏单元的神经网络,那又是另外一种带有很多参数的学习算法,这些都是非常强大的学习算法,它们有很多参数,这些参数可以拟合非常复杂的函数,因此我要调用这些,我将把这些算法想象成低偏差算法,因为我们能够拟合非常复杂的函数,而且因为我。于是他们把诸如这样的机器学习问题,当做一类监督学习问题,并尝试将其分类,什么样的词,在一个英文句子特定的位置,才是合适的。也就是说训练误差有希望接近测试误差。

qq_45742413的博客 1695

晶圆测试(Wafer Sort)的核心技术与良率提升策略

晶圆测试(Wafer Sort)是芯片制造中的关键“入学考试”,通过探针台与自动测试设备(ATE)对晶圆上的芯片进行功能与参数测试,筛选不合格芯片以控制成本。本文深入解析了其核心技术,包括自动化视觉系统对准、测试流程优化策略,并探讨如何利用测试数据驱动良率提升,展望了DFT与AI智能测试的未来趋势。

e4f5g6h的博客 519

机器学习教程之8-机器学习系统的设计(Machine Learning System Design)

0.概述 --- 当数据有**类偏斜**的现象时,**查准率**和**查全率**能更准确的判断算法效果的好坏。

把你挖出来的博客 790

一个固定翼飞机仿真程序带你系统性上手如何实现配平(工具箱+脚本)

老规矩,该博客所用的模型和脚本已上传至百度网盘,名字为“固定翼配平训练例子”,自己自取。

zouxu634866的博客 2570

lstm如何输入多维序列_深度学习也可以做时间序列异常诊断

最近在看的一篇论文里,用到了GRU、VAE等技术来做多维时间序列异常诊断。那么今天首先来聊一聊深度学习的基础知识,然后简单说一下论文。以下基础知识部分的内容,主要来源于李宏毅老师的课程。有兴趣的可以去看李老师的课程哦https://www.bilibili.com/video/BV1JE411g7XF?p=1 1、GRU(Gate Recurrent Unit):GRU是循环神经网络(Recurr...

weixin_30899789的博客 2833

数据正态分布化 + 基于回归算法的房价预测(含python代码)

数据正态分布化 + 基于回归算法的房价预测(含python代码和数据集)

weixin_50706330的博客 5631

产品经理-面试题目--持续更新

答:面试官,你好,我叫XXX,来自于XXXX,我系统的学习过软件开发,也主动的积累了不少产品方面的实战经验,在学习期间,我自己独立的完成了2个深度项目,一个是仿抖音的短视频APP全流程设计,另外一个是电商后台系统的模块,通过这些项目,我不仅熟练使用Axure等工具做出高保真原型图和清晰的产品框架,也形成了数据驱动和用户优先的思维习惯,另外,我也注重拓展自己的能力边界,拿到了CAIE人工智能证书,我希望能把AI能力融入到产品场景,提升体验和效率,我非常喜欢产品工作带来的创造性和逻辑性,希望有机会加入贵公司。

m0_63966958的博客 957

翻译:理解特征工程(1)-连续数值数据

理解特征工程Part1-连续数值数据,读英文原文,用中文记录一些关键点,让自己理解更深刻。 总述 典型的机器学习pipeline 端到端的机器学习pipeline如下 获取原始数据(raw data)并且在这些数据之上直接构建模型(models)是鲁莽的因为我们不会拿到想要的结果或者表现,并且算法也不足够只能来自动从原始数据中提取有意义的特征(features)。 这里主要关注的是上图中的dat...

星辰大海,脚踏实地 2539

用UltraISO制作镜像以RAW格式刻录系统到U盘后,在Windows上无法识别的解决办法

在这篇文章中,用UltraISO制作镜像后,会使得U盘无法识别!!!那么,如何抹掉U盘的数据,格式化U盘呢?

拥抱具身智能,昇腾Ascend C 2730

开源ISP介绍(1)——开源ISP的Vivado框架搭建

ZYNQ视频图像处理系统,ISP图像处理硬件实现

路漫漫其修远兮,吾将上下而求索 3288
上一篇: Residual Networks 2015 ICCV ImageNet 图像分类Top1
下一篇: Single Image Haze Removal 图像去雾 -CVPR 09 Best Paper
还可以吧有点纯纯的
博客等级 码龄8年 33粉丝 235原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值