机器学习
1 建模
模型实际上是针对存在于不同变量之间的数学(或概率)联系的一种规范。
2 什么是机器学习
我们使用的定义是创建并使用那些由学习数据而得出的模型。
一般来说,我们的目标是用已存在的数据来开发可用来对新数据预测多种可能结果的模型,比如:
• 预测一封邮件是否是垃圾邮件
• 预测一笔信用卡交易是否是欺诈行为
• 预测哪种广告最有可能被购物者点击
• 预测哪支橄榄球队会赢得超级杯大赛
3 过拟合和欠拟合
在机器学习中,一种常见的困境是过拟合(overfitting)——指一个在训练数据上表现良好,但对任何新数据的泛化能力却很差的模型。
另一种有害的情况是欠拟合(underfitting),它产生的模型甚至在训练数据上都没有好的表现,尽管通常这暗示你模型不够好而要继续寻找改进的模型。
应该把数据划分为三部分:一个用来建立模型的训练集,一个为在训练好的模型上进行选择的验证集,一个用来判断最终的模型的测试集。
4 正确性
假设建立一个模型来做二元的判断,比如:一封邮件是否是垃圾邮件?
• 真阳性:“这封邮件是垃圾邮件,我们做了正确的预测。”
• 假阳性(又称第 1 类错误):“这封邮件不是垃圾邮件,但是我们预测它是垃圾邮件。”
• 假阴性(又称第 2 类错误):“这封邮件是垃圾邮件,但是我们预测它不是垃圾邮件。”
• 真阴性:“这封邮件不是垃圾邮件,而且我们正确地预测了它不是垃圾邮件。”
以白血病为例
大约每 1000 名婴儿中有5 人会起名叫 Luke,每人一生中罹患白血病的概率大约是 1.4%,或者说每 1000 人中会有 14 人患病,
如果我们相信这两个因素是独立的,然后对 1 百万人运用我的“Luke 是白血病患者”测试,预计能看到这样的混淆矩阵:
def accuracy(tp, fp, fn, tn):
correct = tp + tn
total = tp + fp + fn + tn
return correct / total
print accuracy(70, 4930, 13930, 981070) # 0.98114
更常见的做法是把查准率(precision)和查全率(recall)结合起来看待。查准率度量模型所做的关于“阳性”的预测有多准确:
def precision(tp, fp, fn, tn):
return tp / (tp + fp)
print precision(70, 4930, 13930, 981070) # 0.014
查全率度量模型所识别的“阳性”的比例:
def recall(tp, fp, fn, tn):
return tp / (tp + fn)
print recall(70, 4930, 13930, 981070) # 0.005
这两个结果都低得可怕,反映出这是一个很不好的模型。
有时候可以把查准率和查全率组合成 F1 得分(F1 score),它是这样定义的:
def f1_score(tp, fp, fn, tn):
p = precision(tp, fp, fn, tn)
r = recall(tp, fp, fn, tn)
return 2 * p * r / (p + r)
5 偏倚-方差权衡
思考过拟合问题的另一种角度是把它作为偏倚和方差之间的权衡。 偏倚和方差这两个名词是用来度量在(来自同一个大型总体的)不同的训练数据集上多次重复训练模型的情况。
任何可能的训练集都会造成大量的错误。这表明该模型偏倚较高。然而任何两个随机选择的训练集会给出很相似的模型(因为任何两个随机选择的训练集都应该有大致相似的平均值)。所以我们称这个模型有低方差。高偏倚和低方差典型地对应着欠拟合。
如果你的模型有高方差,那可以类似地移除特征;另一种解决方法是(如果可能的话)获得更多的数据。
6 特征提取和选择
特征(feature)是指提供给模型的任何输入。在最简单的情况下,特征是直接提供给你的。如果你想基于某人的工作年限来预测其薪水,那工作年限就是你所拥有的唯一的特征。
邮件就是一组文本。你需要提取特征,比如:
• 邮件中是否包含单词“Viagra”;
• 字母 d 出现了多少次;
• 寄件人的域名是什么。
第一个问题的特征就是简单的是或否,可以被典型地编码为 1 或 0。第二个问题的特征是个数字。第三个问题的特征是从一个离散的选项集中做出的选择。
朴素贝叶斯分类器适合“是或否”这样的二元特征,就像上面列出的第一种情况一样。
回归模型要求有数值型的特征
决策树,会涉及数值或属性数据。
7 延伸学习
• Coursera 的机器学习课程(https://www.coursera.org/learn/machine-learning)是原创的MOOC,是深入理解机器学习基础知识的好途径。加州理工学院的机器学习 MOOC(https://work.caltech.edu/telecourse.html)也是很好的资源。
• The Elements of Statistical Learning是一本相当权威的教材,可以从网络上免费下载(http://statweb.stanford.edu/~tibs/ElemStatLearn/)。但是要注意,它是非常数学化的。