写在前面 昨天, 我们对SVM进行了大致的介绍, 相信大家对支持向量机都有了个大致的了解, 今天我们将继续学习对偶问题. 对偶问题 我们希望求得大间隔划分超平面所对应的模型: 其中, 和 是模型参数. 注意到其本身是一个凸二次规划(Convex Quadratic Programming)问题, 能直接用现成的优化计算包求解, 但我们可以有更高效的办法. 使用拉格朗日乘子法可得到其'对偶问题'(Dual Problem). 具体来说, 就是对每条约束添加拉格朗日乘子 , 则该问题的拉格朗日函数可写为: 其中 . 令 对…
Hacking Linux
写在前面 在大致了解神经网络了之后, 我们今天来学习下支持向量机相关的知识. 间隔与支持向量 给定训练样本集 , , 分类学习最基本的想法就是基于训练集 在样本空间中找到一个划分超平面, 将不同类别的样本分开. 但能将训练样本分开的划分超平面可能有很多, 如下图: 直观上看, 应该去找位于两类训练样本'正中间'的划分超平面, 因为该划分超平面对训练样本局部扰动的'容忍'性最好. 例如, 由于训练集的局限性或噪声的因素, 训练集外的样本可能比上图中的训练样本更接近两个类的分隔界, 这将是许多划分超平面出现错误, 二红色的超平面受影响最小. 换言之, 这个划分超平面所产生的分类结果是最鲁棒的, 对未见实例的泛化能力最强. 在样本空间中, 划分超平面可通过如下线性方程来描述:…
写在前面 众所周知, 深度学习是目前比较火的一门学科, 老周的西瓜书里面也仅仅是用了一小节来对深度学习这个领域做了一个大致的介绍, 如果大家想要深入学习有关深度学习相关的一些内容的话, 笔者推荐你去看看花书. 深度学习 理论上来说, 参数越多的模型复杂度越高, '容量'(Capacity)越大, 这意味着它能完成更复杂的学习任务. 但一般情形下, 复杂模型的训练效率低, 易陷入过拟合, 因此难以收到人们青睐. 而随着云计算, 大数据时代的到来, 计算能力的大幅提高可环节训练低效性, 训练数据的答复增加则可降低过拟合风险, 因此, 以'深度学习'(Deep Learning)为代表的复杂模型开始受到人们的关注. 典型的深度学习模型就是很深层的神经网络. 显然, 对神经网络模型,…
写在前面 今天, 我们将会继续学习其他常见神经网络. 其他常见神经网络 RBF(Radial Basis Function, 径向基函数)网络, 是一种但隐层前馈神经网络, 它使用径向基函数作为隐层神经元激活函数, 而输出层则是对隐层神经元输出的线性组合. 假定输入为 维向量 , 输出为实值, 则RBF网络可表示为: 其中, 为隐层神经元个数, 和 分别是第 个隐层神经元所对应的中心和权重, 是径向基函数, 这事某种沿径向堆成的标量函数, 通常定义为样本 到数据中心…
写在前面 今天, 我们继续学习神经网络中的全局最小与局部极小. 全局最小与局部极小 若用 表示神经网络在训练集上的误差, 则它显然是关于连接权 和阈值 的函数. 此时, 神经网络的训练过程可看做一个参数寻优过程, 即在参数空间中, 寻找一组最优参数使得 最小. 我们常会谈到两种'最优': '局部极小'(Local Minimum)和'全局最小'(Global Minimum). 对 和 , 若存在 使得: 都有 成立,…
写在前面 今天, 我们将会更加深入的学习神经网络, 了解神经网络的学习过程. 误差逆传播算法 多层网络的学习能力比单层感知机强得多. 欲训练多层网络, 简单的感知机学习规则显然不够了, 需要更强大的学习算法. 误差逆传播(Error BackPropagation, 简称 BP)算法就是其中最杰出的代表, 它是迄今最成功的神经网络学习算法. 现实任务中使用神经网络时, 大多是在使用BP算法进行训练. 值得指出的是, BP算法不仅可用于多层前馈神经网络, 还可用于其他类型的神经网络. BP算法的工作流程: 输入: 训练集 学习率 过程: 在(0,…
写在前面 今天, 我们将会学习神经元模型, 感知机与多层网络. 大家在学习与理解的过程中, 如果遇见问题, 可以利用google先搜索一下, 仔细想想, 如果还是未解决, 可以在文章下面留言, 或者直接微信联系博主. 神经元模型 M-P神经元模型: 在M-P神经元模型中, 神经元接受到来自 个其他神经元传递过来的输入信号, 这些输入信号通过带权重的连接(Connection)进行传递, 神经元接收到的总输入值将与神经元的阈值进行比较, 然后通过'激活函数'(Activation Function)处理以产生神经元的输出, 如下图: 激活函数(Activation Function), 常用的激活函数如下: 阶跃函数:…
写在前面 今天, 我们继续学习决策树的最后一个小节, 多变量决策树. 本文中的内容会比较少, 也为大家留下了查漏补缺的时间, 如若前面有些问题还未弄清楚, 可以适当的补充数学知识, 倒回去看前面的内容. 学而时习之, 可以为师矣. 多变量决策树 若我们把每个属性视为坐标空间中的一个坐标轴, 则 个属性描述的样本就对应了 维空间中的一个数据点, 对样本分类则意味着在这个坐标空间中寻找不同类样本的分类便捷. 决策树所形成的分类边界有一个明显的特点: 轴平行(axis-parallel), 即它的分类边界由若干个与坐标轴平行的分段组成. 这样的分类边界使得学习结果有较好的可解释性, 因为每一段划分都直接对应了某个属性取值. 但在学习任务的真实分类边界比较复杂时, 必须使用很多段划分才能获得较好的近似. 此时的决策树会相当复杂,…
写在前面 在这篇文章中, 我们将会介绍决策树中的剪枝处理, 连续值与缺失值处理. 剪枝处理 剪枝(Pruning)是决策树学习算法对付'过拟合'的主要手段. 决策树剪枝的基本策略有'预剪枝'(Prepruning)和'后剪枝'(Postpruning). 预剪枝是指在决策树生成过程中, 对每个节点在划分前先进行估计, 若当前节点的划分不能带来决策树泛化性能提升, 则停止划分并将当前结点标记为叶结点; 后剪枝则是先从训练集生成一颗完整的决策树, 然后自底向上地对非叶结点进行考察, 若将该结点对应的子树替换为叶结点能带来决策树泛化性能提升, 则将该子树替换为叶结点. 在这里, 我们可以使用留出法, 即预留一部分数据用作'验证集'以进行性能评估. 预剪枝 预剪枝基于信息增益准则, 预剪枝使得决策树的很多分值都没有'展开', 这不仅降低了过拟合的风险, 还显著减少了决策树的训练时间开销和测试时间开销. 另一方面, 有些分值的当前划分虽不能提升泛化性能,…
写在前面 在上一个章节中, 我们学习了线性模型. 在这篇文章中, 我们将会继续学习决策树相关的一些知识. 基本流程 决策树(Decision Tree)是一种常见的机器学习方法. 以二分类任务为例, 我们希望从给定训练数据集学的一个模型用以对新示例进行分类, 这个把样本分类的任务, 可以看做对'当前样本属于正类吗?'这个问题的'决策'或'判定'过程. 顾名思义, 决策树是基于树结构来进行决策的, 这恰是人类在面临决策问题时一种很自然的处理机制. 一般的, 一棵决策树, 包含一个根节点, 若干个内部节点和若干个叶节点; 叶节点对应于决策结果, 其他每个节点则对应于一个属性测试; 每个节点包含的样本集合根据属性测试的结果被划分到子节点中; 根节点包含样本全集. 从根节点到每个叶节点的路径对应了一个判定测试序列. 决策树学习的目的是为了产生一颗泛化能力强,…