zoukankan      html  css  js  c++  java
  • 降维技术---PCA

    数据计算和结果展示一直是数据挖掘领域的难点,一般情况下,数据都拥有超过三维,维数越多,处理上就越吃力。所以,采用降维技术对数据进行简化一直是数据挖掘工作者感兴趣的方向。

    对数据进行简化的好处:使得数据集更易于使用,降低算法的计算开销,去除噪声,使得结果易懂。

    主成分分析法(PCA)是一种常用的降维技术。在PCA中,数据从原来的坐标系转换到了新的坐标系,新坐标系的选择是由数据本身决定的。第一个新坐标轴选择的是原始数据中方差最大的方向,第二个新坐标轴的选择和第一个坐标轴正交且具有最大方差的方向。

    为什么选择最大方差的方向和方差的正交方向?

    如果想要画出一条直线,使得直线要尽可能多的覆盖坐标轴中的点,在下图中的三条直线中,B直线为最大方差代表的直线,说明覆盖数据信息最多,C直线为B直线的垂线,它是覆盖数据次大差异性的直线。

    PCA的优点:降低数据的复杂性,识别最重要的多个特征。

    PCA的原理:借助于正交变换,将其分量相关的原随机向量转化成其分量不相关的新随机向量。这在代数上表现为将原随机向量的协方差矩阵变换为对角形阵。

    PCA的实现:通过对协方差矩阵进行特征分解,以得出数据的主成分(即特征向量)和权值(即特征值)

    将原始数据转换成前N个主成分的具体实现步骤:

    1.去除平均值

    2.计算协方差矩阵

    3.计算协方差矩阵的特征值和特征向量

    4.将特征值从大到小排序

    5.保留最上面的N个特征向量

    6.将数据转换到上述N个特征向量构建的新空间中

    代码实现

    def PCA(dataMatrix, topNFeature=999):
        meanVals = mean(dataMatrix, axis=0)
        meanRemovedMatrix = dataMatrix - meanVals      #1. remove mean
    
        covMat = cov(meanRemovedMatrix, rowvar=0)      #2. covariance matrix
        eigVals,eigVects = linalg.eig(mat(covMat))     #3. compute matrix eigenvalues and eigenvectors
        eigValInd = argsort(eigVals)                   #4. sort, sort goes smallest to largest
        eigValInd = eigValInd[:-(topNFeature+1):-1]    #5_1 cut off unwanted dimensions
        redEigVects = eigVects[:,eigValInd]            #5_2 reorganize eig vects largest to smallest
        lowDDataMat = meanRemovedMatrix * redEigVects  #6 transform data into new dimensions
        return lowDDataMat
  • 相关阅读:
    Linux更改文件文件夹所属用户组(chgrp)
    Linux服务器查看请求数
    装Office 2010提示Error 1406的解决方法
    实时数据库简介和比较
    敏捷软件开发模型SCRUM【转】
    实时数据库系统
    实时数据库的事务处理
    各浏览器下使用 OBJECT 元素和 EMBED 元素嵌入 Flash 存在差异
    中国煤矿历年事故死亡人数及分析
    实时/历史数据库和关系型数据库的区别
  • 原文地址:https://www.cnblogs.com/zhq1007/p/4873256.html
Copyright © 2011-2022 走看看