盒马唠机器学习之降维算法

        机器学习领域中所谓的降维就是指采用某种映射方法,将原高维空间中的数据点映射到低维度的空间中从而去降低后续算法的计算量。降维的本质是学习一个映射函数 f : x->y,其中x是原始数据点的表达,目前最多使用向量表达形式。 y是数据点映射后的低维向量表达,通常y的维度小于x的维度(当然提高维度也是可以的)。f可能是显式的或隐式的、线性的或非线性的。

        就目前大部分降维算法处理向量表达的数据,也有一些降维算法处理高阶张量表达的数据。之所以使用降维后的数据表示是因为在原始的高维空间中,包含有冗余信息以及噪音信息,在实际应用例如图像识别中造成了误差,降低了准确率;而通过降维,我们希望减少冗余信息所造成的误差,提高识别(或其他应用)的精度。又或者希望通过降维算法来寻找数据内部的本质结构特征。在很多算法中,降维算法成为了数据预处理的一部分,如PCA。事实上,有一些算法如果没有降维预处理,其实是很难得到很好的效果的。

        下图为降维算法的分类:


        我们今天主要来讲线性降维方法,LDA(线性判别分析法)和PCA(主成分分析法)。

线性判别分析(LDA)

        LDA主要用作数据预处理和分类任务,是一种有监督的(supervised)线性降维算法。它关心的是能够最大化类间区分度的坐标轴成分。也就是将特征空间(数据集中的多维样本)投影到一个维度更小的k维子空间中,同时还保留区分类别的信息。

        原理:投影到维度更低的空间中,使得投影后的点,会形成按类别区分,一簇一簇的情况,相同类别的点,将会在投影后的空间中更接近的方法。


数学原理

        我们的目标是找到这个投影公式:


       使得原始数据投影到更低维的空间中并且使得投影后的点,会形成按类别区分,一簇一簇的情况,相同类别的点,将会在投影后的空间中更接近的话。

         如图所示:


        由图我们可以看出LDA分类的一个目标是使得不同类别之间的距离越远越好,同一类别之中的距离越近越好。

        每类样例的均值为:


        投影后的均值为:


        投影后的两类样本中心点尽量分离:

        但是难道我们只需要最大化J(w)就可以了吗?其实不尽然,例如下图:


        很明显X1方向是可以最大化就J(w),可是却分不好,投影后重叠的部分太多了。

        因此我们肯定还有条件没考虑到,我们上面提到不同类别之间的距离越远越好,同一类别之中的距离越近越好。显然我们还需考虑同一类别之中的距离越近越好。

        散列值:样本点的密集程度,值越大,越分散,反之,越集中。

        公式为:


        所以我们的目标函数就可转为:


        将散列值公式展开:

        

        其中将


        称为散列值矩阵。

        将Sw = S1+S2称为类内散布矩阵。由此我们可以得到:


        然后将分子展开:


        其中称为类间散布矩阵。由此我们可以得到最终的目标函数:


        我们只需要求其最大值就OK啦。

        我们首先要对其分母进行归一化:如果分子、分母是都可以取任意值的,那就会使得有无穷解,我们将分母限制为长度为1。

        我们使用拉格朗日乘子法去求最大值:

        

        其中的是等于0的,因为我们上面限定分母等于1了。

        我们最终的结果就是:

   

主成分分析(PCA)

        PCA是降维中最常用的一种手段了,它的目标是基于方差去提取最有价值的信息。那如何选择投影方向(或者是基)才能尽量的保留最多的原始信息呢?

        一种直观的看法是:希望投影后的投影值尽可能分散,也就是投影后尽可能方差最大。我们的目标就变成了寻找一个一维基,使得所有数据变换为这个基上的坐标表示后,方差值最大。

        方差:


        假设均值为0时协方差公式:


        如果单纯只选择方差最大的方向,后续方向应该会和方差最大的方向接近重合。那就没有任何意义了。因此为了让两个字段尽可能表示更多的原始信息,我们是不希望它们之间存在(线性)相关性的。也就是让它们的协方差为0。

        最终的优化目标是:将一组N维向量降为K维(K大于0,小于N),目标是选择K个单位正交基,使
原始数据变换到这组基上后,各字段两两间协方差为0,字段的方差则尽可能大。

        我们看看协方差矩阵:


        矩阵对角线上的两个元素分别是两个字段的方差,而其它元素是a和b的协方差。因此我们将协方差矩阵对角化:即除对角线外的其它元素化为0,并且在对角线上将元素按大小从上到下排列。


        根据特征值的从大到小,将特征向量从上到下排列,则用前K行组成的矩阵乘以原始数据矩阵X,就得到了我们需要的降维后的数据矩阵Y。

        举个栗子:

        数据为:


        其协方差矩阵为:

 

        将其对角化得到:




        所以我们选择方差最大的,也就是特征值最大的特征向量去与原数据进行内积就得到了我们的降维结果。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值