使用潜语义相关性分析(LSA)得到文档-文档间的相关性,相关性系数为负是什么意思?是完全不相关么?

君,已阅读到文档的结尾了呢~~
基于潜在语义分析的汉语问答系..
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
基于潜在语义分析的汉语问答系统答案提取
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer--144.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口后使用快捷导航没有帐号?
查看: 16251|回复: 14
R语言主成分和因子分析篇
金牌会员, 积分 1497, 距离下一级还需 1503 积分
论坛徽章:6
& && && && && & & && &&&& &
& && && && && && &&&分类:& && && && && && && && &
16:50& & 151人阅读& & (0)& & [url=]收藏[/url]& & & &
主成分分析(PCA)是一种数据降维技巧,它能将大量相关变量转化为一组很少的不相关变量,这些无关变量称为主成分。探索性因子分析(EFA)是一系列用来发现一组变量的潜在结构的方法,通过寻找一组更小 的、潜在的或隐藏的结构来解释已观测到的、变量间的关系。
1.R中的主成分和因子分析R的基础安装包中提供了PCA和EFA的函数,分别为princomp ()和factanal()
psych包中有用的因子分析函数
函数描述 principal()含多种可选的方差放置方法的主成分分析fa()可用主轴、最小残差、加权最小平方或最大似然法估计的因子分析fa.parallel()含平等分析的碎石图factor.plot()绘制因子分析或主成分分析的结果fa.diagram()绘制因子分析或主成分分析的载荷矩阵scree()因子分析和主成分分析的碎石图PCA/EFA 分析流程:(1)数据预处理;PCA和EFA都是根据观测变量间的相关性来推导结果。用户可以输入原始数据矩阵或相关系数矩阵列到principal()和fa()函数中,若输出初始结果,相关系数矩阵将会被自动计算,在计算前请确保数据中没有缺失值;
(2)选择因子分析模型。判断是PCA(数据降维)还是EFA(发现潜在结构)更符合你的分析目标。若选择EFA方法时,还需要选择一种估计因子模型的方法(如最大似然估计)。
(3)判断要选择的主成分/因子数目;
(4)选择主成分/因子;
(5)旋转主成分/因子;
(6)解释结果;
(7)计算主成分或因子得分。
2.主成分分析PCA的目标是用一组较少的不相关变量代替大量相关变量,同时尽可能保留初始变量的信息,这些推导所得的变量称为主成分,它们是观测变量的线性组合。如第一主成分为:
PC1=a1X1=a2X2+……+akXk&&它是k个观测变量的加权组合,对初始变量集的方差解释性最大。
第二主成分是初始变量的线性组合,对方差的解释性排第二, 同时与第一主成分正交(不相关)。后面每一个主成分都最大化它对方差的解释程度,同时与之前所有的主成分都正交,但从实用的角度来看,都希望能用较少的主成分来近似全变量集。
(1)判断主成分的个数PCA中需要多少个主成分的准则:
根据先验经验和理论知识判断主成分数;
根据要解释变量方差的积累值的阈值来判断需要的主成分数;
通过检查变量间k*k的相关系数矩阵来判断保留的主成分数。
最常见的是基于特征值的方法,每个主成分都与相关系数矩阵的特征值 关联,第一主成分与最大的特征值相关联,第二主成分与第二大的特征值相关联,依此类推。
Kaiser-Harris准则建议保留特征值大于1的主成分,特征值小于1的成分所解释的方差比包含在单个变量中的方差更少。
Cattell碎石检验则绘制了特征值与主成分数的图形,这类图形可以展示图形弯曲状况,在图形变化最大处之上的主成分都保留。
最后,还可以进行模拟,依据与初始矩阵相同大小的随机数矩阵来判断要提取的特征值。若基于真实数据的某个特征值大于一组随机数据矩阵相应的平均特征值,那么该主成分可以保留。该方法称作平行分析。
利用fa.parallel()函数,可同时对三种特征值判别准则进行评价。
library(psych)&&fa.parallel(USJudgeRatings[,-1],fa=&PC&,n.iter=100,show.legend=FALSE,main=&Screen plot with parallel analysis&)&&
碎石头、特征值大于1准则和100次模拟的平行分析(虚线)都表明保留一个主成分即可保留数据集的大部分信息,下一步是使用principal()函数挑选出相应的主成分。
(2)提取主成分principal()函数可根据原始数据矩阵或相关系数矩阵做主成分分析
格式为:principal(的,nfactors=,rotate=,scores=)
其中:r是相关系数矩阵或原始数据矩阵;
nfactors设定主成分数(默认为1);
rotate指定旋转的方式[默认最大方差旋转(varimax)]
scores设定是否需要计算主成分得分(默认不需要)。
美国法官评分的主成分分析&&library(psych)&&pc&-principal(USJudgeRatings[,-1],nfactors=1)&&pc&&
此处,输入的是没有ONT变量的原始,并指定获取一个未旋转的主成分。由于PCA只对相关系数矩阵进行分析,在获取主成分前,原始数据将会被自动转换为相关系数矩阵。PC1栏包含了成分载荷,指观测变量与主成分的相关系数。如果提取不止一个主成分,则还将会有PC2、PC3等栏。成分载荷(component loadings)可用来解释主成分的含义。此处可看到,第一主成分(PC1)与每个变量都高度相关,也就是说,它是一个可用来进行一般性评价的维度。
h2柆指成分公因子方差-----主成分对每个变量的方差解释度。
u2栏指成分唯一性-------方差无法 被主成分解释的比例(1-h2)。
SS loadings行包含了主成分相关联的特征值,指的是与特定主成分相关联的标准化后的方差值。
Proportin Var行表示的是每个主成分对整个数据集的解释程度。
结果不止一个主成分的情况
library(psych)&&fa.parallel(Harman23.cor$cov,n.obs=302,fa=&pc&,n.iter=100,show.legend=FALSE,main=&Scree plot with parallel analysis&)&&
载荷阵解释了成分和因子的含义,第一成分与每个身体测量指标都正相关,看起来似乎是一个一般性的衡量因子;第二主成分与前四个变量负相关,与后四个变量正相关,因此它看起来似乎是一个长度容量因子。但理念上的东西都不容易构建,当提取了多个成分时,对它们进行旋转可使结果更具有解释性。
(3)主成分旋转旋转是一系列将成分载荷阵变得更容易解释的数学方法,它们尽可能地对成分去噪。
旋转方法有两种:使选择的成分保持不相关(正效旋转),和让它们变得相关(斜交旋转)。
旋转方法也会依据去噪定义的不同而不同。
最流行的下次旋转是方差极大旋转,它试图对载荷阵的列进行去噪,使得每个成分只是由一组有限的变量来解释(即载荷阵每列只有少数几个很大的载荷,其他都是很小的载荷)。
install.packages(&GPArotation&)&&library(GPArotation)&&rc&-principal(Harman23.cor$cov,nfactors=2,rotate=&varimax&)&&rc&&
列名从PC变成了RC,以表示成分被旋转
观察可以发现第一主成分主要由前四个变量来解释,第二主成分主要由变量5到变量8来解释。
注意两个主成分仍不相关,对变量的解释性不变,这是因为变量的群组没有发生变化。另外,两个主成分放置后的累积方差解释性没有变化,变的只是各个主成分对方差的解释(成分1从58%变为44%,成分2从22%变为37%)。各成分的方差解释度趋同,准确来说,此时应该称它们为成分而不是主成分。
(4)获取主成分得分利用principal()函数,很容易获得每个调查对象在该主成分上的得分。
&strong&从原始数据中获取成分得分&/strong&&&
library(psych)&&pc&-principal(USJudgeRatings[,-1],nfactors=1,score=TRUE)&&head(pc$scores)&&
当scores=TRUE时,主成分得分存储在principal()函数返回对象的scores元素中。
cor(USJudgeRatings$CONT,PC$scores)&&
&strong&获取主成分得分的系数&/strong&&&
library(psych)&&rc&-principal(Harman23.cor$cov,nfactor=2,rotate=&varimax&)&&round(unclass(rc$weights),2)&&
得到主成分得分:
PC1=0.28*height+0.30*arm.span+0.30*forearm+0.29*lower.leg-0.06*weight-0.08*bitro.diameter-0.10*chest.girth-0.04*chest.width
PC2=-0.05*height-0.08*arm.span-0.09*forearm-0.06*lower.leg+0.33*weight+0.32*bitro.diameter+0.34*chest.girth+0.27*chest.width
3.探索性因子分析EFA的目标是通过发掘隐藏在数据下的一组较少的、更为基本的无法观测的变量,来解释一组可观测变量的相关性。这些虚拟的、无法观测的变量称作因子。(每个因子被认为可解释多个观测变量间共有的方差,也叫作公共因子)
模型的形式为:
Xi=a1F1+a2F2+……apFp+Ui
Xi是第i个可观测变量(i=1,2,……k)
Fj是公共因子(j=1,2,……p)
options(digits=2)&&covariances&-ability.cov$cov&&correlations&-cov2cor(covariances)&&correlations&&
ability.cov提供了变量的协方差矩阵
cov2cor()函数将其转化为相关系数矩阵
(1)判断需提取的公共因子数[plain]
library(psych)&&convariances&-ability.cov$cov&&correlations&-cov2cor(covariances)&&fa.parallel(correlations,n.obs=112,fa=&both&,n.iter=100,main=&Scree plots with parallel analysis&)&&
若使用PCA方法,可能会选择一个成分或两个成分。当摇摆不定时,高估因子数通常比低估因子数的结果好,因为高估因子数一般较少曲解“真实”情况。
(2)提取公共因子可使用fa()函数来提取因子
fa()函数的格式为:
fa(r,nfactors=,n.obs=,rotate=,scores=,fm)
r是相关系数矩阵或原始数据矩阵;
nfactors设定提取的因子数(默认为1);
n.obs是观测数(输入相关系数矩阵时需要填写);
rotate设定放置的方法(默认互变异数最小法);
scores设定是否计算因子得分(默认不计算);
fm设定因子化方法(默认极小残差法)。
与PCA不同,提取公共因子的方法很多,包括最大似然法(ml)、主轴迭代法(pa)、加权最小二乘法(wls)、广义加权最小二乘法(gls)和最小残差法(minres)。
&strong&未旋转的主轴迭代因子法&/strong&&&
fa&-fa(correlations,nfactors=2,rotate=&none&,fm=&pa&)&&fa&&
(3)因子旋转[plain]
&strong&用正交旋转提取因子&/strong&&&
fa.varimax&-fa(correlations,nfactors=2,rotate=&varimax&,fm=&pa&)&&fa.varimax&&
&strong&正交放置将人为地强制两个因子不相关&/strong&&&
&strong&正交旋转,因子分析的重点在于因子结构矩阵(变量与因子的相关系数)&/strong&&&
用斜交旋转提取因子
fa.promax&-fa(correlations,nfactors=2,rotate=&promax&,fm=&pa&)&&fa.promax&&
&strong&对于斜交旋转,因子分析会考虑三个矩阵:因子结构矩阵、因子模式矩阵和因子关联矩阵&/strong&&&
&strong&因子模式矩阵即标准化的回归系数矩阵,它列出了因子的预测变量的权重;&/strong&&&
&strong&因子关联矩阵即因子相关系数矩阵;&/strong&&&
&strong&因子结构矩阵(或称因子载荷阵),可使用公式F=P*Phi来计算得到,其中F是载荷阵,P为因子模式矩阵,Phi为因子关联矩阵。&/strong&&&
fsm&-function(oblique){&&&&if(class(oblique)[2]==&fa&&is.null(oblique$Phi)){&&& & warning(&Object doesn't look like oblique EFA&)&&&&}else{&&& & P&-unclass(oblique$loading)&&& & F&-P%*%oblique$Phi&&& & colnames(F)&-c(&PA1&,&PA2&)&&& & return (F)&&&&}&&}&&fsm(fa.promax)&&
可以看到变量与因子间的相关系数。将它们与正交旋转所得因子载荷阵相比,发现该载荷阵列的噪音较大,这是因为之前允许潜在因子相关。虽然斜交方法更为复杂,但模型将更加符合真实数据。
使用factor.plot()或fa.diagram()函数,可绘制正交或斜交结果的图形
factor.plot(fa.promax,labels=rownames(fa.promax$loadings))&&
fa.diagram(fa.promax,simple=TRUE)&&
(4)因子得分
EFA并不十分关注因子得分,在fa()函数中添加score=TRUE选项,便可轻松地得到因子得分。另外还可以得到得分系数(标准化的回归权重),它在返回对象的weights元素中。
fa.promax$weights&&
(1)对因子分析非常有用的软件包,FactoMineR包不仅提供了PCA和EFA方法,还包含潜变量模型。
FAiR包使用遗传算法来估计因子分析模型,增强了模型参数估计能力,能够处理不等式的约束条件;
GPArotation包提供了许多因子旋转方法
nFactors包,提供了用来判断因子数目方法。
(2)其他潜变量模型
先验知识的模型:先从一些先验知识开始,比如变量背后有几个因子、变量在因子上的载荷是怎样的、因子间的相关性如何,然后通过收集数据检验这些先验知识。这种方法称作验证性因子分析(CFA)。   做CFA的软件包:sem、openMx和lavaan等。
ltm包可以用来拟合测验和问卷中各项目的潜变量模型。
潜类别模型(潜在的因子被认为是类别型而非连续型)可通过FlexMix、lcmm、randomLCA和poLC包进行拟合。lcda包可做潜类别判别分析,而lsa可做潜在语义分析----一种自然语言处理中的方法。ca包提供了可做简单和多重对应分析的函数。
R中还包含了众多的多维标度法(MDS)计算工具。MDS即可用发现解释相似性和可测对象间距离的潜在维度。
cmdscale()函数可做经典的MDS
MASS包中的isoMDS()函数可做非线性MDS
vagan包中则包含了两种MDS的函数
中级会员, 积分 211, 距离下一级还需 289 积分
论坛徽章:3
这是R实战里面的吧
中级会员, 积分 497, 距离下一级还需 3 积分
论坛徽章:7
看起来还是太复杂
高级会员, 积分 682, 距离下一级还需 318 积分
论坛徽章:11
金牌会员, 积分 1507, 距离下一级还需 1493 积分
论坛徽章:12
高级会员, 积分 531, 距离下一级还需 469 积分
论坛徽章:7
不错,需要自习学习一下,谢谢
高级会员, 积分 518, 距离下一级还需 482 积分
论坛徽章:8
不错学习下
中级会员, 积分 202, 距离下一级还需 298 积分
论坛徽章:6
新手上路, 积分 2, 距离下一级还需 48 积分
论坛徽章:0
不知道楼主还有没有在研究这个问题,你这个是R实战里面的东西,但是这本书我发现在这个地方里面是有点错误的。
principal函数里面的score参数的英文解释是factor score 也就是因子得分。而主成分得分的英文应该是principal component score。
根据多元统计分析书本上讲:主成分得分方程应该是 F=a1X1+a2X2+.....apXP,(参数a1~ap应该是特征值对应的正交特征向量)。而weight里面的那堆数,明显不是特征向量。
而score里面得出的是因子得分,因子得分乘以相应的根号特征值的出来的数才是主成分得分。
参考:1、主成分得分系数是特征向量,这个请百度。
2、主成分得分系数与因子得分系数的关系。这个是我大学老师多元统计教授的文章:
/link?url=rXnJPIe60sgS4gRcY5pAQmVwzWzJvwZqDlSpTxbQ4bWUUWNs0uPwBvpoitut3qgiwq7dYZjZa6mkX0_-NFD1c5A91aHO63SX2P-gSmjHCQu
新手上路, 积分 2, 距离下一级还需 48 积分
论坛徽章:0
这个我验证过,我用F=a1X1+a2X2+.....apXP,(参数a1~ap是特征值对应的正交特征向量)计算出来的结果等于score里面的结果乘以 根号特征值。且与SPSS的结果一致  潜在语义分析(Latent Semantic Analysis)或者潜在语义索引(Latent Semantic Index),是1988年S.T. Dumais等人提出了一种新的信息检索代数模型,是用于知识获取和展示的计算理论和方法,它使用统计计算的方法对大量的文本集进行分析,从而提取出词与词之间潜在的语义结构,并用这种潜在的语义结构,来表示词和文本,达到消除词之间的相关性和简化文本向量实现降维的目的。
  潜在语义分析的基本观点是:把高维的向量空间模型(VSM)表示中的文档映射到低维的潜在中。这个映射是通过对项/文档矩阵的奇异值分解(SVD)来实现的。
  LSA 的应用:、文档索引、视频检索、文本分类与聚类、图像检索、信息抽取等。
为本词条添加和相关影像
互动百科的词条(含所附图片)系由网友上传,如果涉嫌侵权,请与客服联系,我们将按照法律之相关规定及时进行处理。未经许可,禁止商业网站等复制、抓取本站内容;合理使用者,请注明来源于。
登录后使用互动百科的服务,将会得到个性化的提示和帮助,还有机会和专业认证智愿者沟通。
您也可以使用以下网站账号登录:
此词条还可添加&
编辑次数:1次
参与编辑人数:1位
最近更新时间: 10:45:23
贡献光荣榜
扫描二维码用手机浏览词条
保存二维码可印刷到宣传品
扫描二维码用手机浏览词条
保存二维码可印刷到宣传品潜在语义分析的理论研究及应用_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
潜在语义分析的理论研究及应用
上传于||暂无简介
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
你可能喜欢最新公告:目前,本站已经取得了出版物经营许可证 、音像制品许可证,协助杂志社进行初步审稿、征稿工作。咨询:400-675-1600
您现在的位置:&&>>&&>>&&>>&正文
语义分析在水环境领域的应用
定制原创材料,由写作老师24小时内创作完成,仅供客户你一人参考学习,无后顾之忧。发表论文
根据客户的需要,将论文发表在指定类别的期刊,只收50%定金,确定发表通过后再付余款。加入会员
申请成为本站会员,可以享受经理回访等更17项优惠服务,更可以固定你喜欢的写作老师。
潜在语义分析(LatentSemanticAnalysis,简称LSA)是一种基于潜概念的信息检索技术。LSA不需要预设基础知识、语义网络、词法、文法等信息,通过简单的数学方法实现对大规模的“词汇―文档”矩阵进行降维,进而完成对大规模文档的高效的在语义基础上的信息检索。根据上述优点以及水环境的特点,本文通过对环境领域内文档数据的特点,提出一种改进的LSA算法,用以提高水环境领域文档内容的查准率与查全率。
LSA主要依赖于传统的向量空间模型,但在传统的向量空间模型基础上,将高维的表示投影在潜在语义空间中,从而体现文档和词语之间的潜在语义关系。传统的LSA实现过程如下:(1)通过将已有的文档与词语相关联,生成一个“词汇―文档”高阶稀疏矩阵,该矩阵包含了词汇的词频信息。(2)对生成的权重矩阵进行奇异值分解(简称SVD)并确定潜在语义空间。对于权重矩阵A是一个m行n列的矩阵。有如下分解因式:上式中U、V表示矩阵A的左右奇异值向量,U表示m行n列的正交矩阵,V表示n行n列的正交矩阵。通过求矩阵A的近似矩阵将原始的高维稀疏矩阵映射在低维的空间中,方便后续的计算以及准确率的提高。(3)根据词汇列表以及查询文本生成查询向量q,查询向量在潜在语义空间中的坐标计算公式如下:。取出生成矩阵X中文档i的列向量di并计算该向量在潜在语义空间中的坐标。因此,计算出所有文档与伪文本的向量夹角,并设定阈值,筛选相似文档。
3改进LSA算法
本文提出了一种改进的LSA算法,通过改进权重计算方法以及记录词语出现位置的信息,更加准确的表达了词语所表现出的语义信息,其流程如图1所示。
3.1文本预处理对于LSA算法在水环境领域的应用,通过创建水环境高频词典及停用词表对水环境相关文档实现文本预处理。(1)筛选水环境领域词典中属于水环境领域的专业词语;(2)采用中文分词工具实现对高频水环境词语的统计,将统计结果加入水环境高频词典中;(3)根据统计结果实现停用词表的补充。
3.2权重计算根据上述文本预处理创建的高频词典以及停用词表,构建“词汇―文档”中间矩阵。传统的LSA过程中,生成的权重矩阵中记录了用于对词汇出现频率的信息,也忽略了词汇的位置信息,降低了特殊词汇在文档中的权重。不利于词汇表达文档的语义信息。因此,本文根据所研究对象的具体特征,针对词汇出现的不同位置所代表的重要程度的不同进行赋值,以实现更准确的表达词汇在辨别文档类型过程中的作用。首先,本算法将标题中出现的词汇权重定义为3,文档中小标题中出现的词汇权重为2,正文中出现的词汇权重为1。其次,定义关键词表,出现在关键词表中的词汇重要性等同于出现在标题中的权重。最后,确定权重,权重计算公式中的词频信息计算表达式改进如下:式中的tij表示词语i在文档j的标题中出现的次数,stij示词语i在文档j的小标题中出现的次数,ctij表示词语i在文档j的正文中出现的次数。
4.1实验设计通过高频词典进行文本预处理,针对文档中的具体文本内容进行停用词的过滤,并最终根据权重计算形成中间矩阵,并加入词汇位置信息所带来的影响。分别采用传统的LSA以及改进的LSA进行检索,对比检索结果。
4.2性能评价通过查准率、查全率以及截断奇异值作为算法性能评价的标准。设定Ar为查询到的文档集中所有相关文档组成的集合,A表示所查询到的所有文档组成的集合,Am表示在总的文档集中所有相关文档组成的集合。查准率是能准确的查询到用户所需要的具体内容,记为P=Ar/A;查全率是能将相关文档查询出来的概率,记为R=Ar/Am;截断奇异值是对查准率查全率进行测评的一个评价标准,记为F=(2*P*R)/(R+P)。
4.3实验结果及分析本文提出的改进LSA算法与传统LSA算法对比,当截断奇异值比例在65%-85%时检索效果趋于稳定且查准率处于峰值。如图2所示,可以看出改进LSA算法在权重计算的过程中更能体现出水环境领域中专业性较强的语义特点,并能针对这些语义特点提供更接近用户需求的查询结果。5结论本文根据水环境专业领域文档数据的特图2:算法效果对比图点提出了改进的LSA算法,充分考虑了词语出现在不同位置所代表的语义含义的不同以及权重的等级差别,同时考虑了在水环境领域中出现的高频词汇生成的关键词表,用以表达更加清晰的语义信息,通过该部分的改进可以提高用户在信息检索的过程中的准确率,更加符合用户对查询结果的需求。
作者:段荣伟 付立冬 夏广锋 单位:沈阳理工大学 信息科学与工程学院 辽宁省环境科学研究院语义分析在水环境领域的应用责任编辑:杨雪&&&&阅读:人次
上一篇论文: 下一篇论文:
按栏目筛选
                        
水环境论文热门范文
[<font color="#FF]
[<font color="#FF]
[<font color="#FF]
[<font color="#FF]
[<font color="#FF]
[<font color="#FF]
[<font color="#FF]
[<font color="#FF]
[<font color="#FF]
[<font color="#FF]
[<font color="#FF]
[<font color="#FF]
[<font color="#FF]
[<font color="#FF]
[<font color="#FF]
[<font color="#FF]
[<font color="#FF]
[<font color="#FF]
[<font color="#FF]
[<font color="#FF]
水环境论文相关文章

我要回帖

更多关于 语义相关性 的文章

 

随机推荐