1 什么是模型?
模型就是针对存在于不同变量之间的数学或概率联系的一种规范(函数关系、统计关系)。
2 什么是机器学习?
机器学习是指创建并使用那些由学习数据而得出的模型。也叫做预测模型或数据挖掘。
一般来说,机器学习的目标是利用已有的数据来开发可以用来对新数据预测多种可能结果的模型。比如:
预测一封邮件是否是垃圾邮件
预测一笔信用卡交易是否是欺诈行为
预测哪种广告最有可能被购物者点击
3 特征提取和选择
选择特征需要经验和专业知识的积累。如果你基于一个人的工作年限来预测薪水,那么工作年限就是你的特征(feature)。
设想你要建立一个垃圾邮件过滤器来预测一封邮件是否是垃圾邮件。你提取了如下特征:
邮件文本中包含“伟哥”
单字“买”出现了多少次
发件人的域名是什么
第一个特征是是否问题,通常编码为0或1。第二个特征是数值。第三个特征是从一个离散的选择集中作出的选择。
特征的类型限制了我们所用的模型的类型。朴素贝叶斯分类器适合是与否的二元特征;回归模型要求有数值型的特征,当然也可以包含0或1这样的虚拟编码变量,如性别;决策树会涉及数值或属性数据。
有时,我们需要设法移除特征。比如,模型的输入可能包含很多变量,这时你会用到降维技术来将这些变量缩减到少量重要的维度,从而只使用少数的特征,或者使用一些技术如正则化技术来对应用过多特征的模型进行惩罚。
4 过拟合和欠拟合
过拟合(overfit)是指在训练数据上表现良好,但对新数据的泛化能力却很差的模型。太复杂的模型会导致过拟合。
欠拟合(underfoot)是指在训练数据上没有好的表现,这表明你的模型不够好,需要继续寻找更好的模型。
一般来说,只有常数项(水平线,0阶,1个参数)的模型对训练数据来说会存在严重的欠拟合;而过于复杂的模型(例如阶数为9、10个参数的多项式)精确穿过训练数据的每个点,是严重过拟合的,如果取到更多的点,这个多项式很可能会偏离很多;拟合良好的模型能够很好地把握平衡,它和训练集的每个点都很接近,并且也会和新的数据点很接近。
如何确保我们的模型不会太复杂?最基本的方法是使用不同的数据集来训练和测试模型,例如三分之二用来训练模型,三分之一用来衡量模型的表现。
5 正确性
如果一个模型的准确率超过了98%,那么这个模型是好还是坏呢?
先别急着回答。假设我们要预测一封邮件是否是垃圾邮件,那么会有四种情况:
垃圾邮件 | 非垃圾邮件 | |
---|---|---|
预测是垃圾邮件 | 真阳性(tp) 是垃圾邮件,我们做了正确的预测 |
假阳性(fp)-第1类错误 不是垃圾邮件,我们预测错了 |
预测是非垃圾邮件 | 假阴性(fn)-第2类错误 是垃圾邮件,但我们预测它不是 |
真阴性(tn) 不是垃圾邮件,我们也预测对了 |
这个矩阵也被称为混淆矩阵(confusion matrix)。
如今,大约每1000名婴儿中有5个人会取名Luke;每人一生中患白血病的概念大概是1.4%,即1000个人中会有14个人得白血病。假设两个因素是独立的,运行“Luke是白血病患者”测试(即仅当婴儿起名为Luke时预测会得白血病),得到以下的矩阵:
白血病 | 非白血病 | 总计 | |
---|---|---|---|
Luke | 70 | 4930 | 5000 |
非Luke | 13930 | 981070 | 995000 |
总计 | 14000 | 986000 | 1000000 |
那么正确预测的比例就是accuracy=(tp+tn)/(tp+fp+fn+tn)=0.98114。这是一个很蠢的测试,但准确率高达98%。
查准率(precision)度量模型所做的关于阳性的预测有多准确:
precision=tp/(tp+fp)=0.014
查全率(recall)度量模型所识别的阳性的比例:
recall=tp/(tp+fn)=0.005
如果两个指标都很低,那就不是一个好的模型。
F1 score是查准率与查全率的调和平均值:
F1 score=2precisionrecall/(precision+recall)
为了更为直观地理解查准率和查全率的概念,摘取维基百科的两个例子:
假设某个计算机程序在视频中识别出7只狗,这个视频实际包含9只狗和一些猫。程序认为的7只狗中有4只确实是狗,但3只其实是猫,那么程序的查准率就是4/7,查全率则是4/9。
假设某个搜索引擎返回了30页结果,但只有20页是相关的,还有40页的相关内容没有返回。那么这个搜索引擎的查准率就是20/30=2/3,查全率就是20/60=1/3。查准率反映搜索结果是否有用,查全率反映搜索结果是否完整。
简单来讲,高的查准率意味着算法返回了更多的相关结果而不是不相关结果,高的查全率意味着算法返回了大部分的相关结果。
模型的选择通常是查准率和查全率之间的权衡。一个模型如果在信心不足的情况下预测“是”,那它的查准率低,但查全率可能会较高;而如果一个模型在信心十足的情况下预测“是”,那它的查准率高,但查全率可能会较低。例如,假设有10个风险因素预测一个人患抑郁症,你具备的风险因素越多,越容易患上抑郁症。假设进行一系列测试:“至少有一个风险因素预测会得抑郁症”、“至少有两个风险因素预测会的抑郁症”等等。随着临界值不断提高,测试的查准率提高了(因为风险因素越多,越容易患上抑郁症),但测试的查全率则下降了(因为具备越多风险因素的人会越来越少)。选择合适的临界值实际上就是做出正确的权衡。
你也可以把模型选择当作假阳性和假阴性之间的权衡。预测“是”太多通常会得到很多假阳性,预测“否”太多通常会得出很多的假阴性。
6 偏差-方差权衡(bias-variance tradeoff)
思考模型选择问题的另一个角度是偏差-方差权衡。
这里有一张图可以直观地理解偏差(有时也称为偏倚)和方差之间的区别:
红色的靶心区域是我们试图预测其真值的随机变量,整个区域代表这个变量的分布。每次我们抽取一个样本来预测这个变量,这些样本用蓝色的点表示。如果蓝色的点落在红色区域,代表预测正确。也就是说,偏差度量的是预测的蓝点与真实的红色区域之间的距离,这是模型的误差(error);而方差(variance)则是指预测的蓝点的疏密程度。
偏差-方差权衡是什么呢?
要减少模型的偏差或误差,就要增加特征,模型的复杂度提高,但它的方差就会变大(预测值的蓝点变的稀疏);而要减少模型的方差,移除特征,降低模型复杂度,偏差又会增大。那么,就存在一个最优的模型复杂度(optimum model complexity),使得方差和偏差的大小都是可以接受的。这就是偏差-方差权衡。
再比如:
你有一份两个维度的数据:某所中学所有学生的身高和体重数据,表现为横纵坐标轴上的散点。
假设你用一条水平线去拟合这些点,直线上的点代表你的预测值,它的方差为0,但偏差却很大,即它并没有很好地拟合真实数据点,模型是欠拟合的。
于是你用一个高阶的多项式样条函数(polynomial spline)去拟合数据,但你对拟合优度并不满意,于是提高阶数,模型拟合优度提高。这时,模型的偏差就是在不断接近0,但方差却不断增大。
如果你的模型有高方差,除了移除特征外,你也可以获取更多的数据。基于10个点拟合的模型过拟合问题严重,而如果在100个数据点上训练,就会大大减少过拟合问题。也就是说,在模型复杂度不变的情况下,数据越多,越难过拟合。
但数据越多并不会对模型的偏差有什么帮助。
深入学习:
课程:
https://www.coursera.org/lear...
http://work.caltech.edu/telec...
教材:
http://statweb.stanford.edu/~...
参考资料:
《数据科学入门》[美]Joel Grus
https://en.wikipedia.org/wiki...
http://stats.stackexchange.co...
http://scott.fortmann-roe.com...
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。