机器学习与智能优化

注意:本文是对Machine Learning plus Intelligent Optimization章节要点的部分翻译,译文不求规范,不求顺序,只挑感兴趣的译,作为笔记之用,错误难免

KNN

KNN(最近邻)是原始且懒惰的机器学习形式:仅仅将所有训练数据存储下来。

当有新的待估计点输入时,搜寻得到存储数据中阈值最接近的K个数据点。用它们的多数的类别或者均值作为输出。简单的训练方式导致了搜寻大量数据时的漫长的响应等待。 KNN在很多实际应用中是有效的。因为输入简单通常输出也简单,这是机器学习的一个基本假设。它很像人类推理的案例学习过程。尽管简单粗暴,但它在很多情况下确实成效非凡。

  • KNN之所以实现是因为基于 Natura non facit saltus(拉丁语“自然不会跳变”)这一规律。自然万物和属性总是渐变的,而不是突变。
  • WKNN加权KNN

学习有道

机器学习的目标是用一组训练样例去实现一个系统,它对训练过程未见且环境相同的新样本同样有效。

机器学习学习的是通过自动最小化训练集误差的方法为不定模型的自由变量确定一组合适的值。可能通过修改来防止模型过于复杂以期提高正确泛化的机会。

系统的输出值可以是一个类别(分类)也可以是一个值(回归)。在一些情况中返回的是一个类别的概率以增加使用的灵活度。

准确的分类器可以在没有任何知识启发的帮助下建立,只要有充足且具有代表性的样本数据就够了。这是个激动人心的变化,它极大地促进了在商业环境中使用机器学习。

机器学习很强大但也有一个严格的方法(类似机器学习的“戒律”)。千万保证,绝对不要用训练集来估计性能——这是不可饶恕的罪过:切记重复使用验证数据将会得到乐观的估计。如果样本稀少,使用交叉验证的方法来展示你是一个专家级的机器学习使用者。

为了确保可靠,进入机器学习的天堂,留出一些测试样例并仅在最后的性能测试时使用一次。

测量模型性能的方法不只一种,不同的错误会有不同的代价。准确率,精确度和召回率是一些二值分类中的概率,一个混淆矩阵可以展示多分类问题下的全貌。

线性模型

针对回归(一个输入输出对集合的线性估计),传统线性模型用最小化线性模型预测值与训练样本间的平方误差和来作为实验数据的最可能的线性拟合。最小化可以“一蹴而就”,利用线性代数来生成矩阵的逆;或者迭代地,渐进优化模型参数来降低误差。求伪逆可能是拟合实验数据用得最多的技术。

在分类中,线性模型的目标是用线/平面/超平面来分离样本。确定一个分离平面可以把输入映射到两类可区分的输出值上(例如 +1和-1),然后再用回归。更高级的寻找鲁棒分离超平面同时考虑泛化能力的技术是将在后续章节中介绍的支持向量机。

真实值在计算机中是不存在的,而它们有限长的估计值可能导致错误和不稳定(样本点的微小扰动可能引起结果大的变化)。

有些机器学习方法与生物脑从经验和功能学习的模式有点关系。学骑自行车不是一个符号逻辑或等价认知的问题而是一个渐进调优并且……从起初的事故中迅速恢复的过程。

最小二乘法

多项式拟合是利用线性模型来解决非线性问题的有效方法。模型由一个线性的系数(待求)与原始输入变量的乘积和组成。用任意函数替代乘积中的变量也适用,只要这个函数是确定的(函数中没有自由参数,只有系数相乘)。优化的系数由最小化误差平方和来决定,因此需要解一组线性方程。如果输入-输出的样本数没有系数个数多,那么将导致过拟合,使用该模型在新样本中获取输出是危险的。

一个多项式模型的优点是它能够通过评估可得到的预测值与观测数据间不符的概率(也就是数据在此模型参数下的似然)来评价。如果这个概率很低,我们就不能太相信这个模型。但是关于误差产生原因的一个错误假定,就可能轻易地导致过于乐观或过于悲观的结论。统计只有基于正确的假设才能得到坚实科学的结构,再牢固的统计结果构筑在一个如沙般稀松的无效假设之上也难免支离破碎。幸好,有好理解且鲁棒的基于能轻松承受的大运算量的方法来检验,如交叉验证。

“荒谬”如自举法(如蒙特卡罗方法,在同一数据中重复采样来重复估计操作)可以被用来获取在估计参数值附近的置信区间。

你已经将被认作是最小二乘专家的似然最大化了。

规则、决策树、森林

简单的“如果-那么”规则来提炼信息是人类能够理解的一种方式。一个简单的避免可能的矛盾条件而导致的混乱的方法是用一个问题层级(最具信息量的放前面)来组织一系列问题结构,也就是决策树。

树可以通过贪心和递归方法学习,从完整的数据集开始,尝试寻找一个划分使得两个子集尽可能地纯净,然后在子集上重复这个过程。递归过程当剩余子集中足够纯能够用一个类别或者一个输出值概括时停止,这些子集成为树的叶节点。

充足的储存量和计算能力使得能够计算非常大量不同的树。它们能高产地作为决策森林来选取输出的均值(回归)或者投票(分类)使用。决策森林有众多优点:与所有的树一样,它们能自然地处理带有丢失信息的多分类问题,它们提供可能性的输出,概率和误差曲线,它们对先前未见的数据泛化能力强,且没有过度训练的风险,多亏并行化和每个数据点测试集的减少,它们还迅速高效。

一棵树投下一小块阴影,而成百上千棵树能够给焦灼的机器学习难题带来清凉。

排序与选择特征

减少一个模型使用的输入特征同时保持性能大体一致有诸多好处:模型尺寸更小、便于人类理解、训练和运行速度更快、可能更高的泛化能力。

在不考虑特定模型方法和它们之间关系的情况下很难对独立的特征进行排序。想想一个侦探(这相当与是一个“有罪”和“清白”的分类器)只有智能地综合众多线索,排除令人迷惑的证据,才能得到正确的结论。排序和过滤只是初步的探索,还需要结合所选方法在不同特征集上去尝试验证,并用特征选择过程去包装这个方法。

简言之:仅当你猜测是线性关系的时候,才去信任相关系数。不然的话,可以使用其他的相关评价方法,例如相关率可以甚至衡量输出不是定量的情况。用卡方通过估计独立与联合事件的概率来辨明输入与输出间可能的独立性。最后,用强大的互信息来估计任意定量或定性特征间的独立性,但要注意仅提供少量样本情况下可能出现的过高估计。

作为练习,捡起你最喜欢的福尔摩斯小说,去找到他用地是哪种特征(线索,证据)选择方法去抓住和揭露一个罪犯并且让他的朋友华生点赞的。

几个特殊非线性模型

线性模型应用很广泛,但在某些场合也有不足。本章举了三个优化的例子。

第一,要求输出是在一个限定范围的可能值中是有原因的。例如,如果要预测一个概率,那么输出就需要介于0和1之间。把一个线性组合用logistc函数来压缩是一个方法。当训练事件的对数似然最大化时,就获得了广泛使用的logistic回归。

第二,有些时候线性模型需要局部化,给予距输入的带估样本点近的输入点更高的权重。这是局部加权回归的例子。

最后,将针对大权值的罚项加入函数再优化与计算权值平方和(计算导数后得到的线性方程)是有差别的。作为例子,将绝对值的和作为罚项对降低权值和使得输入更加稀疏是有帮助的。LASSO降低了权值中非零值的个数,也就减少了输入中影响输出值的个数。这是LASSO方法用来缩减选取输入的例子。

在读这一章之前,lasso对于你来说是一个用来拴马和牛的长长的套绳,现在,你也可以用它来套住更多的有用模型了。

浅层和深层神经网络

线性模型应用很广泛,但在某些场合也有不足。本章举了三个优化的例子。

第一,要求输出是在一个限定范围的可能值中是有原因的。例如,如果要预测一个概率,那么输出就需要介于0和1之间。把一个线性组合用logistc函数来压缩是一个方法。当训练事件的对数似然最大化时,就获得了广泛使用的logistic回归。

第二,有些时候线性模型需要局部化,给予距输入的带估样本点近的输入点更高的权重。这是局部加权回归的例子。

最后,将针对大权值的罚项加入函数再优化与计算权值平方和(计算导数后得到的线性方程)是有差别的。作为例子,将绝对值的和作为罚项对降低权值和使得输入更加稀疏是有帮助的。LASSO降低了权值中非零值的个数,也就减少了输入中影响输出值的个数。这是LASSO方法用来缩减选取输入的例子。

在读这一章之前,lasso对于你来说是一个用来拴马和牛的长长的套绳,现在,你也可以用它来套住更多的有用模型了。

统计学习与支持向量机

统计学习理论(SLT)表明了条件因而在样例学习上是成功的,也就是说,这些训练数据中的正样本对在相同概率分布下的新样本有有效的泛化能力。一致的分布是重要的:一个优秀的人类老师从来不会用一些样本来训练学生,而用完全不同的例子来测试。换句话说,样本需要反映问题。学习能力的状况指的是假设空间(我们用来学习的“带可调参数的自由机器”)必须有足够的能力在测试数据(有小的经验风险)上达到好的性能,但太强的能力会导致仅仅是简单地记住样本而不是提取问题的深度结构。自由度由VC-dimension决定。

SLT指明了从数据学习的天堂是存在的,但对于多数实际问题,并没有展示一条通往其中的可行道路,在直觉和交叉验证的指引下选择合适的核和参数是成功的关键。

深度学习和MLPs的最新研究成果打开了“特征工程”和全自动核选择的希望之门。研究还在进行,新的颠覆性的技术和相较懒惰地宣传推广智慧而言,跟随有创造力的自由思维更有前景。

学习也民主

拥有一些不同的准确率相似的模型让你能够做一些独立使用这些模型之外的提升性能的方法(合作法,议会,机器学习内的民主)。

在堆叠或混合方法中,这些系统由在独立模型输出上添加一层组合而来。

创造多样性有不同 的方法策略。在bagging(bootstrap aggregation)中,对同一个样本集做有替换的采样。在boosting中,与添加模型相关,一系列的模型被训练,因此,现在系统中最难的样本能够为新添加的组件而拥有更大的权值。用不同的特征子集或者不同的随机数生成器是创造多样性的另外方法。Error-correcting output codes为多位输出比特提供冗余的模型编码以增加应对独立错误的鲁棒性。

Additive logistic regression 是通过增加模型和类牛顿优化来解释boosting 的优雅方法。优化加速了我们知识的增长。

机器学习中的合作法与爵士音乐类似:整体大于部分的和。音乐家和模型都协同工作,互相依靠,胜过自己单独的创造。

自顶而下 K均值聚类

无监督学习构建模型仅仅通过输入数据,而不用借助分类标签。特别地,聚类旨在将相同类别的物体放到相同的类中,不同的物体放到不同的类中。聚类启动的信息可以是一组点之间的关系(外在表示)或者表示独立点的一组向量(内在表示)。在第二种情况中,一个均值向量可以作为聚类成员的中心。

聚类的目标有:通过抽象压缩信息(考虑组而不是单个成员),了解实验点的全局结构(实验点并不是在输入空间上随机分布的而是聚在有选择的区域),使用聚类中心降低认知负担。

没有独立的最佳聚类评价标准,有趣的结果由相似度测量方法和后续步骤中组之间的关联决定。一言以蔽之,同一个聚类成员之间高相似性,不同聚类之间高差异性。

自顶向下的聚类首先选择指定的聚类数目,然后分割样本。K均值先确定K个中心位置,将样本归类到离它们最近的中心,通过样本均值重新计算中心再重新归类……

聚类让你从一个新的角度看待你的宠物狗托比。狗是有四个爪子,会叫高兴的时候会摇尾巴的器官聚类。托比是与你最喜爱的小宠的经历与情感的聚类。

自底而上 层次聚类

层次聚类构建了一棵包含数据点的树(层次组织)。如果你不了解树的概念,可以想想你用来组织文件的文件夹,实体的或者电脑上的(文件组成一个工程,不同工程的文件夹再组合成一个“正在进行的工程”文件夹)。

设想你没有秘书并且没有时间亲手做这些:一个自底向上的聚类方法可以帮你做这些事,只要你设立了一个合适的方法去测量独立数据与已经合并点的数据集之间的相似度。

这个方法之所以成为“自底向上”是因为它从独立的数据点开始,合并最相似的点,然啊后合并最相似的集合,直到只剩一个集合。聚类的数目在开始的时候并没有指定:一个合适的数值可以通过数次实验在合适的相似度层次来切割树得到。

通过层次聚类,圣诞老人现在可以只用一个巨大的红盒子来组织圣诞礼物了。当打开它时,会发现里面有一系列盒子,再打开,还是盒子,直到打开“叶”盒子才找到实际装的礼物。

机器学习与智能优化

Leave a Reply

Your email address will not be published. Required fields are marked *

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax