먼저 인스턴스와 피처에 대한 개념을 이해해야 합니다. 아래와 같은 데이터가 있다고 합시다.
과목1 | 과목2 | 과목3 | |
사람1 | 90 | 100 | 85 |
사람2 | 75 | 80 | 66 |
... |
위 데이터에서 과목을 피처(feature)라고 부르고, 사람을 인스턴스(instance)라고 부릅니다.
인스턴스를 벡터로 나타내면 아래와 같습니다.
사람1=[90 100 85 ]
사람2=[75 80 88]
일반화 시키면 아래와 같습니다. 인스턴스의 개수는 N개, 피처의 개수는 n개인 경우입니다.
→x(1)=[x(1)1,⋯,x(1)n]→x(1)=[x(1)1,⋯,x(1)n]
→x(2)=[x(2)1,⋯,x(2)n]→x(2)=[x(2)1,⋯,x(2)n]
...
→x(N)=[x(n)1,⋯,x(n)n]→x(N)=[x(n)1,⋯,x(n)n]
i번째 인스턴스는 아래와 같습니다.
→x(i)=[x(i)1,⋯,x(i)n]→x(i)=[x(i)1,⋯,x(i)n]
일반적으로 벡터의 기본상태는 열벡터입니다. 아래와 같이 열벡터로 나타내겠습니다 .
→x(i)=[x(i)1⋮x(i)n]
1. 공분산행렬
이제 공분산행렬을 구해봅시다. 각 피처의 평균으로 이루어진 벡터를 아래와 같이 놓겠습니다.
(→x)m=[(x1)m⋮(xn)m]
→x(i) 에서 평균벡터 (→x)m 을 뺀 벡터를 정의합니다.
→x(i)−(→x)m=[x(i)1−(x1)m⋮x(i)n−(xn)m]
아래와 같이 두 벡터를 곱해봅시다.
(→x(i)−(→x)m)(→x(i)−(→x)m)T=[x(i)1−(x1)m⋮x(i)n−(xn)m][x(i)1−(x1)m⋯x(i)n−(xn)m]
결과는 아래와 같습니다.
(→x(i)−(→x)m)(→x(i)−(→x)m)T=[(x(i)1−(x1)m)(x(i)1−(x1)m)⋯(x(i)1−(x1)m)(x(i)n−(xn)m)⋮⋱⋮(x(i)n−(xn)m)(x(i)1−(x1)m)⋯(x(i)n−(xn)m)(x(i)n−(xn)m)]
아래와 같이 시그마를 취해줍니다.
1N∑Ni=1(→x(i)−(→x)m)(→x(i)−(→x)m)T=[1N∑Ni=1(x(i)1−(x1)m)(x(i)1−(x1)m)⋯1N∑Ni=1(x(i)1−(x1)m)(x(i)n−(xn)m)⋮⋱⋮1N∑Ni=1(x(i)n−(xn)m)(x(i)1−(x1)m)⋯1N∑Ni=1(x(i)n−(xn)m)(x(i)n−(xn)m)]
우변이 공분산행렬입니다.
1N∑Ni=1(→x(i)−(→x)m)(→x(i)−(→x)m)T=[Var[x1]⋯Cov[x1,xn]⋮⋱⋮Cov[xn,x1]⋯Var[xn]]
2. 다른 방법 (시그마 기호 없이)
→x(i) 에서 평균벡터 (→x)m 을 뺀 벡터에서 출발합시다.
→x(i)−(→x)m=[x(i)1−(x1)m⋮x(i)n−(xn)m]
아래와 같은 행렬을 정의합니다.
X=[(→x(1)−(→x)m)T⋮(→x(N)−(→x)m)T]
각 행이 인스턴스인 행렬입니다. 열은 피처입니다. 풀어서 쓰면 아래와 같습니다.
X=[x(1)1−(x1)m⋯x(1)n−(xn)m⋮⋱⋮x(N)1−(x1)m⋯x(N)n−(xn)m]
아래와 같이 곱해봅시다.
XTX=[x(1)1−(x1)m⋯x(N)1−(x1)m⋮⋱⋮x(1)n−(xn)m⋯x(N)n−(xn)m][x(1)1−(x1)m⋯x(1)n−(xn)m⋮⋱⋮x(N)1−(x1)m⋯x(N)n−(xn)m]
곱한 결과는 아래와 같습니다.
XTX=[∑Ni=1(x(i)1−(x1)m)(x(i)1−(x1)m)⋯∑Ni=1(x(i)1−(x1)m)(x(i)n−(xn)m)⋮⋱⋮∑Ni=1(x(i)n−(xn)m)(x(i)1−(x1)m)⋯∑Ni=1(x(i)n−(xn)m)(x(i)n−(xn)m)]
양변을 N으로 나눠줍니다.
1NXTX=[1N∑Ni=1(x(i)1−(x1)m)(x(i)1−(x1)m)⋯1N∑Ni=1(x(i)1−(x1)m)(x(i)n−(xn)m)⋮⋱⋮1N∑Ni=1(x(i)n−(xn)m)(x(i)1−(x1)m)⋯1N∑Ni=1(x(i)n−(xn)m)(x(i)n−(xn)m)]
우변이 공분산행렬입니다.
1NXTX=[Var[x1]⋯Cov[x1,xn]⋮⋱⋮Cov[xn,x1]⋯Var[xn]]
'공대생을 위한 수학--------------------- > 고급행렬연산' 카테고리의 다른 글
[고급 행렬 연산] 9. 두 벡터로 만든 평행사변형의 넓이 (0) | 2023.09.08 |
---|---|
[고급 행렬 연산] 8. 한 벡터를 다른 벡터에 투영 (0) | 2023.09.08 |
[고급 행렬 연산] 7. 이중 시그마 순서 바꾸기 (0) | 2023.08.25 |
[고급 행렬 연산] 5. (AB)^{T}=B^{T}A^{T} (0) | 2023.08.19 |
[고급 행렬 연산] 4. (A+B)^T=A^T+B^T 증명 (0) | 2023.08.18 |
[고급 행렬 연산] 3. 행렬과 행렬의 곱의 성분을 시그마로 나타내기 (0) | 2023.08.18 |
[고급 행렬 연산] 2. 벡터 내적의 여러가지 표현방식 (0) | 2023.08.17 |
[고급 행렬 연산] 1. 행렬과 벡터의 곱의 성분을 시그마로 나타내기 (0) | 2023.08.17 |
댓글