单位向量i的平方等于多少(i的平方t表示什么)

作者:尘埃中的爱

文章:微信微信官方账号数据发THU

【导读】作者用了12000多字总结了自己在学习机器学习过程中遇到的知识点。“入门之后,我才体会到机器学习的魅力和恐怖。”希望正在看这篇文章的你能在机器学习方面有所建树。

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

机器学习:让计算机改进或适应它们的行为,使它们的行为更加准确。那就是从数据中学习,从而做得更好。

引用王宇院士在2008年大会上的一句话,我们假设W是给定世界中有限或无限对象的**,Q是我们能够或能够得到的有限数据,Q是W的一个小的真子集,机器学习是根据世界的样本集计算世界的模型,这样模型对整个世界都成立。

机器学习的两大驱动力:神经**和数据挖掘。

机器学习的分类:

监督学习):提供一个有正确答案的训练集,并基于这个训练集对算法进行泛化,直到所有可能的输入都给出正确答案,这也叫样例学习。无监督学习:在不提供正确答案的情况下,算法试图识别输入之间的相似性,从而将相同的输入归为一类。这种方法叫做密度学习。强化学习:在监督和非监督之间。当答案不正确时,算法被告知,但如何改正是未知的。算法需要在不同的情况下进行探索和实验,直到得到正确的答案。强化学习有时被称为跟着批评者学习,因为他只是给答案打分,而没有给出改进的建议。进化:我们认为生物的进化是一个学习的过程。我们研究如何在计算机中对这个过程建模,采用适应度的概念,相当于对当前解进行评级。(并不是所有的机器学习书籍都包含进化学习。)优点:泛化,能对从未遇到过的输入给出合理的输出。

和回归分类。

机器学习过程:

数据收集和准备、特征选择、算法选择、参数选择和模型选择、训练和评估术语:

输入:输入向量X给出的数据突触作为算法的输入:wij是节点I和节点J之间的加权连接,类似于大脑中的突触,排列成矩阵W输出:输出向量Y,可以有n维。Target:目标向量T,N维,需要等待额外的数据来监督学习,提供算**在学习的“正确答案”维:输入向量数激活函数:对于神经**,G()是一个数学函数,其中神经元的放电及其响应误差描述为一个加权输入:E是根据Y和T计算**不准确性的函数权值空间,当我们的输入数据达到200维时, 由于人类的限制,我们最多只能看到三维投影,而计算机可以抽象出200个相互正交的轴来计算。 神经**的参数是连接神经元和输入的一组权重。比如把神经元的权重看成一组坐标,这就是所谓的权重空间维度的灾难:随着维度的增加,单位超球的体积也随之增加。在2d中,单位超球是一个圆,而在3d中,它被称为超球。更高的维数是Vn=(2/n)*Vn-2,所以当n2时,体积开始。这意味着我们需要更多的数据。当数据达到100多个维度时,单位数据变得极小,进而需要更多的数据,造成维度灾难。尺寸和体积的关系:

机器学习算法测试:

算法的成功在于将预测与恒定目标进行比较,因此我们需要一组新的数据和测试集。

在训练算法时,过度训练会导致过拟合,即拟合曲线与数据完美拟合,但泛化能力丧失。为了检测过度拟合,我们需要用测试集来验证它,这在统计学上称为交叉验证。这是模型选择的一部分:为模型选择正确的参数,以便尽可能地一般化。

对于数据准备,我们需要三组数据集,一组用于训练算法的训练集,一组用于跟踪算法学习效果的验证集,一组用于产生最终结果的测试集。如果数据充足,我们会分成50336025或60336020336020,数据集分布要随机处理。当检查一个块内的数据时,我们将使用流出法或多重交叉检查。

混淆矩阵是对测试结果好坏的分类。用水平和垂直方向上所有可能的类做一个正方形矩阵。(I,j)处的矩阵元素告诉我们有多少模式被放入目标中的类别I。主对角线上的任何东西都是正确答案。主对角线元素之和除以所有元素之和得到的百分比就是精度。

>
准确率指标:真例正确放在1类,假例错误放在1类,而真反例正确放在2类,假反例错误放在2类。

真实情况(TP)假阳性情况(FP)

假反例(FN)真反例(TN)

灵敏度=#TP/(#TP #FN)特异性=#TN/(#TN #FP)精度=#TP

/(#TP+#FP) 查全率=#TP/(#TP+#FN)F1 = 2(查准率查全率)/(查准率+查全率)

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

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

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

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

Cov({xi},{yi})=E({xi} – u)E({yi} – v)

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

1、神经元、神经**和线性判别

1. 鲁棒性

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

2. 神经**

神经**模仿的便是生物学中的神经**,通过输入进而判定神经元激活否。

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

3. Hebb法则

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

4. McCulloch和Pitts神经元

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

5. 感知器

▲感知器神经**

权重更新规则

Wij <- Wij – n(yi – ti)*xi

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

感知器学习算法

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

初始化

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

训练

对T次循环

对每一个输入向量:

利用激活函数g计算每一个神经元j的激活状态:

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

再现

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

6. 线性可分性

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

7. 感知器收敛定理

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

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

8. 数据项预处理

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

9. 线性回归

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

2、 维度简约

1. 降维的三种算法

特征选择法:仔细查找可见的并可以利用的特征而无论他们是否有用,把它与输出变量关联起来特征推导法:通过应用数据迁移,即通过可以用矩阵来描述的平移和旋转来改变图标的坐标系,从而用旧的特征推导出新的特征,因为他允许联合特征,并且坚定哪一个是有用的,哪一个没用聚类法:把相似的数据点放一起,看能不能有更少的特征

2. 特征选择方法

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

主成分分析(PCA)

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

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

具体算法

写成N个点Xi=(X1i,X2i,… xXi)作为行向量。

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

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

计算协方差阵C= 1/N *B^TB。

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

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

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

3. 基于核的PCA算法

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

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

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

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

4. 因素分析

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

5. 独立成分分析(ICA)

统计成分是独立的,即对于E[bi,bj] = E[bi]E[bj]与及bi是不相关的。

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)

7. 多维标度算法

计算由每对点平方相似度组成的矩阵D, Dij=|xi-xj|.计算J=IN – 1/N (IN是N*N单位矩阵,N是数据点个数)。

计算B=-1/2JDJ^T.

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

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

计算嵌入x=pv^0.5

8. ISOMAP算法

创建所有点对之间的距离

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

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

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

3、 概率学习

1. 期望最大算法(EM)

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

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

初始化

设置

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

设置

(这里

是整个数据集的平均值)

设置

=0.5

迭代直到收敛:

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

初始化

猜测参数

迭代直到收敛:

4. 信息准则

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

艾卡信息准则:AIC = ln(C)-k贝叶斯信息准则:BIC = 2ln(C)-klnN

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

5. 奥卡姆剃刀

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

6. 最近邻法

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

7. 核平滑法

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

8. KD-Tree

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

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

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

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

(因为内容较多,进行了文章删减,阅读全文可以通过点击下方“了解更多”进行浏览)