精华内容
下载资源
问答
  • 层次分析法(AHP)

    千次阅读 2021-03-16 17:12:26
    层次分析法的原理,层次分析法根据问题的性质和要达到的总目标,将问题分解为不同的组成因素,并按照因素间的相互关联影响以及隶属关系将因素按不同的层次聚集组合,形成一个多层次的分析结构模型,从而最终 使问题...

    1.问题的提出

    日常生活中有很多的决策问题。决策是指在面临多种方案时需要依据一定的标准选择某一种方案。日常生活中有许多决策的问题。比如:

    • 买钢笔,一般要依据质量、颜色、实用性、价格、外形等方面的因素选择某一支钢笔。
    • 假期旅游,是去风光秀丽的苏州,还是去迷人的北戴河,或者是去山水甲天下的桂林,那一般会依据景色、费用、食宿条件、旅途等因素来算着去哪个地方。

    面临各种各样的方案,要进行比较、判断、评价、直至最后的决策。这个过程中都是一些 主观的因素,这些因素可能由于个人情况的不同,有相应不同的比重,所以这样主观因素给数学方法的解决带来了很多的不便。

    2.AHP

    简单介绍一下什么是AHP?

    层次分析法,简称AHP,它是一种 运筹学理论 。是指将与决策总是有关的元素分解目标、准则、方案 等层次,在此基础之上进行定性和定量分析的决策方法。

    “该方法是美国运筹学家匹茨堡大学教授萨蒂于20世纪70年代初,在为美国国防部研究”根据各个工业部门对国家福利的贡献大小而进行电力分配”课题时,应用网络系统理论和多目标综合评价方法,提出的一种 层次权重决策分析方法。”

    层次分析法(Analytic Hierarchy Process,AHP)这是一种定性和定量相结合的、系统的、层次化的分析方法。这种方法的特点就是在对复杂决策问题的本质、影响因素及其内在关系等进行深入研究的基础上,利用较少的定量信息使决策的思维过程数学化,从而为多目标、多准则或无结构特性的复杂决策问题提供简便的决策方法。是对难以完全定量的复杂系统做出决策的模型和方法

    层次分析法的原理,层次分析法根据问题的性质和要达到的总目标,将问题分解为不同的组成因素,并按照因素间的相互关联影响以及隶属关系将因素按不同的层次聚集组合,形成一个多层次的分析结构模型,从而最终 使问题归结为最低层(供决策的方案、措施等)相对于最高层(总目标)的相对重要权值的确定或相对优劣次序的排定

    所以,AHP理论本质是通过把一个复杂的问题拆解为多个目标或准则,并且通过定性量化的方式为每个目标进行赋权的一个过程。

    简单来说AHP就是拆解加赋权,下面详细讲一下过程。
    层次分析法的步骤,运用层次分析法构造系统模型时,大体可以分为以下四个步骤:

    • 建立层次结构模型;
    • 构造判断(成对比较)矩阵;
    • 层次单排序及其一致性检验;
    • 层次总排序及其一致性检验;

    3.层次分析法的基本步骤

    将决策的目标、考虑的因素(决策准则)和决策对象按他们之间的相互关系分成最高层、中间层和最低层,绘制层次结构图。

    1.最高层(目标层):决策的目的、要解决的问题;
    2.中间层(准则层或指标层):考虑的因素、决策的准则;
    3.最低层(方案层):决策时的备选方案;

    3.1 建立层次结构模型

    在这里插入图片描述

    3.2 构造判断矩阵

    什么是判断矩阵?

    判断矩阵就是以参与指标计算的所有ferture组成的一个方阵,并且给出两两“比较量化值”。举例如下:

    对于A和B两个因子,1表示:A和B一样重要;3表示:A比B重要一些;5表示:A比B重要;7表示:A比B重要的多;9表示:A比B极其重要,具体标准如下图所示:

    因素i比因素j量化值
    同等重要1
    稍微重要3
    较强重要5
    强烈重要7
    极端重要9
    l两相邻判断的中间值2,4,6,8

    这其实就是一个典型的小组投票的过程,通过在方阵行列元素的两两比较,最终可以生成一个判断矩阵。比如对于有 A,B,C,D四个feature(分别代表钱,人员,时间,其它) 的判断矩阵如下图所示:

    ABCD
    A1.002.005.004.00
    B0.501.001.671.33
    C0.200.601.000.80
    D0.250.751.251.00

    3.3 层次单排序及一致性检验

    所谓一致性校验是指在进行投票的时候的公平性和一致性。
    比如你认为A比B重要,B比C重要,但是从最后的结果来看是C比A重要,这样即为不一致。
    一致性校验是通过计算校验系数来实现的,通常用CR来表示,小于0.1即表示一致性校验通过。

    CR包含一致性指标(CI)和随机一致性指标(RI)两部分,CR=CI/RI。

    CI和RI是一个固定值,与矩阵的阶数有关。
    一致性校验是通过计算校验系数来实现的,通常用CR来表示,小于0.1即表示一致性校验通过。

    1.模拟
    用EXCEL来进行计算(这里用三个参数来模拟
    在这里插入图片描述
    构建判断矩阵A(正交矩阵),用aij表示第i个因素相对于第j个因素的比较结果:

    在这里插入图片描述
    2.计算权重:
    将矩阵A的各行向量进行几何平均(方根法),然后进行归一化,即得到各评价指标权重和特征向量W:

    在这里插入图片描述

    3.一致性检验:

    在这里插入图片描述
    这里的n是指矩阵的维度

    • CI = 0,有完全的一致性;
    • CI 接近于0,有满意的一致性;
    • CI越大,不一致越严重;
      为了衡量 CI的大小,引入随机一致性指标 RI。方法为随机构造500个成对比较矩阵

    定义一致性比率:
    [公式]
    RI系数如下表格

    矩阵阶数34567891011
    RI0.51490.89311.11851.24941.34501.42001.46461.491.51

    一般,当一致性比率CR < 0.1 时,认为A的不一致程度在容许的范围之内,有满意的一致性,通过一致性检验,可用其归一化特征向量作为权向量,否则要重新构造成对比较矩阵A,对 其 加以调整。

    4.计算公式
    各列键入公式:

    按行相乘:F3=PRODUCT(C3:E3),下拉至F5。

    开n次方:G3=POWER(F3,1/3),下拉至G5;G6=SUM(G3:G5)。

    权重wi:H3=G3/G$6,下拉至H5。

    AWi:I3=C3H$3+D3H$4+E3*H$5,下拉至I5。

    AWi/wi:J3=I3/H3,下拉至J5;J6=AVERAGE(J3:J5)。

    CI:K3=(J6-3)/2。

    CR:L3=K3/0.5149

    5.进行计算

    在这里插入图片描述
    6.结束
    通过进行小组投票和自动计算,最终CR的值为0.03706,因此一致性检验通过

    权重Wi列即为每个feature的权重,因此最终我们可以得出该指标的计算公式为:

    target = A * 0.1047 + B * 0.6369 + c * 0.2582

    完美解决!

    4.总结

    大家这里或许会有个疑问:

    采用AHP的方法进行赋权,小组投票阶段是主观判断重要性的,所以是不是会带来误差?

    会,一定会。

    不过 策略一定是建立在业务之上的,撇开业务谈策略都是伪策略。

    采用AHP模型进行多因子赋权,

    需要对该业务有足够的了解,更需要对该target下的多个feature有 足够的了解 ,哪个对于target的贡献度是最大的。

    比如对于一个商品,什么样的商品是用户喜欢的?用户喜欢的商品有哪些feature?每个feature对于用户喜欢的贡献程度是什么样的?这些都是需要业务经验参与的。

    如果说科学的方法都有一个前提假设,那么AHP也有一个前提,就是 先了解业务,再谈策略

    以上,希望能帮助到大家。
    在这里插入图片描述

    本公众号分享自己从程序员小白到经历春招秋招斩获10几个offer的面试笔试经验,其中包括【Java】、【操作系统】、【计算机网络】、【设计模式】、【数据结构与算法】、【大厂面经】、【数据库】期待你加入!!!

    1.计算机网络----三次握手四次挥手
    2.梦想成真-----项目自我介绍
    3.你们要的设计模式来了
    4.震惊!来看《这份程序员面试手册》!!!
    5.一字一句教你面试“个人简介”
    6.接近30场面试分享
    7.你们要的免费书来了

    展开全文
  • 你是不是觉得,平时做的日、周、月、季、年报没啥用?每天麻木地更新,发出来也没人看,需要数的时候还是临时取数?答:因为光有数据,没用配解读数据的方法!数字要读出含义才有价值。结构分析法...

    你是不是觉得,平时做的日、周、月、季、年报没啥用?

    每天麻木地更新,发出来也没人看,需要数的时候还是临时取数?

     

    答:因为光有数据,没用配解读数据的方法!

     

    数字要读出含义才有价值。结构分析法,就是解读数据的一种简单、快捷的方法,也是数据分析师的祖传手艺,今天我们系统讲解一下。

     1 

    从人见人厌的平均数说起

    人们天生讨厌平均数,总觉得用平均数很扯淡,有种:“我和姚明平均身高,有毛用”的感觉。但是反问:为啥平均数这么不好用,但是大家还喜欢用呢?

     

    因为:方便。

    举个最简单的例子:

    已知1:客户需要5万件产品

    已知2:生产线平均每天生产5千件

    问:需要生产几天

    答:10天

     

    虽然可能实际上是一天4879件,但是无所谓,这点偏差并不影响整体决策。用平均数来计算数量,安排人力物力,分配资源预计进度,都是很方便的。特别是在供应链一侧,生产能力、物资消耗、配送时间,是相对固定的,波动不大。因此非常好用。

     

    但在营销侧,情况就变了。

    营销侧更流行二八法则

    20%客户贡献80%收入

    20%产品创造80%利润

    20%销售赢得80%订单

    这种情况非常普

     

    因此,当业务数据很均衡、稳定的时候,可以直接上平均数,当业务数据分布差异巨大的时候,就得看分布结构了,这就是结构分析法的起源:去平均化,发现内部问题(如下图)

     2 

    结构分析法如何做

    结构分析法的做法:

    第一步:明确对象。要观察结构的目标,是用户、商品、渠道、产品……选好目标。

    第二步:找到指标。比如已选定观察用户,再定清楚,要观察的是用户的付费、活跃、注册时间、区域分析……哪个指标。这里特备要杜绝面面俱到。整的太复杂,不但提取数据很麻烦,看数据的人也没心思看。最好抓核心指标。 

    第三步:分层观察。一讲到观察,做数据的同学们习惯性想到箱型图。没错,箱型图是观察结构的方法——但是业务部门看不懂呀。想要解放人力,方法越直观越好。因此推荐用下边两种分法,一眼就看明白。  

    第四步:总结形态。还拿用户结构举例,我们的用户是大R型,还是大DAU型。直接决定了后续运营方向:是继续大量淘沙,还是小火慢炖,服务好大多数人。

     

    同时,如果已经有业务上的标杆,标杆的结构,可以作为判断依据。

    ● 我们希望发展高端用户,所以A类用户占比必须到20%

    ● 我们的标杆门店,A类用户占比就是20%,所以其他店也要做到20%!

    ● 我们的商业模式就是大浪淘沙,所以每批新用户中A类用户占比必须为20%

     

    这种简单直接的判断,对于提高日常报表使用率,非常有用!

     3 

    结构分析法如何用

    使用场景1:快速理解陌生的用户/商品/渠道情况。

    ● 比如实体企业,到一个地方巡店,看客户结构,看商品陈列比例

    ● 比如互联网企业,看渠道流量时间分布,看转化人数

    都是只用几个指标,能快速反推整体情况,发现问题,这样的工作效率非常高。

      

    使用场景2:监测用户/商品/渠道健康度变化

    ● 对稳定的业务而言,没事发生就是好事,稳定的结构代表问题不大

    ● 对新增业务而言,越快贴近理想结构,发展越好

    这样有了明确的标准,就不会因为短期波动而纠结,集中精力办大事。

     

    使用场景3:监测重大政策上线效果

    ● 对内部观察:是否政策起到正向推动

    ● 对外部观察:是否引发关键群体的波动

    这样能利用常规报表,快速锁定问题点,后续也不用拖一堆无关维度出来交叉交叉再交叉,应急的时候响应速度更快。

    以上工作完全可以靠常规报表搞掂,不需要临时取数,不需要额外占用数据分析师的时间。因此非常好使唤。

     4 

    小结

    类似的方法,还有矩阵分析法、趋势分析法、漏斗分析法。这些方法的共同点,就是:用一组有逻辑的指标,树立清晰的标杆,长期监控业务变化,从而快速得出结论。这些方法再和报表结合,就能极大提升工作效率。业务部门能定位到问题,数据分析师能解放工作量,这样才能做更深入的分析。

     

    有趣的是,现在市面上流行的做法:

    问:你要怎么分析DAU下降30%呀

    答:从基本特征、来源渠道,DOU/DNU等等维度拆拆拆,肯定能拆到某两个柱子差异好大,就是它了。

     

    这样的做法是很有问题的。

    • 只看时间点,不看走势

    • 只看重大变化,不看细微发展

    • 不找关键维度,闭着眼一个个试

    • 不用固定指标,非整一堆细节指标

     

    这样只会增加大量无效劳动,让业务养成“不看报表,只打电话”的坏习惯。

    • “喂,为啥又涨了呀”

    • “喂,为啥又跌了呀”

    • “喂,为啥涨了又跌呀”

    • “喂,为啥跌了又涨又跌呀”

    • ……

    每天忙着处理这种琐碎问题,啥深入分析,啥建模都别想了。

     

    所以想解放精力,就得把监测体系建好,多利用这种短平快的小方法,多利用固定指标体系和查找机制,这样才能高效率运转。

    40000+条内衣数据,发现了罩杯的秘密...

    10大Python数据可视化库!

    欢迎长按扫码关注「数据不吹牛」

    
    
    展开全文
  • 以家庭为分析对象,用现在出行的发生、吸引率求得将来的发生、吸引交通量。 各类家庭单位时间内的平均出行次数称为出行率 假设: (1)同一类型的家庭的出行率基本相等 (2)一定时期内出行率是稳定的 (3)家庭规模...

    以家庭为分析对象,用现在出行的发生、吸引率求得将来的发生、吸引交通量。

    各类家庭单位时间内的平均出行次数称为出行率

    假设:
    (1)同一类型的家庭的出行率基本相等
    (2)一定时期内出行率是稳定的
    (3)家庭规模的变化很小
    (4)收入与车辆拥有量总是增长的

    数学模型:
    P i = ∑ k a k N k i = N i ∑ k a k γ k i P_i=\displaystyle\sum_{k} a_k N_{ki}=N_i\displaystyle\sum_{k} a_k \gamma_{ki} Pi=kakNki=Nikakγki

    • P i P_i Pi i i i分区规划年单位出行产生量
    • a k a_k ak:第 k k k类家庭的出行率
    • N k i N_{ki} Nki i i i分区规划年第 k k k类家庭的数目
    • N i N_i Ni i i i分区规划年家庭的总数目
    • γ k i \gamma_{ki} γki i i i分区规划年第 k k k类家庭的比例

    示例

    某城市的交通规划将家庭划分为27类:

    • 车辆拥有:1,2,>=3
    • 人口:2,3,>=4
    • 收入:H(高),M(中),L(低)

    小区未来规划年的居民:

    • 8000户
    • 每类家庭比例

    在这里插入图片描述
    括号外的数据是第 k k k类家庭的出行率,括号内的数据是第 k k k类家庭的比例

    预测该小区的出行产生量为:
    P i = ∑ k a k N k i = N i ∑ k a k γ k i = 34678 P_i=\displaystyle\sum_{k} a_k N_{ki}=N_i\displaystyle\sum_{k} a_k \gamma_{ki}=34678 Pi=kakNki=Nikakγki=34678

    聚类分析法的优点

    (1)直观、容易理解。人们容易接受出行发生与住户特性关系的观念,不像回归分析那样必须了解相关性、参数值等因素。
    (2)资料的有效利用。从现有的OD调查中就可以获得完整的资料,即便没有,也可通过小规模调查得到。
    (3)容易检验与更新。出行率很容易通过小规模调查与小区的特性分析而校验其正确性。
    (4)可以适用于各种研究范围。由于出行发生基于住户的特性,出行吸引基于土地利用特性,因此,其出行、吸引率可以用于各种范围研究,如区域规划、运输通道规划和新区规划。

    聚类分析法的缺点

    (1)每一横向分类的小格中,住户彼此之间的差异性被忽略。
    (2)因各小区的样本数不同,得到的出行率用于预测时,无法保证各小区具有同样的精确度。
    (3)同一类变量类别等级的确定凭个人主观,失之客观。
    (4)当本方法用于预测时,每一小格规划年的资料预测将是一项繁杂的工作。

    展开全文
  • PCA(主成分分析法)原理以及应用+代码实现

    千次阅读 多人点赞 2021-03-03 10:22:39
    PCA应用的范围很广因此很有必要要学习,原理肯定还是数学证明,在特征工程上经常使用。希望读者看完能够提出错误或者看法,博主会长期维护博客做及时更新。纯分享,希望大家喜欢。 一、为什么需要PCA?(为什么要...

     


    前言

    PCA多用于对数据特征集进行降维,也方便对数据集进行可视化操作,说白了最后进行结果展示那么多特征向量要一起表示的话肯定很难展示,超过三维的数据就很难展示了。而PCA可对特征集进行简化,通俗的来讲也就是合并好理解。PCA应用的范围很广因此很有必要要学习,原理肯定还是数学证明,在特征工程上经常使用。希望读者看完能够提出错误或者看法,博主会长期维护博客做及时更新。纯分享,希望大家喜欢。

    强烈推荐大家看看这篇Python机器学习笔记:主成分分析(PCA)算法,写的很详细很好。

     

    一、为什么需要PCA?(为什么要降维)

    在各个领域进行数据收集或是数据采样时往往都是存在多个指标或是特征用来表示某一现象或是用来作评估好坏。但是庞大的数据量难以展示,对多维数据分析的难度很大。更重要的是在多数情况下,许多变量之间可能存在相关性,从而增加了问题分析的复杂性,同时对分析带来不便。如果分别对每个指标进行分析,分析往往是孤立的,而不是综合的。盲目减少指标会损失很多信息,容易产生错误的结论。

    我们常常用二维模型来进行结果展示,通常进行展示的数据都是二维数据,但是想象一下对于四维以及四维以上的数据我们该如何进行展示?

    例如我们要对地铁拥堵情况进行评估和展示,对于评估地铁拥堵情况,我们将采用

    日期天气情况湿度风级降水量体感温度节假日波动系数突发事件客流量


    这九个指标进行预测地铁拥堵情况。我们通常在一张坐标轴上进行效果展示从而进行分析,但在对这些多维数据进行展示的话我们寻常的展示效果图肯定展示不出来。数据往往拥有超出显示能力的更多特征。数据显示并非大规模特征下的唯一难题,对数据进行简化还有如下一系列的原因:

    • 使得数据集更容易使用;
    • 降低很多算法的计算开销;
    • 去除噪声;
    • 使得结果容易理解;

    在已标注与未标注的数据上都有降维技术。这里我们将主要关注未标注数据上的降维技术,该技术同时也可以应用于已标注的数据。

    而在数据特征工程降维技术中,PCA的应用目前最为广泛。

    二、PCA简介

    主成分分析法(PCA)是设法将原来变量重新组合成一组新的相互无关的几个综合变量,同时根据实际需要从中可以取出几个较少的总和变量尽可能多地反映原来变量的信息的统计方法叫做主成分分析或称主分量分析,也是数学上处理降维的一种方法。主成分分析是设法将原来众多具有一定相关性(比如P个指标),重新组合成一组新的互相无关的综合指标来代替原来的指标。通常数学上的处理就是将原来P个指标作线性组合,作为新的综合指标。

    在数学上更简单的理解我们可以把它想象为对很多个坐标点通过映射方法到一根函数直线上。通过这种方法我们肯定会得到新的特征用来表示这个事件,新的特征剔除了原有特征的冗余信息,因此更有区分度。新的特征基于原有特征,它能够重建原有特征。主成分分析要保留最有可能重建原有特征的新特征,从而达到数据降维的作用。

    例如我们得到了一个二维数据集,里面一个标签仅仅只用两个(x1,x2)特征就能表示,但是我们只能用一个特征去描述这件事。在原始的x1,x2坐标轴上,我们无论删掉x1或者是x2我们都不能完整的表达出这个点来。但是我们可以通过PCA,将数据从原来的坐标系转换到了新的坐标系,新坐标系的选择是由数据本身决定的。第一个新坐标轴选择的是原始数据中方差最大的方向,第二个新坐标轴的选择和第一个坐标轴正交且具有最大方差的方向。该过程一直重复,重复次数为原始数据中特征的数目。就通过该数据集(x1,x2),我们通过该方法构建出(y1,y2)坐标系,在该坐标系中我们可以发现数据基本都集中在y1轴上面,而y2这条短轴上则差距很小。在极端的情况,短轴如果退化成一点,那只有在长轴的方向才能够解释这些点的变化了;这样,由二维到一维的降维就自然完成了。

    三、PCA算法推导

    要详细了解PCA算法原理还是需要一定的数学基础的,不是那么容易理解推导出来的。但是可以尽可能的简化推导过程,但是还是有必须清楚掌握的数学知识。

    1.投影

    首先我们知道在笛卡尔直角坐标系中上面的点都可以用一个二维向量表示。当然如果是n维向量可以等价表示为n维空间中的一条从原点发射的有向线段,只不过就是很那表示。假设我们就在二维笛卡尔直角坐标系中,有

    A(x1,y1),B(x2,y2),那么在二维平面上A和B可以用两条发自原点的有向线段表示,如下图:

    我们知道垂线与B的交点叫做A在B上的投影,再假设A与B的夹角为a,则投影的矢量长度为(这里假设向量B的模为1)|A|cos(a).

    |A|就是A点的模,也就是A线段的标量长度。

    而且我们知道:A\cdot B=|A||B|cos(a)

    如果B向量的模为1的话,我们就可以发现得到A\cdot B=|A|cos(a).

    2.基

    一个二维向量可以对应二维笛卡尔直角坐标系中从原点出发的一条有向线段,对于(x1,x2)来说,那么他们对应的坐标轴就是:

    我们假设有一点(3,2),而它对应的向量就为从原点到(3,2)的有向线段,而我们知道该向量在轴上的投影值3,在y轴上的投影值为2。我们设该点为A

    x轴上:x\cdot A=|A||x|cos(a),而在x轴上我们可以设它的模为1,x可为(1,0).

    y轴上:y\cdot A=|A||y|cos(a),而在y轴上我们可以设它的模为1,y可为(1,0).

    经过简单的数学变换,向量(x1,x2)实际上表示线性组合:

    不难证明所有二维向量都可以表示为这样的线性组合,此处(1,0)(0,1)叫做二维空间的一组基。

    所以,要准确描述向量,首先要确定一组基,然后给出基所在的各个直线上的投影值,就可以了,只不过我们经常省略第一步,而默认以(1,0)(0,1)为基。

    当然我们也可以以其他向量为基底,(1,1)(1,1)(1,-1)也可以成为一组基。

    一般来说,我们希望基的模是1,因为从内积的意义可以看到,如果基的模式1,那么就可以方便的用向量点乘基而直接获得其在新基上的坐标了!实际上,对应于任何一个向量我们总可以找到其同方向上模为1的向量,只要让两个分量分别除以模就好了,例如上面的基就可以变为:(1/\sqrt{2},1/\sqrt{2}),(1/\sqrt{2},-1/\sqrt{2})

    现在我们想获得(3,2)在新基上的坐标,即在两个方向上的投影矢量值,那么根据内积的几何意义,我们只要分别计算(3,2)和两个基的内积,不难得到新的坐标为((5/ \sqrt{2}, -1/\sqrt{2} ) )。

    3.基变换的矩阵表示

    (3,2)变换为新基上的坐标,就是用(3,2)与第一个基做内积运算,作为第一个新的坐标分量,然后用(3,2)与第二个基做内积运算,作为第二个新坐标的分量。实际上,我们可以用矩阵想成的形式简洁的表示这个变换:

    那么对于多个二维向量,例如(1,1),(2,2),(3,3)想变换到刚才那组基上,则可以变为这样:

    一般地,如果我们有M个N维向量,想将其变换为由R个N维向量表示的新空间中,那么首先将R个基按照行组成矩阵A,,然后将向量按照列组成矩阵B,那么两个矩阵的乘积AB就是变换结果,其中AB的第m列为A中的第M列变换后的结果。

      数学表示为:

    特别要注意的是,这里R可以小于N,而R决定了变换后数据的维数,也就是说,我们可以将一个N维数据变换到更低维度的空间中去,变换后的维度取决于基的数量,因此这种矩阵相乘的表示也可以表示为降维变换。 

    4.方差

    现在我们知道可以通过将原始矩阵(特征集)通过投影的方式映射到不同的基底上从而构建新的特征,经过变换后达到降维的目的。而现在我们要知道如何选择正确的基底来帮助我们降维。

    我们知道要使得向量经过投影之后更具有区分性,经过投影后要尽可能的分散。而这种分散程度,可以用数学上的方差来表述。

    此处,一个字段的方差可以看做事每个元素与字段均值的差的平方和的均值,即:

    但如果每一次计算方差都要减去一个字段均值显然更加累赘。我们可以通过对数据的预处理使得字段的均值为0,例如我们的数据由五条记录组成,将它们表示为矩阵形式:

    我们通过减去均值得到:

    这样的话\mu就为0了,因此方差可以直接用每个元素的平方和除以元素个数表示:

    于是上面的问题被形式化表示为:寻找一个一维基,使得所有数据变换为这个基上的坐标表示后,方差值最大。

    5.协方差

    上述方法只能解决二维到一维的降维,但是对于多维数据我们第一步选择方差最大化的降第一维方式,那么我们第二步该如何选择呢?

    如果我们还是单纯的只选择方差最大的方向,很显然,这个方向与第一个方向应该是“几乎重合在一起”,显然这样的维度是没有用的,因此应该有其他约束条件。

    数学上可以用两个字段的协方差表示其相关性

    • 是一种用来度量两个随机变量关系的统计量。
    • 只能处理二维问题。
    • 计算协方差需要计算均值。

    由于已经让每个字段均值为0,则:

    可以看出,在字段均值为0的情况下,两个字段的协方差简洁的表示为其内积除以元素数m。协方差的绝对值越大,则二个变量相互影响越大。

    当协方差为0时,表示两个字段完全独立,为了让协方差为0,我们选择第二个即时只能在与第一个基正交的方向上选择。因此最终选择的两个方向一定是正交的。

      至此,我们得到了降维问题的优化目标:将一组N维向量降维k维(K大于0,小于N),其目标是选择K个单位(模为1)正交基,使得原始数据变换到这组基上后,各字段两两间协方差为0,而字段的方差则尽可能大(在正交的约束下,取最大的k个方差)。

    然后我们用X乘以X的转置,并乘上系数1/m:

    这时候我们会发现,这个矩阵对角线上的两个元素分别是两个字段的方差,而其他元素是a和b的协方差,两者被统一到了一个矩阵的。

    根据矩阵相乘的运算法则,这个结论很容易被推广到一般情况:

    设我们有m个n维数据记录,将其按列排成n乘m的矩阵X,设C= 1/m*X*XT,则C是一个对称矩阵,其对角线分别是各个字段的方差,而第l行j列和j行i列元素相同,表示i和j两个字段的协方差。

    6.协方差矩阵

     假设我们只有a和b 两个字段,那么我们将他们按行组成矩阵X:

    •  协方差矩阵能处理多维问题;
    •  协方差矩阵是一个对称的矩阵,而且对角线是各个维度上的方差。
    •  协方差矩阵计算的是不同维度之间的协方差,而不是不同样本之间的。
    •  样本矩阵中若每行是一个样本,则每列为一个维度,所以计算协方差时要按列计算均值。

     如果数据是3维,那么协方差矩阵是:

    7.特征值与特征向量

    对于Ax=\lambda x也可以写作:

    8.协方差矩阵对角化

    设原始数据矩阵X对于的协方差矩阵为C,而P是一组基按行组成的矩阵,设Y=PX,则Y为X对P做基变换后的数据,设Y的协方差矩阵为D,我们推导一下D与C的关系:

    其实到这里快差不多了,优化目标变成了寻找一个矩阵P,满足PCPT是一个对角矩阵,并且对角元素按照从大到小依次排列,那么P的前K行就是要寻找的基,用P的前K行就是要寻找的基,用P的前K行组成的矩阵乘以X就使得X从N维降到了K维并满足上述优化条件。

    协方差矩阵C是一个对称矩阵,在线性代数上,实对称矩阵有一系列非常好的性质:

    1. 实对称矩阵不同特征值对应的特征向量必然正交。
    2. 设特征向量 λ 重数为r,则必然存在r个线性无关的特征向量对应于 λ,因此可以将这r个特征向量单位正交化。

    一个n行n列的实对称矩阵一定可以找到n个单位正交特征向量,设这n个特征向量为e1, e2, ...en,我们将其按照列组成矩阵:

     则对协方差矩阵C有如下结论:

    其中 Λ 为对称矩阵,其对角元素为各特征向量对应的特征值(可能有重复)。

    到这里,我们发现我们已经找到了需要的矩阵P:

    P是协方差矩阵的特征向量单位化后按照行排列出的矩阵,其中每一行都是C的一个特征向量,如果设P按照 Λ 中特征值从大到小,将特征向量从上到下排列,则用P的前K行组成的矩阵乘以原始数据矩阵X,就可以得到我们需要的降维后的数据矩阵Y。

    至此,我们完成了整个PCA的数学原理讨论。

    四、PCA运用流程

    • 1) 将原始数据按列组成n行m列矩阵X
    • 2)将X的每一行(代表一个属性字段)进行零均值化(去平均值),即减去这一行的均值
    • 3)求出协方差矩阵  C= 1/m*X*XT  
    • 4)求出协方差矩阵的特征值及对应的特征向量
    • 5)将特征向量按对应特征值大小从上到下按行排列成矩阵,取前k行组成矩阵P(保留最大的k各特征向量)
    • 6)Y=PX 即为降维到K维后的数据

    将数据转换成前N个主成分的伪代码大致如下:

    去除平均值
    计算协方差矩阵
    计算协方差矩阵的特征值和特征向量
    将特征值从大到小排序
    保留最上面的N个特征向量
    将数据转换到上述N个特征向量构建的新空间中
    from numpy import *
     
     
    #从一个文本文件中读入一个数据集,数据集示例如下:
    '''
    8.805945	10.575145
    9.584316	9.614076
    11.269714	11.717254
    9.120444	9.019774
    7.977520	8.313923
    '''
     
    def loadDataSet(fileName, delim='\t'):
        fr = open(fileName)
        stringArr = [line.strip().split(delim) for line in fr.readlines()]
        datArr = [map(float,line) for line in stringArr]
        return mat(datArr)
     
    	
    #基于numpy实现pca算法	
    def pca(dataMat, topNfeat=9999999):                           #原数据  m*n
        meanVals = mean(dataMat, axis=0)                          #均值:1*n
        meanRemoved = dataMat - meanVals 			              #去除均值  m*n
        covMat = cov(meanRemoved, rowvar=0)                       #协方差矩阵 n*n
        eigVals,eigVects = linalg.eig(mat(covMat))				  #特征矩阵  n*n
        eigValInd = argsort(eigVals)            #将特征值排序
        eigValInd = eigValInd[:-(topNfeat+1):-1]  #仅保留p个列(将topNfeat理解为p即可)   
        redEigVects = eigVects[:,eigValInd]       # 仅保留p个最大特征值对应的特征向量,按从大到小的顺序重组特征矩阵n*p
        lowDDataMat = meanRemoved * redEigVects		#将数据转换到低维空间lowDDataMat: m*p
        reconMat = (lowDDataMat * redEigVects.T) + meanVals    #从压缩空间重构原数据reconMat:  m*n
        return lowDDataMat, reconMat

     


    参阅:

    Python机器学习笔记:主成分分析(PCA)算法

    https://baike.baidu.com/item/%E4%B8%BB%E6%88%90%E5%88%86%E5%88%86%E6%9E%90/829840?fromtitle=%E4%B8%BB%E6%88%90%E5%88%86%E5%88%86%E6%9E%90%E6%B3%95&fromid=2652206&fr=aladdin

    PCA原理

    均值,方差,协方差,协方差矩阵,特征值,特征向量

    https://blog.csdn.net/wiborgite/article/details/83513234

    展开全文
  • 主成分分析法由Pearson在1901年提出,是一种常用的降维方法,可以将维数高的样本转化成维数低的样本。在金融领域,常用于各种多因子模型中,将原有多个指标转化为互不相关的少量综合指标。从数学角度来说,主成分...
  • 原标题:非常实用的工具和方法:故障树分析法(FTA)档即用网www.downjy.com向您分享如下的“FTA故障树分析”的知识。原版文档下载方法参照文章底部说明~1‍‍故障树的基本认识故障树:用以表明产品哪些组成部分的故障...
  • 小信号分析法重点笔记开关电源的反馈环路设计是开关电源设计的一个非常重要的部分,它关系到一个电源性能的好坏。要设计一个好的环路,必须要知道主回路的数学模型,然后根据主回路的数学模型,设计反馈补偿环路。...
  • 目录引言 11 人脸识别技术 21.1人脸识别的研究内容 21.1.1人脸检测(Face Detection) 21.1.2人脸表征(Face Representation) 21.2几种典型的人脸识别方法 31.2.1基于几何特征的人脸识别方法 31.2.2基于K-L变换的特征脸...
  • 因子分析matlab

    2021-04-24 23:15:22
    分析表 Matlab实现 §2 双因素方差分析 2.1 2.2 2.3 2.4 数学模型 无交互影响的双因素方差分析 有交互影响的双因素方差分析 Matlab实现 第 1章 方差分析 ?...第1章 方差分析(analysis of variance) §1 单因素方差...
  • 物联网的应用模式

    2021-08-31 22:03:58
    惯用-设计模式-架构风格,就是IT这边常见的三层模式。至于应用模式,我的理解是特定应用领域下的模式。 由于物联网的特性,其有很多应用模式。这些应用模式并不是专属于物联网应用领域,而是在物联网应用领域,...
  • . .最近邻和k-近邻法学号 姓名:吴林一.基本概念:最近邻:对于未知样本x.比较x与N个已知类别的样本之间的欧式距离....K近邻:取未知样本x的k个近邻....问题分析:要判别x属于哪一类.关键要求得与x最近的k个...
  • LOPA分析法之独立保护层浅析

    千次阅读 2020-12-24 11:14:33
    张秀云[摘 要]保护层是一类安全保护措施,它是能有效...正确识别和选取独立保护层是完成LOPA分析的核心内容。[关键词]保护层分析(LOPA);独立保护层(IPL)中图分类号:X913 文献标识码:A 文章编号:1009-914X(2016...
  • 层次分析法(AnalytioHieacrrhyProcess,AHP),是一种定性与定量相结合的多目标决策方法,在许多工程领域都有应用。利用层次分析法进行风险识别的基本思路是:把复杂的风险问题分解为各个组成因素,将这些因素按支配...
  • 【学习笔记】编译原理——第四章 自上而下分析法 【学习笔记】编译原理——第五章 自底向上分析法 文章目录系列文章目录概述LR分析法LR0分析增广文法 概述 自底向上分析: 从分析树的底部向顶部方向构造分析树 ...
  • 上一篇:什么是数据包络分析法 DEA 中,对数据包络分析发进行了初步的了解和认识,对其具体的原理并未深究。本文继续对DEA进行学习,并用python实现。基础视频了解视频来自公众号:九转星河综述绩效评估是评估组织或...
  • 一、威客模式在高职计算机应用能力课程教学的可行性分析(一)威客模式构建理论一体运用威客模式开展教学,以真实工作情境、具体实际的威客任务为出发点,能让学生在学中做、做中学,在学、做中掌握知识,练就技能,...
  • 模式识别工具箱安装及使用

    千次阅读 2021-01-15 21:40:01
    掌握安装模式识别工具箱的技巧,能熟练使用工具箱中的各项功能;熟练使用最小错误率贝叶斯决策器对样本分类;熟练使用感知准则对样本分类;熟练使用最小平方误差准则对样本分类;了解近邻的分类过程,了解参数 K ...
  • 第23卷第6期V o.l 23N o .6荆门职业技术学院学报Journal o f Ji ng m en T echn i ca l Co lleg e ... 图1 直流电路 图2 电路的数学模型 方法1:用网孔电流[4]分析求解电流I 1和I 2。在图1中,首先建立网孔电流方程:
  • 通常来说,设计模式都是混合使用,不会独立应用。利用穷举充分理解设计模式应用场景。在平时的应用中,不是用设计模式去生搬硬套,而是根据具体业务问题需要时借鉴。 1.1.设计模式应用中遵循六大原则 a、开闭...
  • 全球及中国软件和信息技术服务行业应用模式及盈利状况分析报告2021-2027年 【修订日期】:2021年10月 【搜索鸿晟信合研究院查看官网更多内容!】 第一章 软件和信息技术服务业基本概述 1.1 行业的内涵及地位 1.1.1...
  • 主题分析

    2021-02-02 15:48:40
    本文主要是将论文《Using thematic analysis in psychology》中的内容进行了简要记录。 ###定义 什么是thematic analysis? 文中给出的定义是: Thematic analysis is a method for identifying, analysing, and ...
  • 例3-1:使用节点分析法(又称节点电压法)计算下图所示电路中各节点的电压。 求解步骤: 选择一个节点作为参考节点(参考节点的电位为零),则需要求解的两个节点1、2的电压为v1、v2v_1、v_2v1​、v2​,这两个...
  • 时间序列分析(1)-移动平均

    千次阅读 2021-05-03 19:08:58
    对时间序列进行观察研究,找寻它的发展规律,预测它将来的走势就是时间序列分析。 时间序列根据所研究的依据不同,可有不同的分类。 按所研究的对象的多少分,有一元时间序列和多元时间序列. 按时间的连续性可将...
  • 一、矢量空间分析矢量空间分析主要通过空间数据和空间模型的联合分析来挖掘空间目标的潜在信息,而这些空间目标的基本信息,无非是其空间位置、分布、形态、距离、方位、拓扑关系等,其中距离、方位、拓扑关系组成了...
  • 1932年,美国政治学家拉斯维尔提出“5W分析法”,后经过人们的不断运用和总结,逐步形成了一套成熟的“5W+IH”模式。 5W+1H:原因(何因Why)、对象(何事What)、地点(何地Where)、时间(何时When)、人员(何人...
  • 在校期间,修读了创管学院的《商业模式》课程,俺就将个人的学习Project迁于此,与大伙一同学习~ 本文撰于2020年10月,查阅很多前辈的撰写文稿(见参考文献),同时学习并借鉴了他们的观点与数据,最终产生了本文...
  • 聚类分析与判别分析

    2020-12-21 15:51:47
    一、聚类分析的基本思想1.什么是聚类分析俗语说,物以类聚、人以群分。当有一个分类指标时,分类比较容易。但是当有多个指标,要进行分类就不是很容易了。比如,要想把中国的县分成若干类,可以按照自然条件来分:...
  • 激光谐振腔的模式计算研究 (7页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦!19.90 积分1激光谐振腔模式研究的激光谐振腔模式研究的 MATLABMATLAB 实现实现光信 1001 ...
  • 【空间模式挖掘】POI频繁同位模式

    千次阅读 2021-11-13 12:40:06
    用户设定中心类别、空间相关距离和分析范围,检索得到同位模式实例集。 以分析范围内中心类别POI作为中心,相关距离为半径划定一个样本范围,此样本范围内的所有类别组成一个事务,形成事务集合,即同位模式实例集...
  • 【Java萌新】面试常问设计模式——工厂模式

    千次阅读 多人点赞 2021-06-06 19:17:16
    本篇总结的是 工厂设计模式,后续会每日更新~ 1、工厂模式简介 ⼯⼚模式介绍:它提供了⼀种创建对象的最佳⽅式,在创建对象时 不会对客户端暴露创建逻辑,并且是通过使⽤⼀个共同的接⼝来指向新创建的对象。 例...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 191,841
精华内容 76,736
关键字:

内容分析法的应用模式