您的位置: 首页 > 生活常识 >

pca是什么意思呢(主成分分析PCA)

100次浏览     发布时间:2024-08-04 09:01:04    

00、背景

比如,要考核一个研发人员,存在多个维度的评价指标,如:交付效率(需求交付周期、开发交付周期、交付吞吐量)、交付质量(线上缺陷密度 、故障恢复时间、首次提测通过率、单元测试覆盖率、代码评审通过率)、交付能力360度反馈等多个维度。那么多维度的数据,该如何计算呢?

降维技术提供了一种方法,它捕获数据中的基本信息,同时丢弃冗余或信息较少的特征。

数据降维,至少有以下几点好处:

  • 使数据集易使用
  • 降低算法计算开销
  • 去除噪声
  • 结果易懂
  • 发现隐性相关变量

降维主要实现技术有很多,比如主成分分析(PCA)线性判别分析(LDA)奇异值分解(SVD)因子分析(FA)独立成分分析(ICA)

其中,PCA 的应用目前最为广泛。

01、什么是PCA?

PCA = 主成分分析(Principal Component Analysis)

PCA是一种数学降维方法, 利用正交变换 (orthogonal transformation)把一系列可能线性相关的变量转换为一组线性不相关的新变量,也称为主成分,从而利用新变量在更小的维度下展示数据的特征。

简单来说,就是找出一个或几个最主要的特征,然后进行分析。

注意:

降维是通过减少数据中的指标以化简数据的过程

这里的减少指标,并不是随意加减,而是用复杂的数理知识,得到几个"综合指标"来代表整个数据。

而这里的综合指标就是所谓的主成分

它不是原来的指标中的任何一个,而是由所有原有指标数据线性组合而来。

02、实现步骤

将数据转换为N个主成分的步骤:

  1. 去除平均值
  2. 计算协方差矩阵
  3. 计算协方差矩阵的特征值和特征向量
  4. 将特征值从小到大排序,保留前N个
  5. 5. 将数据转换到这N个特征向量构建的新空间中

03、优缺点及适用场景

优点降低数据复杂性,识别多个特征缺点可能损失有用信息适用场景数值型数据

04、举例

1、一个简单的测试数据集

1.1 原始数据文件testSet.txt,19K

1.2 打印矩阵长度

1.3 效果图

2、另一个半导体制造数据集

2.1 原始数据:共1567行数据,有590列维度

2.2 打印矩阵长度、数据及均值

2.3 画出方差变化与特征个数的关系图

2.4 得出结论

从方差百分比与主成分个数之间的关系可以看出,大概只需要6个特征,就可以包括大部分的方差,后面的成分并不会损失太多信息。如果保留前6个主成分,则数据集就实现了从590个特征简化到6个特征,实现了近100:1的压缩。

3、完整代码

'''
Author: wujianming
Date: 2023-10-18
'''
import numpy as np 
import matplotlib.pyplot as plt 
from pylab import *
mpl.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

def loadData(filename,delim='\t'):
    fr=open(filename)
    stringArr=[line.strip().split(delim) for line in fr.readlines()]
    dataArr=[list(map(float,line)) for line in stringArr]
    return np.array(dataArr)

# 主成分分析
def pca(dataArr,topN=9999999):
    """
    dataArr为数据集
    topN参数可选,表示应用的N个特征,
    或原数据中全部特征
    """
    meanVal=np.mean(dataArr,axis=0)
    newArr=dataArr-meanVal
    # 协方差矩阵
    covMat=np.cov(np.mat(newArr),rowvar=0)
    eigVal,eigVec=np.linalg.eig(np.mat(covMat))
    index=np.argsort(eigVal)
    index=index[:-(topN+1):-1]
    vecArr=eigVec[:,index]
    lowDataMat=np.mat(newArr)*vecArr
    retDataArr=(lowDataMat*vecArr.T)+meanVal
    return lowDataMat,retDataArr

def load_clear_Data():
    import pandas as pd
    data=pd.read_csv('./secom.data',sep=' ',header=None,index_col=None)
    for i in range(data.shape[1]):
        data[i]=data[i].fillna(data[i].mean(),)    
    dataArr=np.array(data)
    return dataArr

def plot_var(dataMat):
    meanVals = np.mean(dataMat, axis=0)
    meanRemoved = dataMat - meanVals 
    covMat = np.cov(meanRemoved, rowvar=0)
    eigVals,eigVects = np.linalg.eig(np.mat(covMat))
    eigValInd = np.argsort(eigVals)
    eigValInd = eigValInd[::-1]
    sortedEigVals = eigVals[eigValInd]
    total = np.sum(sortedEigVals)
    varPercentage = sortedEigVals/total*100
    fig = plt.figure()
    ax = fig.add_subplot(111)
    ax.plot(range(1, 21), varPercentage[:20], marker='^')
    plt.xlabel('主成分个数')
    plt.ylabel('方差百分比')
    plt.show()

def plot_data(dataArr,reconMat):
    fig=plt.figure()
    ax=fig.add_subplot(111)
    ax.scatter(dataArr[:,0],dataArr[:,1],marker='^',s=90,c='b')
    ax.scatter(np.array(reconMat[:,0]),np.array(reconMat[:,1]),marker='o',s=50,c='r')
    plt.show()

if __name__=='__main__':
    dataArr=loadData('./testSet.txt')
    lowData,reconMat=pca(dataArr,1)
    plot_data(dataArr,reconMat)
    
    dataArr2=load_clear_Data()
    plot_var(dataArr2)

05、小结

为什么主成分可以代表原来那么多的指标呢?

其实我们仔细看一下,原来的许多指标是有相关性的,比如线上缺陷密度与单元测试覆盖率、代码评审通过率等有关联性。

通过降维就可以帮助我们去除这些指标中重叠、多余的信息,把数据最本质和关键的信息提取出来。

相关文章

贷款收入证明盖什么章合适(贷款买房对收入证明的要求是什么?)

1.需要达到总负债月还款的2倍以上;2.按照银行要求的格式进行开具、联系方式需留座机;3.收入证明上需加盖工作单位公章/人事章;4.收入证明不可以有涂改;5.收入证明上大小写金额必须一致;6.收入证明上如果手写必须是黑色签字笔填写;7.收入证明上若体现了有效期,需要在有效期内申请贷款,若没有体现有效
2025-06-07 01:09:05

买基金有什么用吗(投资基金的好处和缺点)

投资基金是投资市场中非常受欢迎的一种方式,它可以帮助您实现投资目标并分散投资风险。然而,与任何投资一样,投资基金也有其优缺点。在本文中,我将讨论投资基金的好处和缺点,以帮助您了解投资基金并作出明智的投资决策。好处:分散风险:投资基金是由许多不同公司的股票和债券组成的,因此,它可以分散风险。即使其中某
2025-06-06 15:51:18

投标是什么意思通俗一点(什么是招投标?招投标概述)

什么是招投标?招标投标也被简称为招投标。招标和投标是一种商品交易的行为,是交易过程的两个方面。招标投标是一种国际惯例,是商品经济高度发展的产物,是应用技术、经济的方法和市场经济的竞争机制的作用,有组织开展的一种择优成交的方式。这种方式是在货物、工程和服务的采购行为中,招标人通过事先公布的采购和要求,
2025-06-06 14:11:10

为什么叫铝合金窗(铝合金系统窗的概念是什么?)

组成一樘完整的门窗各个子系统的所有材料(包括型材、玻璃、五金、密封胶条、辅助配件及配套纱窗),均经过严格的品牌技术标准整合和多次实践的标准化产品,利用专用的加工设备和安装工具,并按照标准的工艺加工和安装的门窗。系统窗不仅仅只是材料成系统,还需要系统技术支持,系统的售后服务。一站式服务的门窗才能真正成
2025-05-09 10:58:47

为什么锡罐放茶叶好(存茶正确的保存方法)

茶,这片神奇的东方树叶,承载着千年的文化积淀。当我们谈论存茶,实则是在探讨如何与时间达成和解。在快节奏的现代生活中,掌握存茶之道不仅是对茶叶的呵护,更是一种生活智慧的体现。让我们走进存茶的世界,探寻那些被忽视的生活哲学。存茶一、存茶:一场与时间的博弈茶叶的保存是一场精密的科学实验。温度、湿度、光线、
2025-05-09 09:16:45

死锁Deadlock怎么传火

《死锁Deadlock》,这款集射击、策略与生存元素于一体的在线游戏,即将揭开其内测的神秘面纱,让无数玩家心中的星际探险梦即将照进现实。对于渴望成为首批踏入这片未知星域的探险者来说,如何获取宝贵的内测资格,怎么传火无疑是当前最为关注的话题。 首先,下载并安装UU加速器,然后在其中搜索《死锁Deadl
2025-05-08 02:56:55

网站内容来自网络,如有侵权请联系我们,立即删除!
Copyright © 蜜柚百科 琼ICP备2023010365号-5