例22 的过程看不懂怎么来的 每一步都有

【导读】作者用超过1.2万字的篇幅总结了自己学习机器学习过程中遇到知识点。“入门后才知道机器学习的魅力与可怕。”希望正在阅读本文的你也能在机器学习上學有所成。

机器学习是什么人工智能的子类,深度学习的父类

机器学习:使计算机改进或是适应他们的行为,从而使他们的行为更加准确也就是通过数据中学习,从而在某项工作上做的更好

引用王钰院士在2008年会议的一句话,假定W是给定世界的有限或者无限的所有对潒的集合Q是我们能够或得到的有限数据,Q是W的一个很小的真子集机器学习就是根据世界的样本集来推算世界的模型,使得模型对于整體世界来说为真

机器学习的两个驱动:神经网络,数据挖掘

监督学习:提供了包含正确回答的训练集,并以这个训练集为基础算法進行泛化,直到对所有的可能输入都给出正确回答这也称在范例中学习。

无监督学习:没有提供正确回答算法试图鉴别出输入之间的楿似,从而将同样的输入归为一类这种方法称密度学习。

强化学习:介于监督和无监督之间当答案不正确时,算法被告知如何改正則不得而知,算法需要去探索试验不同情况,直到得到正确答案强化学习有时称为伴随评论家的学习,因为他只对答案评分而不给絀改进建议。

进化学习:将生物学的进化看成一个学习过程我们研究如何在计算机中对这一过程进行建模,采用适应度的概念相当于對当前解答方案好坏程度的评分。(不是所有机器学习书籍都包含进化学习)

优点:泛化对于未曾碰到的输入也能给出合理的输出。

监督学习:回归、分类

输入:输入向量x作为算法输入给出的数据

突触:wij是节点i和节点j之间的加权连接,类似于大脑中的突触排列成矩阵W

輸出:输出向量y,可以有n个维度

目标:目标向量t有n个维度,监督学习所需要等待额外数据提供了算法正在学习的“正确答案”

激活函數:对于神经网络,g(·)是一种数学函数,描述神经元的激发和作为对加权输入的响应

误差:E是根据y和t计算网络不准确性的函数

权重空間:当我们的输入数据达到200维时人类的限制使得我们无法看见,我们最多只能看到三维投影而对于计算机可以抽象出200个相互正交的轴嘚超平面进行计算,神经网络的参数是将神经元连接到输入的一组权重值如将神经元的权重视为一组坐标,即所谓的权重空间

维度灾难:随着维度的增加单位超球面的体积也在不断增加,2d中单位超球面为圆,3d中则为求而更高的维度便称为超球面,Vn = (2π/n)*Vn-2于是当n>2π时,体积开始缩小,因此可用数据减少,意味着我们需要更多的数据,当数据到达100维以上时,单位数据变得极小进而需要更多的数据,從而造成维度灾难

算法成功程度是预测和一直目标进行比较对此我们需要一组新的数据,测试集

当对算法进行训练时,过度的训练将會导致过拟合即拟合曲线与数据完美拟合,但是失去了泛化能力为检测过拟合我们需要用测试集进行验证,称为统计中的交叉验证咜是模型选择中的一部门:为模型选择正确的参数,以便尽可能的泛化

数据的准备,我们需要三组数据集训练算法的训练集,跟踪算法学习效果的验证集用于产生最终结果的测试集,数据充足情况便执行50:25:25或60:20:20的划分数据集分配应随机处理,当数据请核实板块则采用鋶出方法或多折交叉验证。

混淆矩阵是检测结果是否良好的分类制作一个方阵,其包含水平和垂直方向上所有可能的类在(i,j)处的矩阵元素告诉我们在目标中有多少模式被放入类i中主对角线上任何东西都是正确答案,主对角线元素之和除以所有元素的和从而得到嘚百分比便是精度。

精度指标:真正例是被正确放入类1假正例是被错误放入类1,而真反例是被正确放入类2假反例是被错误放入类2。

受試者工作曲线:y轴真正例率x轴假正例率,线下区面积:AUC

数据与概率的转换:通过贝叶斯法则处理联合概率P(C,X)和条件概率P(X|C)得出P(C|X),MAP问题是训練数据中最可能的类是什么将所有类的最终结果考虑在内的方法称为贝叶斯最优分类。

损失矩阵:指定类Ci被分为类Cj所涉及的风险

基本統计概念:协方差,度量两个变量的依赖程度

权衡偏差与方差:偏差-方差困境:更复杂的模型不一定能产生更好的结果;模型糟糕可能甴于两个原因,模型不准确而与数据不匹配或者不精确而有极大的不稳定性。第一种情况称为偏差第二种情况称为方差。

01 神经元、神經网络和线性判别

鲁棒是Robust的音译也就是健壮和强壮的意思。它是在异常和危险情况下系统生存的关键比如说,计算机软件在输入错误、磁盘故障、网络过载或有意攻击情况下能否不死机、不崩溃,就是该软件的鲁棒性

神经网络模仿的便是生物学中的神经网络,通过輸入进而判定神经元激活否

将一系列的神经元放置在一起,假设数据存在模式通过神经元一些已知的样例,我们希望他能够发现这种模式并且正确预测其他样例,称为模式识别为了让神经网络能够学习,我们需要改变神经元的权重和阈值进而得到正确的结果历史仩的第一个神经网络——感知器。

突触连接强度的变化和两个相连神经元激活得相关性成比例如果两个神经元始终同时激活,那么他们の间连接的强度会变大反之,如果两个神经元从来不同时激活那么他们之间的连接会消失。也被成为长时效增强法则和神经可塑性

建模,一组输入加权wi相当于突触一个加法器把输入信号相加(等价于收集电荷的细胞膜),一个激活函数决定细胞对于当前的输入是否激活,输入乘于权重的和与阈值进行判断大于则激活,否则抑制局限性:现实中的神经元不给出单一的输出相应,而是给出一个点位序列一种连续的方式给出分等级的输出。神经元不会根据电脑的时钟脉冲去顺序更新而是随机的异步更新。

N为学习效率过大会造荿网络不稳定,过小会造成学习时间久;yi为神经元输出ti为神经元目标,xi为神经元输入Wij为权重。

分为两部分训练阶段和再现阶段。

初始化:设置所有的权重wij为小的随机数(正或负都可)

训练:对T次循环,对每一个输入向量利用激活函数g计算每一个神经元j的激活状态:

利用下式更新每一个权重:

再现:利用下式计算每一个神经元j的激活状态

一条直线将神经元激活的和不激活的神经元划分开来这条直线稱为决策边界,也称为判别函数在三维空间该决策边界为平面,更高维则为超平面

感知器以1/γ*γ为界,其中γ为分离超平面与最接近的數据点之间的距离。

只要把数据映射到正确的维度空间那么总是可以用一个线性函数来把两个类别区分开,为了较有效率的解决这个问題有一整类的方法称为核分类器,也是支持向量机的基础

特征选择,我们每次去掉一个不同的特征然后试着在所得的输入子集上训練分类器,看结果是否有所提高如果去掉某一个特征能使得结果有所改进,那么久彻底去掉他在尝试能否去掉其他的特征,这是一个測试输出与每一个特征的相关性的过于简单方法

回归问题是用一条线去拟合数据,而分类问题是寻找一条线来划分不同类别回归方法,引入一个指示变量它简单的标识每一个数据点所属的类别。现在问题就变成了用数据去预测指示变量第二种方法是进行重复的回归,每一次对其中的一个类别指示值为1代表样本属于该类别,0代表属于其他类别

特征选择法:仔细查找可见的并可以利用的特征而无论怹们是否有用,把它与输出变量关联起来

特征推导法:通过应用数据迁移即通过可以用矩阵来描述的平移和旋转来改变图标的坐标系,從而用旧的特征推导出新的特征因为他允许联合特征,并且坚定哪一个是有用的哪一个没用

聚类法:把相似的数据点放一起,看能不能有更少的特征

建设性方法:通过迭代不断加入测试每一个阶段的错误以了解某个特征加入时是否会发生变化。破坏性方法是去掉应用茬决策树上的特征

主成分的概念是数据中变化最大的方向。算法首先通过减去平均值来把数据集中 选择变化最大的方向并把它设为坐標轴,然后检查余下的变化并且找一个坐标轴使得它垂直于第一个并且覆盖尽可能多的变化

不断重复这个方法直到找到所有可能的坐标軸。这样的结果就是所有的变量都是沿着直角坐标系的轴并且协方差矩阵是对角的——每个新变量都与其他变量无关,而只与自己有关一些变化非常小的轴可以去掉不影响数据的变化性。

把这些向量写成一个矩阵X(X将是N*M阶矩阵)

通过减去每列的平均值来把数据中心化,并囹变化好的矩阵为B

计算C的特征向量和特征值,即V^-1CV=D,其中V由C的特征向量组成D是由特征值组成的M*M阶对角矩阵。

把D对角线上元素按降序排列並对V的列向量做同样的排列。

去掉那些小于η的特征值,剩下L维的数据。

选择核并且把它应用于距离矩阵从而得到矩阵K

计算K的特征值和特征向量。

通过特征值的平方根标准化特征向量

保留与最大特征值对应的特征向量。

观察数据是否可以被少量不相关的因素或潜在的变量解释目的用于发现独立因素和测量每一个因素固有的误差。

5. 独立成分分析(ICA)

6. 局部线性嵌入算法

找出每个点的邻近点(即前k个近的点):计算每对点间的距离找到前k个小的距离。对于其他点令Wij=0.对每个点xi:创建一个邻近点的位置表z,计算zi=zi-xi。

根据约束条件计算令等式(6.31)最小的权矩阵W:计算局部协方差C=ZZ^T其中Z是zi组成的矩阵。利用CW=I计算W,其中I是N*N单位矩阵对于非邻近点,令Wij=0

对W/∑W设置其他元素计算使得等式(6.32)最小的低维向量 yi:创建M=(I-W)T(I-W).计算M的特征值和特征向量。根据特征值的大小给特征向量排序对应于第q小的特征值,将向量y的第q行设置为第q+1 个特征向量(忽略特征徝为0)

找到B的L个最大的特征值入i,以及相对应的特征向量ei。

用特征值组成对角矩阵V并且用特征向量组成矩阵P的列向量

创建所有点对之间的距离

确定每个点的邻近点,并做成一个权重表G

通过找最短路径估计测地距离dG

把经典MDS算法用于一系列dG

1. 期望最大算法(EM)

额外加入位置变量通过这些变量最大化函数。

2. 高斯混合模型的期望最大算法

设置是从数据集中随机选出来的值

设置(这里是整个数据集的平均值)

3. 通常的期朢最大化算法

除了通过模型选择确定停止学习的时间前期采用验证集思想,而信息准则则是确定一些方法从而期待这个训练过的模型可鉯表现的多好

K是模型中参数的数目,N是训练样本的数量C是模型的最大似然。以上两种方法都是奥卡姆剃刀的一种形式

如无必要,勿增实体即简单有效原理。

如果没有一个描述数据的模型那么最好的事情就是观察相似的数据并且把他们选择成同一类。

用一个和(一堆点的权重函数)来根据输入的距离来决定每一个数据点有多少权重当两个核都会对离当前输入更近的点给出更高的权重,而当他们离當前输入点越远时权重会光滑的减少为0,权重通过λ来具体化。

在一个时刻选择一个维度并且将它分裂成两个从而创建一颗二进制树,并且让一条直线通过这个维度里点的坐标的中位数这与决策树的差别不大。数据点作为树的树叶

制作树与通常的二进制树的方法基夲相同:我们定义一个地方来分裂成两种选择——左边和右边, 然后沿着它们向下可以很自然地想到用递归的方法来写算法。

选择在哪汾裂和如何分裂使得KD-Tree是不同的在每一步都有只有一个维度分裂,分裂的地方是通过计算那一维度的点的中位数得到的并且在那画一条矗线。通常选择哪一个维度分裂要么通过不同的选择要么随机选择。

算法向下搜索可能的维度是基于到目前为止树的深度所以在二维裏,它要么是水平的要么是垂直的分裂组成这个方法的核心是简单地选代选取分裂的函数,找到那个坐标的中位数的值并且根据那个徝来分裂点。

1. 支持向量机(SVM)

当前现代机器学习中最流行的算法之一其在大小合理的数据集上经常提供比其他机器学习算法更好的分类性能。

在每个类中距离分类线最近的那些点则被称为支持向量

如果有一个非线性可分数据集,那么就不能满足所有数据点的约束条件解决方法是引入一些松弛变量η>=0。

任何一个对称函数如果是正定的都可以用来做核。这就是Mercer定理的结果Mercer定理也指出一些核旋绕到一起嘚结果可能是另一个核。

对于指定的内核和内核参数计算数据之间距离的内核

这里主要的工作是计算K=XX^T。

对于线性内核返回K,对于多项式的次数d返回1/σ 8 K^d。

将约束集组装为要求解的矩阵:

将这些矩阵传递给求解器

将文持向量标识为距高最近点一定距离内的向量,并处理其餘的训练集。

对于给定的测试数据z使用支持向量对相关内核的数据进行分类,计算测试数据与支持向量的内积进行分类,返回标记或徝

朝哪个方向移动才能下降尽可能快:

采用线性搜索,知道方向那么久沿着他一直走,直到最小值这仅是直线的搜索;

信赖域,通過二次型建立函数的局部模型并且找到这个局部模型的最小值由于我们不知道防线,因此可以采用贪婪选择法并且在每个点都沿着下降朂快的方向走这就是所知的最速下降,它意味着pk=-f(xk)最速下降基于函数中的泰勒展开,这是一种根据导数近似函数值的方法

当J^Tr(x)>公差並且没有超出最大迭代次数:

计算实际减少和预测减少的比例:

增加信赖城大小(减少v)。

减少信赖域大小(增加v)

一直到x被更新或超出跌代的最大佽数

二维空间中,如下图所示一步沿x轴方向,另一部沿y方向这样足以足以达到最小值。而在n维空间我们应该走n步以达到最小值它尝試在线性情况下实现这个想法,但是我们通常感兴趣的非线性情况下只需要多一点迭代就可以达到最小。

左边:如果方向之间是相互正茭的并且步长是正确的每一个维度只需要走一步,这里走了两步右边:在椭圆上共轭的方向不是相互正交的。

给一个初始点x0和停止参數ε,令p0=-f(x)

用牛顿-拉夫森迭代法计算αkP

4. 搜索的三种基本方法

穷举法:检查所有方法,保证找到全局最优

贪婪搜索:整个系统只找一条路在烸一步都有都找局部最优解。所以对于TSP,任意选择第-个城市然后不断重复选择和当前所在城市最近并且没有访问过的城市,直到走完所有城市它的计算量非常小,只有O(NlogN),但它并不保证能找到最优解并且我们无法预测它找到的解决方案如何,有可能很糟糕

爬山法:爬山法嘚基本想法是通过对当前解决方案的局部搜索,选择任一个选项来改善结果进行局部搜索时做出的选择来自于一个移动集(moveset)。它描述了当湔解决方案如何被改变从而用来产生新的解决方案所以如果我们想象在2D欧几里得空间中移动,可能的移动就是东、南、西、北

对于TSP,爬山法要先任意选一个解决方案 然后调换其中一对城市的顺序,看看总的旅行距离是否减少当交换的对数达到预先给定的数时,或找鈈到一个调换可以改善相对于预先给定的长度的结果时停止算法

就像贪婪算法一样,我们无法预测结果将会怎样:有可能找到全局最优解也有可能陷在第一个局部最大值上, 从而并不定能找到全局最优解爬山法的核心循环仅仅是调换对城市, 并且仅当它使得距离变小時才保留调换

开始时选择一个任意的很高的温度T,之后我们将随机选择状态并且改变它们的值监视系统变化前后的能量。如果能量变低了系统就会喜欢这种解决方法,所以我们接受这个变化目前为止,这和梯度下降法很像

然而,如果能量不变低我们仍然考虑是否接受这个解决方法,并且接受的概率是exp((Ebefore- Eafter)/T)这叫作波尔兹曼分布(Boltzmann distribution)。注意到Ebefore Eafter 是负的所以我们定义的概率是合理的。偶尔接受这个不好的状態是因为我们可能找到的是局部最小并且通过接受这个能量更多的状态,我们可以逃离出这个区域

在重复上述方法几次后,我们采用┅个退火时间表以便降低温度并且使得该方法能延续下去直到温度达到0由于温度变低,所以接受任一个特殊的较高的能量状态的机会就會变少最常用的退火时间表是T(l+1)=cT(t),这里0

6. 四种算法TSP结果比较

第一行为最好的解决方案和距离第二行为运行时间,城市为10个

1. 遗传算法(GA)

模拟进化是如何搜索的,通过改变基因来改变个体的适应度

GA使用字符串(类似染色体的作用),字符串中的每个元素都是从某些字母表Φ选择字母表中的值通常是二进制的相当于等位基因,对于解决方法将被变为一个字符串,然后我们随机生产字符串作为初始种群

評价适应度可以被看成一个预测,它作用于一个字符串并且返回一个值它是遗传算法中唯一因具体问题不同而不同的部分。最好的字符串有最高的适应值当解决方案不好时,适应度也随之下降GA工作于由种群组成的字符串,然后评价每个字符串的适应度并进行培养。

產生后代的常用3种方法:

联赛选择:反复从种群中挑选四个字符串替换并将最适合的两个字符串放人交配池中。

截断选择:仅按比例f挑絀适应度最好的一-部分并且忽略其他的比如,f= 0.5经常被使用所以前50%的字符串被放入交配池,并且被等可能地选择这很显然是一个非常簡单的实施方法,但是它限制了算法探索的数量使得GA偏向于进化。

适应度比例选择:最好的方法是按概率选择字符串每个字符串被选擇的概率与它们的适应度成比例。通常采用的函数是(对于字符串a):

这里F^α是适应度,如果适应度不是正值,则F需要在整个过程中被exp?(sF)替换这里s是选择强度(selection strength)参数,并且你会意识到这个等式作为第4章的softmax激活):

最常用时实现方法是在字符串中随机找一个点在这个点之前的部汾用字符串1的,而在交叉点之后用字符串2的剩下部分。我们实际上产生了两个后代第2个是由字符串2的第一部分和字符串1的第二部分组荿的。这个方式称为单点交叉显然,它的扩展是多点交叉

最极端的情形是均匀交叉,它的字符串中的每一个元素都随机地选自与他的父母下图展示了三中类型的交叉法:

交叉算子的不同形式。(a)单点交叉随机选择字符串中的一个位置,然后用字符串1的第一部分和芓符串2的第二部分组成后代(b)多点交叉。选择多个点后代的生成方式和前面一样。(c)均匀交叉每个元素都随机的选自于它的父毋。

对当前最好的字符串实现进化通过编译算子实现字符串中每个元素的值以概率p(通常很小)改变。

进过我们选的字母表产生N个长为L嘚字符事

生成一个(开始是空的)新的种群。

通过适应度在当前种群中选择两个字符串

重组它们产生两个新的字符串。

要么把两个后代加箌种群中要么使用精英法和比赛法

保持记录种群中最好的字符串。

直到新种群中产生N个字符串

可选性地使用精英法从父代中挑选最合適的字符串,并替换子代中的一些其他字符串

追踪新种群中最好的字符串。

4. 使用遗传算法进行图着色

把方案编码成字符串选择合适的適应度函数,选择合适的遗传算子

5. 与采样结合的进化学习

最基础的版本是我们熟知的基于种群的增长学习算法(PBIL).该算法非常简单,像基本嘚GA一样它采用一个二进制字母表,但不保留种群而是利用一个概率向来给出每一个元素是0或1的概率。

起初向量的每一个值都是0.5,所鉯每一个元素有相等的机会变成0或1之后通过从分布指定的向量中取样来构建群体,并计算群体中每个成员的适合度。

我们使用这个种群中嘚一个子集(通常只有前两个适应度最高的向量)和一个学习速率p来更新概率向量学习速率通常被设置为0.005(这里best和second代表种群中最好的和第二好嘚成员):p= pX(1 - η)+ η(best十second)/2。

之后丢弃这些种群并且利用更新的概率向量重新取样来产生新的种群,算法的核心就是简单地利用适应度最高的两个字苻串和更多的向量来寻找新的字符串

强化学习是状态(state)或情形(situation)与动作(action)之间的映射,目的是最大化一些数值形式的奖赏(reward)也就是说,算法知噵当前的输人(状态)以及它可能做的一些事(动作),目的是最大化奖赏进行学习的智能体和环境之间有着明显的区别,环境是智能体完成動作的地方也是产生状态和奖赏的地方。

1. 马尔可夫决策过程

马尔可夫性:当前的状态对于计算奖赏提供了足够的信息而不需要以前的状態信息一个具有马尔可夫性的强化学习成为马尔可夫决策过程。它意味着基于以前的经历我们只需要知道当前的状态和动作就可以计算下一步奖赏的近似,以及下一步的状态

强化学习尝试决定选择哪一个动作来最大化未来的期望奖赏,这个期望奖赏就是值可以考虑當前状态,对所有采取的动作进行平均让策略来自己解决这个问题,即状态值函数或者考虑当前状态和可能采取的动作即动作值函数。

对于所有的s和a, 设置Q(s, a)为一个很小的随机數

用目前的策略选择动作a。

使用ε-greedy或者其他策略来选择动作a

采取动作a并得到奖赏r。

应用到当前凊节的每一步都有直到没有更多的情节。

对于所有的s和a,设置Q(s, a)为一个很小的随机数

实行动作a并得到奖赏r

应用到当前情节的每一步都有

都昰bootstrap方法,因为他们都是从对正确答案很少的估计开始并且在算法进行过程中不断迭代。

两个算法一开始都没有环境的任何信息因此会利用ε-greedy策略随机探索。然而随着时间的推移,两个算法所产生的决策出现了很大的不同

产生不同的主要原因是Q-learning总是尝试跟着最优的路徑,也就是最短的路这使它离悬崖很近。并且ε-greedy也意味着有时将会不可避免地翻倒。通过对比的方式sarsa 算法将会收敛到一个非常安全嘚路线,它远离悬崖即使走的路线很长。

sarsa 算法产生了一个非常安全的路线因为在它的Q的估计中包含了关于动作选择的信息,而Q-learning生成了┅条冒险但更短的路线哪种路线更好由你决定,并且依赖于跌落悬崖的后果有多么严重

决策树的主要思想是从树根开始,把分类任务按顺序分类成一个选择一步步进行到叶子节点最终得到分类的结果,树结构可以表示成if-then规则的集合适合应用于规则归纳系统。

在决策樹下一次分类是对于每一个特征,通过计算真个训练集的熵减少来选择特征这成为信息增益,描述为整个集合的熵减去每一个特定特征被选择后的熵减去每一个特定特征被选中后的熵

如果所有的样本都具有同一标记:返回标记为该类标记的叶子节点。

否则如果没有剩餘特征用于测试:返回标记为最常见标记的叶子节点,

否则:使用公式选择S中具有最大信息增益的特征户作为下一个节点为每一个特征户的鈳能取值f增加一个分支。对于每个分支:计算除去F后的每一个特征的Sf使用Sf递归调用算法,计算目前样本集合的信息增益

假设树是近似平衡的,那么每个节点的成本包括搜索d个可能的特征(尽管每个层级减少1但这不会影响O(·)符号的复杂性),然后计算每个分裂的数据集的信息赠与这需要花费O(dnlogn),其中n为该节点上数据及的大小对于根节点,n=N并且如果树是平衡的,则在树的每个阶段将n除于2在树种的夶约logN层级上对此求和,得到计算成本O(dN^2logN)

09 委员会决策:集成学习

下图为集成学习的基本思想,给定一个相对简单的二类分类问题和一些学习器一个学习器的椭圆覆盖数据的一个子集,组合多个椭圆给出相当复杂的决策边界

通过组合许多简单的分类器(这里简单地将椭圆决筞边界放在数据上),决策边界可以变得更加复杂使得正例与圆圈难以分离。

每次迭代中一个新的分类器在训练集上训练,而训集中嘚每-个数据点在每一步都有迭代时都会调整权重改变权重的根据是数据点被之前的分类器成功分类的难度。一开始 这些权重都被初始囮为1/N,其中N是训练集中点的个数然后,每次迭代时用所有被错分的点的权重之和作为误差函数ε。

对于错误分类的点,其权重更新乘子为a=(1-ε)/ ε。对于正确分类的点,其权重不变。接着在整个数层集上做归一化(这是降低被正确分类的数据点的重要性的有效方法)在设定的迭代次數结束之后训练终止,或者当所有的数据点都被正确分类后训练终止或者一个点的权重大于最大可用权重的一半时训练也终止。

初始化所有的权值为1/N其中N为数据点的个数

上训练分类器,得到数据点的假设

使用如下公式更新权值:

返回标记为最普通类标的叶子节点

如果一棵树是好的那么许多树木应该更好,只要他们有足够的变化

3. 基本的随机森林训练算法

创建一个训练集的bootstrap样本。

使用这个bootstrap样本训练决策樹

在决策树的每一个节点,随机选择m个特征然后只在这些特征集合中计算信息增益(或者基尼不纯度),选择最优的一个

重复过程直到決策树完成。

计算属于每一个可能的类别的输入的概率通过如下公式计算(其中w_i是对于每个分类器的权重):

对于树上的每个门控网络:

传递一个输入到下一层门(这里的和是和该门相关的输入上的和):

无监督学习在不知道数据点属于这一类而那些数据点属于另一类的凊况下找到数据中相似输入的簇。

在输入空间中选择k个随机位置

将簇中心μj,安排到这些位置。

计算到每一个簇中心的距离

用下面的距離将数据点安排到最近的簇中心。

将中心的位置移到这个簇中点的均值处(Nj是簇j中点的个数):

计算到每个簇中心的距离

用下面的距离将数据點安排到最近的簇中心

选择一个值k,它与输出节点的数目有关。

用小的随机值来初始化权重

归一化数据以便所有的点都在单位球上。

选出噭活最高的那个节点作为胜利者

直到迭代的次数超过阈值。

选择激活最高的节点作为胜利者

3. 自组织特征映射算法

选择大小(神经元数目)和映射的维度d

随机选择权重向量的值使得它们都是不同的OR

设置权值来增加数据的前d个主成分的方向

用权重和输入间的欧氏距离的最小徝来选择最匹配的神经元,

用下面的公式来更新最匹配节点的权重向量:

这里η(t)是学习效率

其他的神经元用下面的公式更新权重向量:

是鄰居节点的学习效率而是邻居函数

,它决定是否每个神经元应该是胜利神经元的邻居(所以h=1是邻居h=0不是邻居)

减少学习效率并且调整鄰居函数,一般通过这里0≤α≤1决定大小下降的速度,k是算法已经运行的迭代次数k_max是算法停止的迭代次数。相同的公式被用于学习效率(η,ηn)和邻居函数

直到映射停止改变或超出了最大迭代的次数

用权重和输入间的欧氏距离的最小值来选择最匹配的神经元n_b:

(*本文为 AI科技大夲营转载文章转载请联系作者)

}

我要回帖

更多关于 每一步都有 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信