Home | Print | Q/A | Guest | NewsLetter
Display context of search results Case-sensitive searching
Database System
Data Warehouse
Data Analysis
Operating System
Open Source
Enterprise Architecture
Software Engineering
Process
Working Smart

SQL Server
PostgreSQL
Oracle
DB2
Teradata
MySQL
Performance Tuning
Programming

Link
Philosophy
Tools
Misc
주인놈
_
_
SideBar Edit

Contents

1 스펙트럴 분해(spectral decomposition)
2 비정칙치분해(singular value decomposition)
3 콜레스키분해(cholesky decomposition)
4 산포
5 거리


1 스펙트럴 분해(spectral decomposition) #

주성분 분석의 자료축약 또는 차원 축약의 목적으로 사용된다.
  • $values 공분산행렬의 특성치
  • $vectors 특성벡터 행렬
> cost.d <-read.table("cost.d", header=T)
> a <- eigen(var(cost.d))
> a
$values
[1] 34.310148 13.210205  7.000452

$vectors
          [,1]        [,2]       [,3]
[1,] 0.7432852 -0.38596102  0.5464075
[2,] 0.6198618  0.09017059 -0.7795130
[3,] 0.2515918  0.91809768  0.3062650

> 

다음은 주성분분석한 결과이다.
> p <- prcomp(na.exclude(cost.d), scale=FALSE)
> p
Standard deviations:
[1] 5.857487 3.634585 2.645837

Rotation:
               PC1         PC2        PC3
fuel    -0.7432852  0.38596102 -0.5464075
repair  -0.6198618 -0.09017059  0.7795130
capital -0.2515918 -0.91809768 -0.3062650
> summary(p)
Importance of components:
                         PC1   PC2   PC3
Standard deviation     5.857 3.635 2.646 --> 표준편차
Proportion of Variance 0.629 0.242 0.128 --> 기여율
Cumulative Proportion  0.629 0.872 1.000 --> 누적기여율
> 

2 비정칙치분해(singular value decomposition) #

준상관분석, 행렬도(biplot)등에서 많이 쓰인다.
> svd(cost.d)
$d
[1] 110.32576  22.84343  16.41742

$u
             [,1]          [,2]          [,3]
 [1,] -0.21215522  0.0557455210  0.0725904757
 [2,] -0.07619639  0.0370332907 -0.1049516978
 [3,] -0.11574898 -0.1296149503 -0.2949589350
 [4,] -0.08932679 -0.1431146096  0.1234046163
 [5,] -0.14429006 -0.1031125634 -0.1470916023
 [6,] -0.16302051 -0.0006433233 -0.1984222467
 [7,] -0.18418323  0.0017336700  0.0915719044
 [8,] -0.19172148  0.0688678809  0.2756749095
 [9,] -0.26590080  0.6501805280 -0.1318042864
[10,] -0.16263552 -0.0320523374 -0.0566200519
[11,] -0.11187080 -0.0840168906  0.0213498245
[12,] -0.12248962 -0.0873105804 -0.1716797465
[13,] -0.13593625 -0.1053789574 -0.1136849473
[14,] -0.13375240  0.0172668362 -0.0684177005
[15,] -0.20813275 -0.1385088088  0.2807563704
[16,] -0.10553498  0.0231003004 -0.2180119006
[17,] -0.14920051 -0.1709554639 -0.0723412842
[18,] -0.12690229 -0.2320596468 -0.2074527082
[19,] -0.16796813 -0.0919029542 -0.0486415090
[20,] -0.17239678 -0.1332897290  0.3956716562
[21,] -0.32277302  0.1043890831 -0.0005510683
[22,] -0.15240260  0.0917636909 -0.0136353114
[23,] -0.24991933 -0.1596454855  0.0679756164
[24,] -0.21008575 -0.1203127239  0.0199879122
[25,] -0.16962065 -0.3547313171 -0.1525053416
[26,] -0.09693646  0.0794405351 -0.0689330444
[27,] -0.14454429  0.0625152432  0.2635558982
[28,] -0.14497868  0.1487047602  0.0234333724
[29,] -0.09958599 -0.0022836128 -0.2181248591
[30,] -0.11888776  0.0022965253  0.1200896118
[31,] -0.15912291  0.2178887605  0.1323627644
[32,] -0.13400657 -0.0347721187  0.2107091410
[33,] -0.21290915 -0.0332402427  0.0267472202
[34,] -0.14362342 -0.0679547768  0.1378210132
[35,] -0.15695219 -0.1248936937 -0.2144344826
[36,] -0.16102451  0.2766651395 -0.2039635092

$v
           [,1]       [,2]        [,3]
[1,] -0.7008955  0.5017183 -0.50697566
[2,] -0.4766155  0.1993547  0.85620987
[3,] -0.5306441 -0.8417461 -0.09939989

> 

3 콜레스키분해(cholesky decomposition) #

회귀선 추정에 이용된다. 이 부분은 도대체 뭐라는지 모르겠다 ㅡㅡ;;
> At <- chol(var(cost.d))
> At
            fuel   repair   capital
fuel    4.797224 2.577823 0.6058939
repair  0.000000 3.301354 0.9726902
capital 0.000000 0.000000 3.5566980
> t(At)%*%At #공분산행렬
             fuel    repair   capital
fuel    23.013361 12.366395  2.906609
repair  12.366395 17.544111  4.773082
capital  2.906609  4.773082 13.963334

4 산포 #

평균으로부터의 자료의 퍼짐의 정도를 측정하는 척도
> S <- var(cost.d)
> prod(eigen(S)$values) #일반화된 분산
[1] 3172.914
> sum(diag(S)) #전체변이
[1] 54.52081
> 
이상치를 제거해보면..(공분산과 상관계수 참고)
> S <- var(cost.d[-c(9,21), ]) #9, 21번째 자료 제외, 이상치이므로.., 콤마(,)주의!!
> prod(eigen(S)$values) #일반화된 분산
[1] 1052.025
> sum(diag(S)) #전체변이
[1] 35.27106
> 

5 거리 #

두 점 사이의 거리를 정의하는 방법으로, 이상치 제거에 주로 사용된다.
  • 유클리디안 거리(Euclidean distance) : 모든 변수가 동일한 단위로 측정되고, 독립일 경우 사용한다.
  • 표본 마하라노비스 거리(mahalanobis distance): 모든 자료에 입각한 표본공분산행렬을 이용하여 사용
> mah <- mahalanobis(cost.d, mean(cost.d), var(cost.d))
> sort(mah)
 [1]  0.1118357  0.3881699  0.4038355  0.4943593  0.5103162  0.6876501  0.9259149  1.0222128  1.0360761  1.0909704  1.1795764
[12]  1.2436025  1.2828406  1.3408737  1.3693061  1.7448672  1.8811388  2.0838168  2.2881410  2.2910694  2.3969789  2.4234025
[23]  3.0191470  3.0324225  3.1860502  3.1916645  3.2669984  3.3742718  3.5981017  4.2023630  4.2800402  5.0913270  5.8390193
[34]  6.3492220 10.7295757 17.6428421
> 

10.7295757과 17.6428421의 거리가 크므로 이상치 자료일 가능성이 매우 높다.

EditText|Print|FindPage|DeletePage|LikePages|http://www.databaser.net|last modified 2010-03-08 17:36:45