共现矩阵解题报告
实验四第一部分 数学问题的矩阵表示与求解

1 .问题分析与数学模型
以
xn
xn1 0.7 xn 0.6 yn yn 1 0.3 xn 0.4 yn
表示第n年不脱产职工人数, yn 表示第n年脱产职工人数,故:
找出
X n1与 X n 的关系,有:
10000 X0 2000
xn 1 0.7 0.6 xn yn 1 0.3 0.4 yn
可见从第五年即达到平衡状态, 不脱产工人为8000人, 脱产工人为4000人.
4 . 所揭示的特征值和特征向量问题:
事实上,若要使系统达到平衡状态,即:
X n AX n1 , 且X n X n1
令系统的平衡解为X,于是有:
X AX ( A E ) X 0
即:X为矩阵A的特征值为1时,所对应的特征向量! 而前面已经算出: 对应 1 1 的特征向量为
这说明,多年之后, 动物量大得非常惊人。
14
x 10
4
不同年份各年龄段动物数
12
1年 动 物 数 2年 动 物 数 3年 动 物 数
10
动物数
8
6
4
2
0
1
2
3
4
5
6 年份
7
8
9
10
2 .算法与数学模型求解
3.如果每年平均向市场出售动物c=[s s s]T, 分析动物数分布向量变化规律可知:
X (1) LX (0) c X (2) LX (1) c X (3) LX (2) c X
n
1
3 . 问题解答(MATLAB代码)
MATLAB代码如下:
A=[0.7 0.6;0.3,0.4]; [v,d]=eig(A) %得到矩阵A的特征值和特征向量; syms n; %定义符号变量n; X0=[10000;2000] %初始值 X=v*d.^n*inv(v)*X0 %第n年的结果 运行结果为: v= 0.8944 -0.7071 0.4472 0.7071 d= 1.0000 0 0 0.1000 X0 = 10000 2000 X= 8000+2000*(1/10)^n 4000-2000*(1/10)^n
矩阵分析与数值分析实验报告

《矩阵分析与数值分析》实验报告院系:姓名:学号:所在班号:任课老师:一.设错误!未找到引用源。
,分别编制从小到大和从大到小的顺序程序计算错误!未找到引用源。
并指出有效位数。
程序如下:function sum3j=input('请输入求和个数 "j":');A=0;B=0;double B;double A;for n=2:jm=n^2-1;t=1./m;A=A+t;enddisp('从小到大:')s=Afor n=j:-1:2m=n^2-1;t=1./m;B=B+t;enddisp('从大到小:')s=B运行结果:>> sum3请输入求和个数 "j":100从小到大:s =0.740049504950495从大到小:s =0.740049504950495>> sum3请输入求和个数 "j":10000从小到大:s =0.749900004999506从大到小:s =0.749900004999500>> sum3请输入求和个数 "j":1000000从小到大:s =0.749999000000522从大到小:s =0.749999000000500二、解线性方程组1.分别Jacobi 迭代法和Gauss-Seidel 迭代法求解线性方程组。
⎪⎪⎪⎪⎪⎭⎫⎝⎛-=⎪⎪⎪⎪⎪⎭⎫ ⎝⎛⎪⎪⎪⎪⎪⎭⎫ ⎝⎛----000121001210012100124321x x x x 迭代法计算停止的条件为:6)()1(3110max -+≤≤<-k j k j j x x 。
解:(1)Jacobi 迭代法程序代码: function jacobi(A, b, N) clc;clear;A=[-2 1 0 0;1 -2 1 0;0 1 -2 1;0 0 1 -2]; b=[-1 0 0 0]'; N=100;n = size(A,1); D = diag(diag(A)); L = tril(-A,-1); U = triu(-A,1); Tj = inv(D)*(L+U); cj = inv(D)*b; tol = 1e-06; k = 1;format longx = zeros(n,1); while k <= Nx(:,k+1) = Tj*x(:,k) + cj;disp(k); disp('x = ');disp(x(:,k+1)); if norm(x(:,k+1)-x(:,k)) < toldisp('The procedure was successful')disp('Condition ||x^(k+1) - x^(k)|| < tol was met after k iterations') disp(k); disp('x = ');disp(x(:,k+1)); break endk = k+1; end结果输出The procedure was successfulCondition ||x^(k+1) - x^(k)|| < tol was met after k iterations 60 x =0.799998799067310.599998427958700.399998056850090.19999902842505(2)Gauss-Seidel迭代法程序代码:function gauss_seidel(A, b, N)clc;clear;A=[-2 1 0 0;1 -2 1 0;0 1 -2 1;0 0 1 -2];b=[-1 0 0 0]';N=100;n = size(A,1);D = diag(diag(A));L = tril(-A,-1);U = triu(-A,1);Tg = inv(D-L)*U;cg = inv(D-L)*b;tol = 1e-06;k = 1;x = zeros(n,1);while k <= Nx(:,k+1) = Tg*x(:,k) + cg;disp(k); disp('x = ');disp(x(:,k+1));if norm(x(:,k+1)-x(:,k)) < toldisp('The procedure was successful')disp('Condition ||x^(k+1) - x^(k)|| < tol was met after k iterations') disp(k); disp('x = ');disp(x(:,k+1));breakendk = k+1;end结果输出The procedure was successfulCondition ||x^(k+1) - x^(k)|| < tol was met after k iterations31x =0.799999213979350.599998971085610.399999167590770.199999583795392. 用Gauss列主元消去法、QR方法求解如下方程组:⎪⎪⎪⎪⎪⎭⎫⎝⎛-=⎪⎪⎪⎪⎪⎭⎫ ⎝⎛⎪⎪⎪⎪⎪⎭⎫ ⎝⎛---017435222331325212214321x x x x (1)Gauss 列主元消去法 程序代码:function x=Gaussmain(A,b) clc;clear; format longA=[1 2 1 2;2 5 3 -2;-2 -2 3 5;1 3 2 3]; b=[4 7 -1 0]'; N=length(A); x=zeros(N,1); y=zeros(N,1); c=0; d=0;A(:,N+1)=b; for k=1:N-1 for i=k:4if c<abs(A(i,k))d=i;c=abs(A(i,k)); end endy=A(k,:);A(k,:)=A(d,:); A(d,:)=y; for i=k+1:N c=A(i,k);for j=1:N+1A(i,j)=A(i,j)-A(k,j)*c/A(k,k); end end endb=A(:,N+1);x(N)=b(N)/A(N,N); for k=N-1:-1:1x(k)=(b(k)-A(k,k+1:N)*x(k+1:N))/A(k,k); end结果输出 ans =18.00000000000000 -9.571428571428576.00000000000000-0.42857142857143(2)QR方法:程序代码function QR(A,b)clc;clear;format longA=[1 2 1 2;2 5 3 -2;-2 -2 3 5;1 3 2 3];b=[4 7 -1 0]';[Q,R]=qr(A)y=Q'*b;x=R\y结果输出Q =-0.31622776601684 -0.04116934847963 -0.75164602800283 0.57735026918962 -0.63245553203368 -0.49403218175557 -0.15032920560056 -0.57735026918963 0.63245553203368 -0.74104827263336 -0.22549380840085 -0.00000000000000 -0.31622776601684 -0.45286283327594 0.60131682240226 0.57735026918963 R =-3.16227766016838 -6.00832755431992 -0.94868329805051 2.84604989415154 0 -2.42899156029822 -4.65213637819829 -4.15810419644272 0 0 -0.67648142520255 -0.52615221960200 0 0 0 4.04145188432738 x =17.99999999999989-9.571428571428515.99999999999997-0.42857142857143三、非线性方程的迭代解法1.用Newton迭代法求方程()06cos22x=-++=-xexf x的根,计算停止的条件为:6110-+<-kkxx;编程如下:function newton(f,df,x,a,a0)syms xf=input('please enter your equation:') a0=input('please enter you x(0):');df=diff(f)e=1e-6;a1=a0+1;N=0;while abs(a1-a0)>ea=a0-subs(f,a0)/subs(df,a0); a1=a0; a0=a; N=N+1; endfprintf('a=%0.6f',a) N运行结果: >> newtonplease enter your equation:exp(x)+2^(-x)+2*cos(x)-6 f =exp(x)+2^(-x)+2*cos(x)-6 please enter you x(0):2df =exp(x)-2^(-x)*log(2)-2*sin(x) a=1.829384 N =42.利用Newton 迭代法求多项式07951.2954.856.104.5x 234=+-+-x x x的所有实零点,注意重根的问题。
高考数学压轴专题南京备战高考《矩阵与变换》解析含答案

【最新】数学《矩阵与变换》高考知识点一、151.关于x 的不等式201x a x+<的解集为()1,b -.()1求实数a ,b 的值;()2若1z a bi =+,2z cos isin αα=+,且12z z 为纯虚数,求tan α的值.【答案】(1)1a =-,2b =(2)12- 【解析】 【分析】(1)由题意可得:1-,b 是方程220x ax +-=的两个实数根,利用根与系数的关系即可得出答案;(2)利用(1)的结果得()()1222z z cos sin cos sin i αααα=--+-为纯虚数,利用纯虚数的定义即可得出. 【详解】 解:(1)不等式201x a x+<即()20x x a +-<的解集为()1,b -. 1∴-,b 是方程220x ax +-=的两个实数根,∴由1b a -+=-,2b -=-,解得1a =-,2b =. (2)由(1)知1,2a b =-=,()()()()121222z z i cos isin cos sin cos sin i αααααα∴=-++=--+-为纯虚数,20cos sin αα∴--=,20cos sin αα-≠,解得12tan α=-.【点睛】本题考查了行列式,复数的运算法则、纯虚数的定义、一元二次方程的根与系数的关系、一元二次不等式的解法,考查了推理能力与计算能力,属于中档题.2.已知a ,b ,c ,d 四个城市,它们之间的道路联结网如图所示,试用矩阵表示这四个城市组成的道路网络.【答案】0210203013020022a b c da b c d⎛⎫ ⎪ ⎪ ⎪ ⎪⎝⎭ 【解析】 【分析】根据图像计算每两个城市之间的道路数,得到答案. 【详解】根据图像计算每两个城市之间的道路数,如:,a b 之间有2条路;,b c 之间有3条路;同理得到矩阵: 0210203013020022a b c da b c d⎛⎫ ⎪ ⎪ ⎪ ⎪⎝⎭ 【点睛】本题考查了矩阵表示道路网络,意在考查学生的应用能力.3.解关于x ,y 的方程组2122ax y a ax ay a +=+⎧⎨-=-⎩.【答案】见解析 【解析】 【分析】根据对应关系,分别求出D ,x D ,y D ,再分类讨论即可 【详解】 由题可得:()122a D a a a a==-+-,()2211=212x a D a aa+=-+--,221522y a a D a aa+==--.所以,(1)当0a ≠且2a ≠-时,()()221252a x a a a y a ⎧+⎪=⎪+⎨⎪=⎪+⎩; 当0a =或2-时,0x D ≠,方程组无解 【点睛】本题考查二元一次方程的解与行列式的对应关系,属于中档题4.利用行列式解关于x 、y 的二元一次方程组42mx y m x my m +=+⎧⎨+=⎩.【答案】见解析 【解析】 【分析】计算出系数行列式D ,以及x D 、y D ,然后分0D ≠和0D =两种情况讨论,在0D ≠时,直接利用行列式求出方程组的解,在0D =时,得出2m =±,结合行列式讨论原方程组解的情况. 【详解】 系数行列式为2441m D m m==-,()242x m D m m mm+==-,()()222211y m m D m m m m m+==--=-+.①当240D m =-≠时,即当2m ≠±时,原方程组有唯一解()()()2224221142x y m m D mx D m m D m m m y D m m ⎧-===⎪⎪-+⎨-++⎪===⎪-+⎩;②当240D m =-=时,2m =±.(i )当2m =-时,0D =,8x D =,4y D =,原方程组无解;(ii )当2m =时,0x yD D D ===,原方程为24422x y x y +=⎧⎨+=⎩,可化为22x y +=, 该方程组有无数组解,即12x Rx y ∈⎧⎪⎨=-⎪⎩.【点睛】本题考查利用行列式求二元一次方程组的解,解题时要对系数行列式是否为零进行分类讨论,考查运算求解能力与分类讨论思想的应用,属于中等题.5.在ABC ∆中,角,,A B C 所对的边分别为,,a b c,且sincossin 222sincos 022sec12A A cBB B -=-求角C 的大小.【答案】2π 【解析】 【分析】先将三阶行列式化简,结合三角形内角和与诱导公式、辅助角公式化简即可求值 【详解】由sincossin 222sincos 0sin cos sin sin cos 2222222sec12A A cBB A BC B A B -=⇒++=-sin sin 22A B C +⎛⎫⇒+= ⎪⎝⎭又()C A B π=-+,∴ sin sin cos 222A B C C π+-⎛⎫==⎪⎝⎭,sin sin sin cos 2222A B C C C +⎛⎫+=⇔+= ⎪⎝⎭,sin 12424C C ππ⎛⎫⎛⎫+=⇒+= ⎪ ⎪⎝⎭⎝⎭,又Q 3,2444C πππ⎛⎫+∈ ⎪⎝⎭,242C ππ+=∴, 解得2C π=【点睛】本题考查三阶行列式的化简求值,三角函数的诱导公式、辅助角公式的使用,属于中档题6.已知命题P :lim 0n n c →∞=,其中c 为常数,命题Q :把三阶行列式5236418x c x ⎛⎫ ⎪- ⎪ ⎪⎝⎭中第一行,第二列元素的代数余子式记为()f x ,且函数()f x 在1,4⎛⎤-∞ ⎥⎝⎦上单调递增,若命题P 是真命题,而命题Q 是假命题,求实数c 的取值范围.【答案】112c -<< 【解析】 【分析】先由已知命题P 是真命题,得:11c -<<,根据三阶行列式中第一行、第二列元素的代数余子式写出2()4f x x cx =-+-,结合函数()f x 在上单调递增.求得c 的取值范围,最后即可解决问题. 【详解】由已知命题:lim 0nn P c →∞=,其中c 为常数,是真命题,得:11c -<<。
矩阵报告

奇异值分解在图像处理中的应用【摘要】数字技术的快速发展促进了图像处理方法的变革,在数字图像处理中,提出利用矩阵的奇异值分解的方法来进行有目的处理,主要介绍了基于数字图像是用一个矩阵来表示的这一概念,从而利用矩阵的相关变换来达到相关处理。
本文主要说明了利用奇异值的分解把图像分解到一系列的子空间中然后再进行图像重构、压缩、去噪及主要特性的提取等。
所以利用奇异值的分解技术能够很好的解决一幅数字图像的相关要求。
关键字: 奇异值分解图像重构图像压缩1、引言随着科技信息技术的不断发展,图像的格式也变的日益丰富,其从传统的胶片时代过渡到了数字时代,这一转变从而也促进了图像处理的方法发生了很大的变化。
我们知道一幅数码相机拍摄的图像是以数字形式存储的,而存储的格式也有不同的分类,但是它们在本质上都是可以用一个矩阵的方式来表示的。
所以这也为用数学方法来进一步处理带来了可能。
在我们现在的日常生活中,数字图像和我们如影随形,无论是用数码相机还是手机,都可以随时随地的拍下一幅图像。
但这同时也带来了重要的问题,那就是存储容量过大,所以利用矩阵的奇异值的分解可以有效地解决相关的问题。
奇异值是一种非线性滤波,它从矩阵的角度出发,将包含信号信息的矩阵分解到一系奇异值和奇异值矢量对应的信号子空间去,然后就可以通过去除较小的奇异值来重构、压缩和去噪等相关的应用。
2、矩阵的奇异值设A ϵ C m×n,r=rank(A), λi ,μi ,分别是AA H,A H A的特征值并且都为实数,并假设:λ 1 ≧λ2≧ ...≧λr›λr+1=λr+2=...λn=0μ1≧μ2≧ ...≧μr ›μr+1=μr+2=...μn=0则,λi 与μi 的关系式为:λi =μi ›0,(i=1,2...,r)σi 为A 的奇异值,则有关系式为:σi =i λ=i μ矩阵的奇异值分解由上面的定义可知,存在m 阶酉矩阵U 和n 阶酉矩阵V ,满足:A=UDV H =U ⎥⎦⎤⎢⎣⎡∆000V H其中,Δ=diag(σ 1 ,σ 2 ,...σr )。
矩阵的解谜之道高中数学矩阵问题的解题方法

矩阵的解谜之道高中数学矩阵问题的解题方法矩阵在数学中扮演着非常重要的角色,它是几何、线性代数、计算机等多个领域的基础。
在高中数学中,矩阵的学习内容主要包括矩阵的定义、矩阵的运算、矩阵的逆以及矩阵的应用等。
在这些内容中,矩阵的应用是相对重要的内容,这里我们重点介绍一下矩阵问题的解题方法,以更好的帮助同学们掌握这一部分的内容。
矩阵问题的求解可以分为两步走:第一步是列出矩阵方程组,第二步是求解矩阵方程组。
下面我们将结合实例详细介绍这两步的具体操作。
例1:有一组线性方程组如下:$$\begin{cases}2x+y=3 \\ x+3y=7\end{cases}$$请将其转换成矩阵方程组,并求出方程组的解。
解:将其转换成矩阵方程组,即为$$\begin{bmatrix}2 & 1 \\ 1 &3\end{bmatrix}\begin{bmatrix}x\\y\end{bmatrix}=\begin{bmatrix}3\\7\end {bmatrix}$$然后,根据矩阵乘法的定义,求解该矩阵方程组,即为$$\begin{bmatrix}x\\y\end{bmatrix}=\begin{bmatrix}2 & 1 \\ 1 &3\end{bmatrix}^{-1}\begin{bmatrix}3\\7\end{bmatrix}$$其中,$\begin{bmatrix}2 & 1 \\ 1 & 3\end{bmatrix}$ 的逆矩阵为$$\begin{bmatrix}2 & 1 \\ 1 & 3\end{bmatrix}^{-1}=\frac{1}{5}\begin{bmatrix}3 & -1\\-1 & 2\end{bmatrix}$$所以,原矩阵方程组的解为$$\begin{bmatrix}x\\y\end{bmatrix}=\begin{bmatrix}2 & 1 \\ 1 &3\end{bmatrix}^{-1}\begin{bmatrix}3\\7\end{bmatrix}=\frac{1}{5}\begin{bmatrix}3 & -1\\-1 & 2\end{bmatrix}\begin{bmatrix}3\\7\end{bmatrix}=\begin{bmatrix}1 \\2\end{bmatrix}$$例2:某班级共有$n$名学生,其中英语、数学两门科目的成绩有如下统计结果:其中$p$位同学两门科目都及格,有$a$位同学数学及格但英语不及格,有$b$位同学英语及格但数学不及格,有$c$位同学两门科目均未及格。
矩阵分析资料报告课后习题解答(整理版)

第一章线性空间与线性变换(以下题目序号与课后习题序号不一定对应,但题目顺序是一致的,答案为个人整理,不一定正确,仅供参考,另外,此答案未经允许不得擅自上传)(此处注意线性变换的核空间与矩阵核空间的区别)1.9.利用子空间定义,)R对m C满足加(AR是m C的非空子集,即验证)(A法和数乘的封闭性。
1.10.证明同1.9。
1.11.rankA n A N rankA A R -==)(dim ,)(dim (解空间的维数)1.13.提示:设),)(-⨯==n j i a A n n ij (,分别令T i X X ),0,0,1,0,0( ==(其中1位于i X 的第i 行),代入0=AX X T ,得0=ii a ;令T ij X X )0,0,10,0,1,0,0( ==(其中1位于ij X 的第i 行和第j 行),代入0=AX X T ,得0=+++jj ji ij ii a a a a ,由于0==jj ii a a ,则0=+ji ij a a ,故A A T -=,即A 为反对称阵。
若X 是n 维复列向量,同样有0=ii a ,0=+ji ij a a ,再令T ij i X X ),0,1,0,0,,0,0( ='=(其中i 位于ij X 的第i 行,1位于ij X 的第j 行),代入0=AX X H ,得0)(=-++ij ji jj ii a a i a a ,由于0==jj ii a a ,ij ji a a -=,则0==ji ij a a ,故0=A1.14.AB 是Hermite 矩阵,则AB BA A B AB H H H ===)(1.15.存在性:令2,2HH A A C A A B -=+=,C B A +=,其中A 为任意复矩阵,可验证C C B B H H -==,唯一性:假设11C B A +=,1111,C C B B HH-==,且C C B B ≠≠11,,由1111C B C B A H HH -=+=,得C AA CB A A B HH =-==+=2,211(矛盾)第二章酉空间和酉变换(注意实空间与复空间部分性质的区别)2.8 法二:设~2121),,()0,0,1,0,0)(,,(X e e e e e e e n T n i ==(1在第i 行);~2121),,()0,0,1,0,0)(,,(Y e e e e e e e n T n j ==(1在第j 行) 根据此题积定义⎩⎨⎧≠===j i j i X Y e e H j i 01),~~( 故n e e e ,,21是V 的一个标准正交基。
共现矩阵解题报告

共现矩阵解题报告ASSIGNMENT #2: WORD CO-OCCURRENCE MATRIX00948181 单子非1.共现矩阵问题统计文档中每两个词出现在同一个句子中的次数,统计共现矩阵对语义分析、数据挖掘都有重要意义。
本报告中,作者使用Hadoop编程,计算了莎士比亚文献集的共现矩阵。
作者采用了Stripe 的方法对数据传输格式进行了优化,将数据传输量减小了一半;并采用In-Map Combing策略和定制Combiner类,大幅减小了数据的规模。
Map的输出value格式采用了hadoop的Text类,以字符串方式传输并进行解析,方法简便。
最后,作者对得到的共现矩阵数据进行了解析,发现绝大多数词对的共现次数小于等于5,共现次数最高的单词大多是英语常用高频词;通过对非常用高频词的解析,还发现了一些有趣的现象,如:这些文献中大量使用古英语人称代词和语体,以及文献的主题多为王室相关。
2.共现矩阵问题的定义如下:在文档集合中,任意两个单词共同出现在同一句子中的次数构成一个矩阵,我们要编程求这个矩阵。
考虑到问题的大规模数据量和可扩展性,我们用hadoop 编程,使用MapReduce算法求解。
Hadoop编程中,用户可定制的部分有Mapper、Reducer、Combiner和Partition四部分。
我们这里主要关注Mapper、Reducer和Combiner的编写。
最朴素的算法是基于pair的算法。
3.3.1.PAIR方法下面简单介绍朴素的Pair方法。
Mapper:map方法处理每个句子,切词之后二重循环遍历句中每个单词a和b,将< <a, b>, 1>作为Mapper的输出发送。
输出格式中,key为二元组<a, b>,value为整数,代表出现频率。
Reducer:reduce方法收集到的数据中,key为<a, b>,代表统计的两个单词,确定了共现矩阵中的一个元素;value为list<int>,将其元素累加后,可以直接得到两个词的共现次数x。
有关矩阵数学实验报告

有关矩阵数学实验报告引言矩阵是数学中一个重要的概念,广泛应用于线性代数、图论、计算机科学等众多领域。
本实验旨在通过实际操作和计算,加深对矩阵的理解,并探索矩阵在现实问题中的应用。
本报告将从实验目的、实验步骤、实验结果和实验结论几个方面进行介绍。
实验目的1. 了解矩阵的基本概念和运算规则;2. 掌握矩阵的求逆、转置和乘法等操作;3. 实践利用矩阵解决实际问题。
实验步骤1. 实验准备:安装并学习使用相应的矩阵数学软件;2. 实验1:矩阵加法和乘法- 创建两个相同维度的矩阵A和B;- 计算A + B和A * B;- 分析结果并进行讨论。
3. 实验2:矩阵求逆和转置- 创建一个可逆矩阵C;- 计算C的逆矩阵C'和C的转置矩阵C^T;- 检验计算结果是否正确。
4. 实验3:矩阵在实际问题中的应用- 选择一个实际问题,并将其抽象成矩阵形式;- 利用矩阵运算解决问题;- 分析结果,并与传统解法进行对比。
实验结果1. 实验1结果分析:经过计算发现,矩阵的加法和乘法满足交换律和结合律,与数的加法和乘法类似。
但是,矩阵乘法不满足交换律,即A * B ≠B * A。
这进一步说明矩阵并不是普通数的简单扩展。
2. 实验2结果检验:针对可逆矩阵C,计算得到的逆矩阵C'和转置矩阵C^T经过验证均正确,满足逆矩阵和转置矩阵的定义和性质。
3. 实验3结果分析:我们选择了一个线性方程组问题,利用矩阵运算求解。
与传统解法相比,矩阵运算更简洁、高效,尤其对于高维度复杂问题具有很大优势。
实验结论通过本次实验,我们对矩阵的概念和运算规则有了更深入的理解。
矩阵不仅仅是一种数学工具,它在现实问题的建模和求解中发挥着重要作用。
矩阵的加法、乘法、逆矩阵和转置等运算规则的学习,为我们处理实际问题提供了更多的方法和思路。
在未来的学习和研究中,矩阵将会贯穿于我们的整个数学和科学计算的领域,为我们带来更大的便利和创造力。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
共现矩阵解题报告ASSIGNMENT #2: WORD CO-OCCURRENCE MATRIX00948181 单子非1.共现矩阵问题统计文档中每两个词出现在同一个句子中的次数,统计共现矩阵对语义分析、数据挖掘都有重要意义。
本报告中,作者使用Hadoop编程,计算了莎士比亚文献集的共现矩阵。
作者采用了Stripe 的方法对数据传输格式进行了优化,将数据传输量减小了一半;并采用In-Map Combing策略和定制Combiner类,大幅减小了数据的规模。
Map的输出value格式采用了hadoop的Text类,以字符串方式传输并进行解析,方法简便。
最后,作者对得到的共现矩阵数据进行了解析,发现绝大多数词对的共现次数小于等于5,共现次数最高的单词大多是英语常用高频词;通过对非常用高频词的解析,还发现了一些有趣的现象,如:这些文献中大量使用古英语人称代词和语体,以及文献的主题多为王室相关。
2.共现矩阵问题的定义如下:在文档集合中,任意两个单词共同出现在同一句子中的次数构成一个矩阵,我们要编程求这个矩阵。
考虑到问题的大规模数据量和可扩展性,我们用hadoop 编程,使用MapReduce算法求解。
Hadoop编程中,用户可定制的部分有Mapper、Reducer、Combiner和Partition四部分。
我们这里主要关注Mapper、Reducer和Combiner的编写。
最朴素的算法是基于pair的算法。
3.3.1.PAIR方法下面简单介绍朴素的Pair方法。
Mapper:map方法处理每个句子,切词之后二重循环遍历句中每个单词a和b,将< <a, b>, 1>作为Mapper的输出发送。
输出格式中,key为二元组<a, b>,value为整数,代表出现频率。
Reducer:reduce方法收集到的数据中,key为<a, b>,代表统计的两个单词,确定了共现矩阵中的一个元素;value为list<int>,将其元素累加后,可以直接得到两个词的共现次数x。
输出< <a, b>, x>。
Combiner:可以直接使用Reducer,在同一个Mapper中对多个map方法的结果进行合并,减小数据量。
复杂度分析:Pair方法中,考虑单词量为n,平均单词数据量为d的句子,则传输key的总数据量为:。
设每个value(均为1)的数据量为e,则传输value的总数据量为:。
总数据量为。
Pair方法的简单优化:考虑矩阵的对称性,可以限定二元组<a, b>,令a的hashcode小于等于b(即按照字典序a<=b),则可减小一半的数据量,优化为。
⁄。
3.2.STRIPE方法及实现Stripe方法的思想为:如果令pair方法中的key只取词对的第一个单词a,value格式为list<b, x>,其中b为与a共现的单词,x为共现次数。
则传输复杂度可以得到优化:设句中的单词数目为n,任意组传输的数据中<a, b>中a的出现次数由n-1次减为1次,b的出现次数仍为n次,另外1的传输次数由1次变为n-1次。
由于1的传输复杂度比起单词可以忽略,故整体数据量基本上减小了一半。
要完成这样的传输,我们需要定制value的传输数据格式为pair<String, Integer>。
然而笔者采用了另一种简单易行的办法:将value中的所有String全部写入一个String,value的格式为Text 进行传输。
这样虽有一些浪费(传输空格和数字使传输量有所增加),但方便编写。
最初执行这个方法时,我省略了所有的1,只传输以空格分隔的单词。
这个方法无需传输单词出现次数,可以用于Mapper的输出。
如:hello hadoop bye hadoop这一句子,传输的第一对数据为:<“hello”, “hadoop bye hadoop”>但这个方法不利于我们编写Combiner,以及In-map combining的实现。
之后我的优化方法为:定制了输出字符串格式,如与单词b的共现次数为1则省略,为大于1的整数x则输出x#b。
在切词时进行处理,可以很大程度上优化传输量。
切词策略为:1.将单词全部转化为小写。
2.忽略开头和末尾的非字母字符。
3.在切词时合并相同的单词,输出时,如果单词a作为key出现,则将其系数乘到每个对应的b上。
另外也采用了上文提到的对称性优化:如a.hashcode > b.hashcode则在a的列表中忽略b,以减小一半数据量。
如:hello hadoop bye hadoop这一句子,输出:<“hadoop”, “2#hello”><”bye”, “hello 2#hadoop”>其中,不对相同的单词进行计数。
3.3. 控制台输出结果我利用学校机群,对数据包内的所有数据文件进行了处理。
输出日志部分如下:11/07/30 23:20:44 INFO mapred.JobClient: Job complete: job_201107280400_028511/07/30 23:20:44 INFO mapred.JobClient: Counters: 1811/07/30 23:20:44 INFO mapred.JobClient: Job Counters11/07/30 23:20:44 INFO mapred.JobClient: Launched reduce tasks=111/07/30 23:20:44 INFO mapred.JobClient: Launched map tasks=4411/07/30 23:20:44 INFO mapred.JobClient: Data-local map tasks=4411/07/30 23:20:44 INFO mapred.JobClient: FileSystemCounters11/07/30 23:20:44 INFO mapred.JobClient: FILE_BYTES_READ=1362442511/07/30 23:20:44 INFO mapred.JobClient: HDFS_BYTES_READ=534373211/07/30 23:20:44 INFO mapred.JobClient: FILE_BYTES_WRITTEN=2725051611/07/30 23:20:44 INFO mapred.JobClient: HDFS_BYTES_WRITTEN=1475981711/07/30 23:20:44 INFO mapred.JobClient: Map-Reduce Framework11/07/30 23:20:44 INFO mapred.JobClient: Reduce input groups=3058211/07/30 23:20:44 INFO mapred.JobClient: Combine output records=15213111/07/30 23:20:44 INFO mapred.JobClient: Map input records=17543611/07/30 23:20:44 INFO mapred.JobClient: Reduce shuffle bytes=1344597511/07/30 23:20:44 INFO mapred.JobClient: Reduce output records=100152811/07/30 23:20:44 INFO mapred.JobClient: Spilled Records=30426211/07/30 23:20:44 INFO mapred.JobClient: Map output bytes=2302612611/07/30 23:20:44 INFO mapred.JobClient: Map input bytes=534373211/07/30 23:20:44 INFO mapred.JobClient: Combine input records=91818111/07/30 23:20:44 INFO mapred.JobClient: Map output records=91818111/07/30 23:20:44 INFO mapred.JobClient: Reduce input records=152131Time: 66321与优化之前的几次日志比较,可以看到:1.In-Map combining使Map的输出数据有一定的减小(由947853到918181)biner的作用显著,将918181的数据压缩为152131输出。
4.数据测量阶段,我对所得的数据按共现关系进行了排序。
输入数据集为莎士比亚文献集,共包含44个文件,5343732字节。
共现矩阵为上三角形矩阵(a>b f[a, b] == 0),共有1001529个非零元素(共现词对)。
其中对角线元素均为0(即不统计单词与自身之间的共现情况)。
共现1次的词对数目为703630,占所有共现词对的70.3%;共现2次的词对数目为126611,占12.6%;共现次数小于等于5次的词对共962358个,占总数的92.5%。
可见,大部分共现词对只共现1次,绝大部分共同出现的次数小于等于5次。
统计发现,共现次数最高的前十名列表如下(单词1与单词2满足字典序升序):可以发现:前十名的两个单词全部是高频单词。
我在排序后的数据集内找到了我认为并非高频单词(包含特殊名词、古英语单词)的几个数据:可以发现和推测:1.莎士比亚的文章中”My Lord”和”The King”这两个短语极常出现。
体现出这些文章的时代特点和主题。
可以推测这些文章的主题多与“王室”相关,文章中包含大量有关王族、皇室的人物和对话。
2.与King最常同时出现的人名为Henry,共现了817次。
3.莎士比亚大量使用古英语中的人称代词:you在古英语中为thee(宾语)和thou(主语),your为thy,are为art等。
然而莎翁并非只用古英语的词汇。
数据中还发现,I和you共现次数为3474,是高于I和thee、thou的。
这大概是莎翁混用两种语体的体现,或者与具体的文章有关,尚不能详细得知。