Linear discriminants analysis

Download Report

Transcript Linear discriminants analysis

Introduction to Pattern Recognition for Human ICT
Linear discriminants analysis
2014. 11. 14
Hyunki Hong
Contents
• Linear discriminant analysis, two classes
• Linear discriminant analysis, C classes
• LDA vs. PCA
• Limitations of LDA
Linear discriminant analysis, two
classes
• Objective
– LDA seeks to reduce dimensionality while preserving as
much of the class discriminatory information as possible.
– Assume we have a set of 𝐷-dimensional samples {𝑥(1, 𝑥(2, …,
𝑥(𝑁 }, 𝑁1 of which belong to class 𝜔1, and 𝑁2 to class 𝜔2.
– We seek to obtain a scalar 𝑦 by projecting the samples 𝑥
onto a line 𝑦 = 𝑤𝑇𝑥.
– Of all the possible lines we would like to select the one that
maximizes the separability of the scalars.
– In order to find a good projection vector, we need to
define a measure of separation.
– The mean vector of each class in 𝑥-space and 𝑦-space is
– We could then choose the distance between the projected
means as our objective function.
1. However, the distance between projected means is not a good
measure since it does not account for the standard deviation
within classes.
This axis yields better class
separability.
This axis has a larger distance between means.
• Fisher’s solution
– Fisher suggested maximizing the difference between the
means, normalized by a measure of the within-class scatter.
– For each class we define the scatter, an equivalent of the
variance, as
where the quantity
is called the within-class
scatter of the projected examples
– The Fisher linear discriminant is defined as the linear
function 𝑤𝑇𝑥 that maximizes the criterion function
– Therefore, we are looking for a projection where examples
from the same class are projected very
close to each other and, at the same time,
the projected means are as farther apart
as possible.
• To find the optimum 𝑤∗, we must express 𝐽(𝑤) as a function of
𝑤
– First, we define a measure of the scatter in feature space 𝑥
where 𝑆𝑊 is called the within-class scatter matrix.
– The scatter of the projection 𝑦 can then be expressed as a function
of the scatter matrix in feature space 𝑥.
- Similarly, the difference between the projected means can be
expressed in terms of the means in the original feature space.
The matrix 𝑆𝐵 is called the between-class scatter. Note that, since 𝑆𝐵
is the outer product of two vectors, its rank is at most one.
– We can finally express the Fisher criterion in terms of 𝑆𝑊 and 𝑆𝐵 as
– To find the maximum of 𝐽(𝑤) we derive and equate to zero
d
u
( )
dx v
v
d
(u )  u
dx
dx
v
2
– Dividing by 𝑤𝑇𝑆𝑊𝑤
- Solving the generalized eigenvalue problem (𝑆𝑊−1𝑆𝐵𝑤 = 𝐽𝑤) yields
– This is know as Fisher’s linear discriminant (1936), although it is not
a discriminant but rather a specific choice of direction for the
projection of the data down to one dimension.
d
(v )
Example
LDA, C classes
• Fisher’s LDA generalizes gracefully for C-class
problems
– Instead of one projection 𝑦, we will now seek (𝐶−1)
projections [𝑦1, 𝑦2, …, 𝑦𝐶−1] by means of (𝐶−1) projection
vectors 𝑤𝑖 arranged by columns into a projection matrix 𝑊 =
[𝑤1| 𝑤2| …| 𝑤𝐶−1]: 𝑦𝑖 = 𝑤𝑖𝑇𝑥 ⇒ 𝑦 = 𝑊𝑇𝑥
• Derivation
– The within-class scatter generalizes as
– And the between-class scatter becomes
– Similarly, we define the mean vector and scatter matrices for
the projected samples as
- From our derivation for the two-class problem, we can write
- Recall that we are looking for a projection that maximizes the
ratio of between-class to within-class scatter. Since the
projection is no longer a scalar (it has 𝐶−1 dimensions), we
use the determinant of the scatter matrices to obtain a scalar
objective function.
- And we will seek the projection matrix 𝑊∗ that maximizes
this ratio.
- And we will seek the projection matrix 𝑊∗ that maximizes
this ratio.
- It can be shown that the optimal projection matrix 𝑊∗ is
the one whose columns are the eigenvectors
corresponding to the largest eigenvalues of the following
generalized eigenvalue problem.
Limitations of LDA
• LDA produces at most 𝐶 − 1 feature projections.
– If the classification error estimates establish that more
features are needed, some other method must be employed
to provide those additional features.
• LDA is a parametric method (it assumes unimodal
Gaussian likelihoods).
– If the distributions are significantly non-Gaussian, the LDA
projections may not preserve complex structure in the data
needed for classification.
LDA will also fail if discriminatory
information is not in the mean but in the
variance of the data.
학습 내용
특징추출
feature extraction
선형변환에 의한 특징추출
주성분분석
PCA:Principal Component
Analysis
공분산 분석과 화이트닝 변환
PCA 알고리즘, 수학적 유도, 특성과 문제점
선형판별분석법
LDA:Linear Discriminant
Analysis
LDA 알고리즘
LDA 특성과 문제점
매트랩을 이용한 실험
1. 선형변환에 의한 특징추출
목적 1
인식에 핵심이 되는 정보만 추출 → 불필요한 정보 제거
목적 2
차원의 저주 → 데이터의 차원 축소
인식률 저하 원인
“차원 축소”
dimension reduction
n차원 입력 데이터 x
선형변환 W
(m≪n)
매핑
m차원 특징 벡터 y
부분공간분석
subspace analysis
특징추출은 인식기의 성능을 좌우하는 중요한 요소이다.
1. 선형 변환에 의한 특징추출
(a)
x [2,2]
(b)
x [1,2]
y
w
W = [1,0]T
y=2
x를 W 방향으로 사영한 좌표값
x를 변환행렬 w로 사영하여 얻은 크기값
1. 선형 변환에 의한 특징추출
X : n×N 행렬
Y = [y1, …, yN], m×N 행렬
 전체 데이터 집합 X에 대한 특징추출
2차원 데이터 집합의 특징 추출 → 1차원 특징
(a)
X
(b)
X
T
W X
T
W X
W  1, 0 
W   2,1
T
T
선형변환에 의한 특징추출: 주어진 데이터를 변환행렬 W에 의해 정해지는
방향으로 사영함으로써 저차원의 특징값을 얻는 것. W의 각 열은 사영할
저 차원 부분공간의 기저를 이루어 해당 부분공간을 정의함.
 변환 행렬에 따른 특징의 분포 형태
3차원 데이터 집합의 특징 추출 → 2차원 부분공간으로 사영에 의한 특징 추출
(a)
(b)
x2
x3
x2
(c)
x3
x1
(d)
x3
x1
x2
x1
좋은 특징 추출 → 목적에 맞는 부분공간 찾기: 변환행렬 W (또는 변환행렬의 각 열로
나타내는 부분공간의 기저)를 적절히 조정하여 분석 목적에 맞는 특징 추출
2. 주성분분석(Principal Component Analysis)
데이터의 공분산 분석하여 그 성질을 이용해 선형변환 수행
 특징벡터의 통계량
평균
으로 가정
공분산
: 입력 데이터 X 사용하는 대신, 각 데이터 xi에서
사용
센터링(centering) 평균 뺀 행렬
데이터의 공분산과 선형변환된 특징 데이터의 공분산 관계 확인
: 특징 데이터 집합의 공분산은 입력 데이터의 공분산을 W로 변환해서 얻어짐.
2-1. 공분산과 분류기 관계
 공분산이 단위행렬인 경우
 공분산이 대각행렬인 경우
베이지언 분류기는 최단거리
(유클리디언 거리)로 분류
정규화된 유클리디안 거리
: 데이터의 각 요소간 상관관계는 존재하지 않고 각 요소들의
분산만 고려되는 경우임. 각 요소별로 그 표준편차 값을 나눈
다음, 유클리디언 거리 계산
가 단위행렬/대각행렬이 되도록 W 구성
→ 계산 간단
2-2. 대각화 변환
의 고유벡터 행렬
(
Given a matrix 𝐴𝑁×𝑁, we say that 𝑣 is an
eigenvector* if there exists a scalar 𝜆
(the eigenvalue) such that 𝐴𝑣 = 𝜆𝑣
의 고유치를 대각원소로 가지는 행렬
가 서로 직교, 크기가 1인 경우)
일 때, →
대각행렬
대각화 변환
diagonalization transform
: 입력 데이터 X에 대해 공분산행렬의 고유치 분석으로 서로 직교이면서
크기 1인 고유벡터 얻을 때, 이들을 열벡터 가지는 행렬 Φ로
선형변환한 Y는 대각행렬을 공분산으로 가지는 분포를 이룸.
2-3. 화이트닝 변환
: 추가 변환해서 공분산행렬이 정방행렬 되도록
Y의 공분산행렬이 대각행렬 Λ이므로, 각 대각원소의
제곱근의 역수값으로 얻어지는 행렬 Λ-1/2 이용한
선형변환해 새로운 특징벡터 Z 얻음.
W=
(
관계 이용)
단위행렬
화이트닝 변환
 복잡한 분포 특성이 사라짐
whitening transform
 최단거리분류기로 최소분류율 확보
: 입력 데이터 X에 대한 고유치행렬 Λ와 고유벡터행렬 Φ 이용한 선형
변환행렬은 단위행렬을 공분산으로 가지는 특징 데이터 집합 찾는 변환
2-3. 대각화 변환과 화이트닝 변환 예
Y: X의 고유벡터를
기저로 표현
Y Φ X
T
X
(a)
Z: X의 고유벡터에 고유치 제곱근
곱해 얻어진 벡터를 기저로 표현
(b)
Z  Λ
 12
T
Φ X
(c)
대각화 변환
: 데이터 분산이
가장 커지는 방향
화이트닝 변환
: 각 고유벡터
: 이 방향에
수직인 벡터 방향으로의 분산
2-4 주성분분석(PCA) 알고리즘
(입력 데이터 n차원 → 변환된 데이터 m차원)
변환 전의 데이터 x가 가지고 있는 정보를 차원 축소 후에도 최대한 유지 ?
(a)
(b)
 데이터 집합이 가능한 넓게 퍼질 수 있는 방향으로의 사영 바람직
 데이터의 분산이 가장 큰 방향으로의 선형 변환을 수행
 공분산 행렬의 최대 고유벡터와 고유치 = 분산의 가장 큰 방향과 분산
 데이터의 공분산 행렬의 고유치와 고유벡터를 찾아, 고유치가 가장 큰 값
부터 순서대로 이에 대응하는 m개의 고유벡터를 찾아서 행렬 W를 구성
2-5. PCA 알고리즘의 수행 단계
2-6. 3D 데이터의 주성분분석 결과
(a) 입력 데이터
(c) 1,2차 주성분벡터에 의한 특징추출
(b) 1차 주성분벡터에 의한 특징추출
(d) 1,2,3차 주성분벡터에 의한 특징추출
“대각화변환”
2-7. PCA의 수학적 유도
기저벡터 집합 {u1, u2, …, un} 에 의한 입력 데이터 표현
(직교단위기저: 서로 직교, 크기 1)
m개(m < n)의 기저벡터만을 사용한 데이터 근사
: 차원축소
S: 평균 0되도록
센터링 가정하면,
공분산행렬
기저벡터 선택에 의한 정보손실량
Lagrange multiplier
J를 최소로 하는 기저벡터를 위한 목적함수
u에 대해 미분하면,
목적함수의 최적화
u , λ : 행렬 S의 고유벡터와 고유치
공분산행렬의 고유치값은 해당 고유벡터 이용해
데이터 사영하여 얻어지는 특징값들의 분산값 나타냄.
Lagrange multiplier
when one wishes to maximize or minimize a function
subject to fixed outside conditions or constraints.
• In mathematical optimization, Lagrange multiplier method is a
strategy for finding the local maxima and minima of a function
subject to equality constraints.
• For instance, consider the optimization problem maximize f(x,
y) subject to g(x, y) = c.
Find x and y to maximize f(x, y) subject to a
constraint (shown in red) g(x, y) = c.
Contour map. The red line shows the constraint
g(x, y) = c. The blue lines are contours of f(x, y).
The point where the red line tangentially touches a
blue contour is our solution. Since d1 > d2, the
solution is a maximization of f(x, y).
Lagrange multiplier
• We need both f and g to have continuous first partial derivatives.
• introduce a new variable (λ) called a Lagrange multiplier and study
the Lagrange function (or Lagrangian) defined by
where λ term may be either added or subtracted. If f(x0, y0) is a
maximum of f(x, y) for the original constrained problem, then there
exists λ0 such that (x0, y0, λ0) is a stationary point for the Lagrange
function (stationary points are those points where the partial
derivatives of Λ are zero, i.e. ∇Λ = 0).
A stationary point or critical point is a point of the domain
of a differentiable function, where the derivative is zero.
Lagrange multiplier
• consider the 2D problem: maximize f(x, y) subject to g(x, y) = c.
• Lagrange multipliers relies on the intuition that at a maximum f(x, y)
cannot be increasing in the direction of any neighboring point where g
= c.
• Suppose we walk along the contour line with g = c. We are interested
in finding points where f does not change as we walk, since these
points might be a maximum.
→ we could be following a contour line of f, since by definition f does
not change as we walk along its contour lines. This would mean
that the contour lines of f and g are parallel here
:
for some λ
where
: the respective gradients
• auxiliary function
and solve
• Example 1: Suppose we wish to maximize f(x, y) = x + y
subject to the constraint x2 + y2 =1. The feasible set is the unit
circle, and the level sets of f are diagonal lines (with slope -1),
so we can see graphically that the maximum occurs at  2 , 2  ,
2 

 2
2
2


,

and that the minimum occurs at  2 2  .
1. Using the method of Lagrange multipliers,
g(x, y) – c = x2 + y2 –1.
2. Setting the gradient
yields the system of equations:
대입하면,


stationary points:  

2
2
,
2

2 
and
 2
2


,
 2

2


3. Evaluating the objective function f at these points yields the maximum
& the minimum: 2 ,  2
2-7. PCA의 수학적 유도
손실되는 정보량의 비중
= m개의 특징으로 표현 가능한 정보의 비율
선택할 고유벡터의 수(특징의 차수) m
θ = 0.98이라면, 정보 손실량이 전체의 2%이하
2-8. PCA의 특성과 문제점
 PCA  데이터 분석에 대한 특별한 목적이 없는 경우에 가장 합리적
인 차원축소의 기준
 PCA는 비교사 학습
 클래스 라벨 정보 활용하지 않음  분류의 핵심 정보 손실 초래
각 클래스별로 데이터의 히스토그램이 거의 겹침.
2-8. PCA의 특성과 문제점
 선형변환의 한계
 데이터의 비선형 구조를 반영하지 못함
(a)
(b)
주성분2
주성분1
어떤 방향으로의 사영도 데이터의 2D 구조를 제대로 표현하지 못함 → 커널함수, 비선형 학습방법.
3. 선형판별분석(Linear Discriminant Analysis)
 LDA 목적
 변환행렬 W의 최적화과정의 목적함수 정의 시,
클래스 라벨 정보를 적극 활용
 클래스간 판별이 잘 되는 방향으로 차원축소
PCA와 마찬가지로 선형변환에 의해 특징 추출
(a)
(a) 방향으로 사영한 특징이
(b) 보다 좋은 분류 성능 보임.
 분류에 적합한 특징 방향이란?
 각 클래스들이 가능한 서로 멀리 떨어질 수 있도록 거리를 유지
(b)
3-1. LDA
: 이분류 문제
클래스 간 거리에 대한 목적함수
분자값 커질수록 (클래스간 거
리 멀고) + 분모값 커질수록
(같은 클래스간 결집)
→ 분류 용이
클래스 Ck에 속하는 데이터들을 벡터 w로 사영해
얻어진 1D 특징값들의 평균 = 클래스 Ck의 데이터
들의 평균벡터 mk를 w 방향으로 사영한 값
변환된 특징데이터의 공분산
이용하면,
클래스간 산점행렬
Between Scatter Matrix
클래스내 산점행렬
Within Scatter Matrix
목적함수의 최적화
벡터 w는 두 평균의 차 벡터에 비례하는 형태 (앞 그림 참조)
3-2. LDA
: 다중 클래스 분류 문제
목적함수
: 클래스 Ck에 속하는 데이터 갯수
1
1
1
1
1
1
Tr {( WS W W ) (WS B W )}  Tr {( W ) ( S W ) W WS BW }  Tr {( W ) ( S W ) S BW }
T
T
T
T
T
T
목적함수를 최대로 하는 변환행렬 W
orthogonal matrix: 정방행렬 X의 각 행벡터(또는 열벡터)들이 상호직교인
단위벡터(orthonormal vector)들로 이루어짐. XXT = XTX= I (즉, X-1 = XT)
3-3. LDA 알고리즘의 수행 단계
3-4. LDA 특성과 문제점
 교사학습 능력
 선형변환의 제약점
 복잡한 비선형 구조를 가진 경우에는 적절한 변환이 불가
 커널법, 비선형 매니폴드 학습법 등을 이용한 접근 필요
 선택하는 고유벡터의 개수 (축소된 특징의 차원)
 직접 분류를 통해 얻어지는 데이터에 대한 분류율을 기준으로 결정
 행렬 SW-1SB에 의해 찾아지는 고유벡터의 개수가 제한
클래스 개수가 M 경우, SB의 랭크 M-1
 M개 클래스 분류문제에서 최대 M-1차원의 특징추출 가능
 작은 샘플집합 문제
(Small Sample Set Problem)
 입력데이터 수가 입력차원보다 작은 경우 SW의 역행렬이 존재하지 않음
 PCA로 먼저 차원축소후 LDA 적용
4. 매트랩 이용한 실습
4-1. 학습 데이터 생성
% 학습데이터의 생성 -------------------------------N=100;
m1=[0 0]; s1=[9 0;0 1];
m2=[0 4]; s2=[9 0;0 1];
X1=randn(N,2)*sqrtm(s1)+repmat(m1,N,1); % 클래스1 데이터 생성
X2=randn(N,2)*sqrtm(s2)+repmat(m2,N,1); % 클래스2 데이터 생성
figure(1);
plot(X2(:,1),X2(:,2),'ro'); hold on
plot(X1(:,1),X1(:,2),'*');
axis([-10 10 -5 10]);
save data8_9 X1 X2
4-2. PCA에 의한 분석
% PCA에 의한 분석 -------------------------------X=[X1;X2];
M=mean(X); S=cov(X);
% 평균과 공분산 계산
[V,D]=eig(S);
% 고유치분석(U:고유벡터행렬, D: 고유치행렬)
w1=V(:,2);
% 첫 번째 주성분벡터
figure(1);
% 첫 번째 주성분벡터를 공간에 표시
line([0 w1(1)*D(2,2)]+M(1),[0 w1(2)*D(2,2)]+M(2));
YX1=w1'*X1'; YX2=w1'*X2';
% 첫 번째 주성분벡터로 사영
pYX1=w1*YX1; pYX2=w1*YX2;
% 사영된 데이터를 2차원 공간으로 환원
figure(2);
% 사영된 데이터를 2차원 공간으로 환원하여 표시
plot(pYX1(1,:), pYX1(2,:)+M(2),'*');
hold on axis([-10 10 -5 10]);
plot(pYX2(1,:), pYX2(2,:)+M(2),'ro');
4-3. LDA에 의한 분석
% LDA에 의한 분석 -------------------------------m1=mean(X1); m2=mean(X2);
Sw=N*cov(X1)+N*cov(X2);
% with-in scatter 계산
Sb=(m1-m2)'*(m1-m2);
% between scatter 계산
[V,D]=eig(Sb*inv(Sw));
% 고유치 분석
w=V(:,2);
% 찾아진 벡터
figure(1);
% 찾아진 벡터를 공간에 표시
line([0 w(1)*-8]+M(1),[0 w(2)*-8]+M(2));
YX1=w'*X1'; YX2=w'*X2';
% 벡터w 방향으로 사영
pYX1=w*YX1; pYX2=w*YX2;
% 사영된 데이터를 2차원 공간으로 환원
figure(2);
% 사영된 데이터를 2차원 공간으로 환원하여 표시
plot(pYX1(1,:)+M(1), pYX1(2,:),'*');
plot(pYX2(1,:)+M(1), pYX2(2,:),'ro');
4-4. 실험 결과
생성된 데이터
PCD & LDA 결과
패턴인식 시스템 설계
얼굴인식 문제
특징추출기의 학습
영상 데이터를 위한 주성분분석
PCA에 의한 특징추출 - 아이겐페이스
LDA에 의한 특징추출 - 피셔페이스
분류기의 설계
매트랩에 의한 인식기 구현
1. 얼굴인식 문제
1-1. 다양한 변형을 가진 얼굴 영상
각도 변화
표정 변화
조명 변화
얼굴인식, 표정 인식, 포즈 인식,…
1-2. 학습 데이터의 예
0
60
-60
FERET 데이터
 개인당 9개의 데이터
 -60도 ~ + 60도까지 15도씩 포즈의 변화
학습 데이터 : 150개
테스트 데이터 : 300개
 개인당 9개중 3개 사용 (60도, 0도, -60도)  개인당 9개중 나머지 6가지 변형 사용
 총 50명 = 50개의 클래스
 총 50명
1-3. 크기 조정된 데이터
1-4. 영상 크기 조정
크기 조정
70
50
40
50
3500차원
2000차원
학습 데이터 집합 : 150ⅹ2000
테스트 데이터 집합 : 300ⅹ2000
결과
최근접이웃분류 기
Z
LDA
특징추출
Y
PCA
차원축소
X
2. 특징추출기 학습
2-1. 영상 데이터를 위한 PCA
 학습데이터 150개를 이용하여 공분산행렬∑ 을 계산한 후, 고유치 분석 수행
2000ⅹ2000
 데이터 행렬 X의 전치행렬 XT를 활용한 변형된 주성분 추출 방식을 적용
150ⅹ2000의 데이터 행렬 X의 공분산행렬 계산 대신,
고유치 분석
평균
150ⅹ150
데이터 개수
양변에
고유벡터
공분산행렬 ∑
를 곱함
고유치
∑ 의 고유벡터 구하고 (X-M)T 곱해서 W 구함.
직교행렬의 조건 만족하지 못함, 2000ⅹ150
2-2. 영상 데이터를 위한 PCA
 특징벡터의 차원 결정
 고유치의 값이 큰 것부터 차례로 몇 개를 선택할 것인가?
경험적 접근 방법
(a)
(b)
0.98
Eigenvalue
Ratio of eigen-sum
0.95
69
15
number of eigenvalues
101
number of eigenvalues
2-3. PCA 결과 - 아이겐페이스
W가 직교변환인 경우
Eigenface : 얼굴인식에 PCA를 적용하여 찾아진 고유벡터를 영상으로 표
현

= y1
+ y2
+ y3
W가 정방행렬이 아니고 nⅹm 행렬이므로
직교행렬의 조건 WWT = WTW = I를 만족시키지 못함
→ 정보의 손실량은 특징의 차원 수(기저 영상의 수)에 의존
+ … + y69
2-4. 아이겐페이스
고유치가 큰 순서대로 총 70개의 고유벡터
2-5. LDA 결과 - 피셔페이스
 PCA를 통해 얻은 69차원의 특징 데이터 집합 Y에 대해 LDA 적
용 특징 데이터 집합 Y를 각 클래스 라벨 정보를 이용하여 50개의 클래스로 나눔
SW, SB를 계산한 후
의 고유치벡터 U (69ⅹ49)를 계산
원래 PCA에서 W는 2000ⅹ150 → 2000ⅹ69
“Fisherface”
: Fischer’s linear
discriminant
3. 매트랩 이용한 인식기 구현
3-1. 분류기
 최근접이웃 분류기 + 단순한 유클리디안 거리
 총 300개의 테스트 데이터 각각에 대하여 저장된 150개의 학습데이터들과의
거리를 비교한 후, 가장 가까운 이웃으로 할당
 특징 데이터 Y : 69차원, 특징 데이터 Z : 49차원
 가능한 모든 차원에 대하여 테스트 한 후 가장 적절한 차원을 선택
 특징 데이터 Y, Z에 대해서 각각 분류 수행
3-2. 특징추출 (by PCA & LDA)
load data_person_trim
% 데이터 불러오기
Ntrn=size(train_trim,1);
% 학습데이터의 수
Ntst=size(test_trim,1);
% 테스트데이터의 수
Isize=size(train_trim,2);
% 입력벡터의 차원
Mcls = 50;
% 클래스의 수
%%%%% PCA에 의한 특징 추출
X=train_trim;
% 학습데이터 행렬
meanfig = mean(X);
% 학습데이터 행렬의 평균
M=repmat(meanfig,size(X,1),1); % 평균벡터를 데이터 수만큼 반복한 행렬
S=(X-M)*(X-M)'/Ntrn;
% 고유치분석을 위한 행렬을 계산
[V,D,U]=svd(S);
% 고유치분석
W=(X-M)'*V;
% 고유벡터 찾기
3-2. 특징추출 (by PCA & LDA)
%%%%% LDA에 의한 특징추출
eval=diag(D);
% PCA로 축소할 차원 결정
for i=1:150
if ((sum(eval(1:i))/sum(eval))>0.95) break end
end
Ydim=i;
Wo=orth(W(:,1:Ydim));
% 변환행렬의 직교화
Y=(Wo'*(X)')';
% PCA에 의한 차원축소 (학습데이터)
Yt=(Wo'*(test_trim)')';
% PCA에 의한 차원축소 (테스트데이터)
Sw=zeros(Ydim);
% Within-Scatter Matrix의 계산
for i=1:Mcls
C=Y((i-1)*3+1:i*3,:);
Sw = Sw+3*cov(C);
m(i,:)=mean(C);
end
Sb=Mcls*cov(m);
% Between-Scatter Matrix의 계산
[Vf,Df,Uf]=svd(inv(Sw)*Sb);
% LDA 변환행렬 찾기
Z=(Vf'*Y')';
% LDA에 의한 특징추출 (학습데이터)
Zt=(Vf'*Yt')';
% LDA에 의한 특징추출 (테스트데이터)
save feature_person W Vf Y Yt Z Zt; % 추출된 특징 저장
_(계속)
3-3. 얼굴인식 by PCA & LDA
load data_person_trim % 데이터 불러오기
load feature_person
% 특징 불러오기
Ntrn=size(train_trim,1); % 학습데이터의 수
Ntst=size(test_trim,1); % 테스트데이터의 수
Isize=size(train_trim,2); % 입력벡터의 차원
Mcls = 50;
% 클래스의 수
3-4. 얼굴인식 by PCA & LDA_(계속①)
%%%%% PCA 특징과 LDA 특징을 사용한 분류
for dim=1:Mcls-1
for i=1:Ntst
% 가능한 모든 특징 차원에 대하여 반복 수행
% 각 테스트 데이터에 대해 분류 시작
yt=Yt(i,:);
% 테스트 데이터에 대한 PCA 특징
zt=Zt(i,1:dim);
%Yt(:,i); % 테스트 데이터에 대한 LDA 특징
for j=1:Ntrn
% 학습데이터들과의 거리계산
dy(j)=norm(yt-Y(j,1:dim)); dz(j)=norm(zt-Z(j,1:dim));
end
[minvy, miniy]=min(dy);
%최근접이웃 찾기 (PCA 특징)
[minvz, miniz]=min(dz);
%최근접이웃 찾기 (LDA 특징)
min_labely(i)=train_label(miniy);
min_labelz(i)=train_label(miniz);
end
%최근접이웃의 클래스로 할당 (PCA)
%최근접이웃의 클래스로 할당 (LDA)
3-5. 얼굴인식 by PCA & LDA_(계속②)
error_labely=find(min_labely-test_label); %분류율 계산 (PCA)
correcty=Ntst-size(error_labely,2);
classification_ratey(dim)=correcty/Ntst;
error_labelz=find(min_labelz-test_label);; %분류율 계산 (LDA)
correctz=Ntst-size(error_labelz,2);
classification_ratez(dim)=correctz/Ntst;
[classification_ratey(dim), classification_ratez(dim)]
end % 가능한 모든 특징 차원에 대하여 반복 수행
% 특징 수에 따른 분류율 변화 그래프 그리기
figure(1);
plot([1:49], classification_ratey); hold on
plot([1:49], classification_ratez,'r');
3-6. 특징 수에 따른 분류율의 변화
분류율
LDA
PCA
특징벡터의 차원