728x90

선형 판별 분석 LDA

- 선형 반별 분석 Linear Discriminant Analysis LDA는 주성분 분석 Principal Component Analysis같은 차원 축소법

- 클래스간 분산을 최대화 하고, 클래스내 분산을 최소화 하는 방법

 

 

 

LDA 수행 결과

- 클래스 분할을  최대화하는 주축으로 사상하여, 선형 부공간으로 차원 축소

- 아래의 경우 2차원 샘플 데이터에 LDA를 수행한 결과

 => 좌측의 1차원 부공간은 최악의 선형 부공간

 => 우측의 1차원 부공간은 최적의 선형 부공간으로 모든 2차원 샘플데이터가 분류하기 적합하게 분포됨.

 

https://funnypr.tistory.com/entry/Linear-Discriminant-AnalysisLDA

 

 

 

 

LDA와 PCA의 차이

- 아래의 그림은 PCA와 LDA의 차이를 보여줌

 => PCA는 분산을 최대화하는 주축을 찾음. -> 데이터의 표현을 남기도록 축소

 => LDA는 데이터 분할에 적합하도록 최대화하는 주축을 찾음. -> 데이터 최적 분류로 축소

https://rpubs.com/markloessi/505575

 

 

 

LDA의 의미

1. 클래스 omega_1에 속하는 N_1개의 샘플과 클래스 omega_2에 속하는 N_2개의 샘플 데이터들

 d차원 표본들의 집합 x = {x1, ..., x_n}이 있을때, 1차원 직선상의 사영을 다음의 선형 변환 식으로 표현

2. omega_1과 omega_2에 속하는 샘플들. 클래스 내부의 샘플들은 분산을 줄이고, 클래스 간의 분산을 키우도록 수행

=> 주성분 분석 PCA가 데이터를 잘 표현하는 D차원에서 A차원으로 변환했다면

=> LDA는 클래스간 분산이 최대화 되도록 D차원에서 1차원으로 변환.

 

 

300x250

'인공지능' 카테고리의 다른 글

인공지능 - 3. 지식  (0) 2020.11.11
인공지능 - 1. 개요 ~ 탐색  (0) 2020.10.15
패턴인식 - 8. 주성분분석  (0) 2020.08.05
패턴인식 - 7. 비모수 밀도 추정  (0) 2020.08.04
패턴인식 - 6. 가우시안 혼합 모델  (0) 2020.08.04
728x90

1. 차원이 너무 클때의 문제와 개선법

차원을 줄여야 하는 이유

- 패턴 인식에서 다차원의 특징 벡터를 사용하는데 어떤 벡터를 사용할까?

- 어떤 벡터를 사용할지와 특징 개수에 따라서 패턴 인식기의 성능이 크게 좌우됨.

 

차원의 저주 curse of dimensionality : 차원이 큰 경우의 문제점

- 잡음들도 포함되어 분류에 에러가 심해짐

- 패턴 분류기의 학습과 분류 속도가 느려짐

- 모델링해야할 집합이 너무 큼

 

주성분분석 principal component analysis

- 고차원 특징 벡터를 중요한 특징들을 추출하여 저차원의 특징벡터로 만드는 방법

 

주성분 분석의 사용 예시

- 데이터 시각화 : 고차원 데이터를 시각화 하기 위해서 2차원이나 3차원으로 축소함

- 특징 추출 : 고차원 데이터 집합에 강건한 분류기를 만들려하나 샘플이 부족

               -> PCA로 차원 축소하여 설계시 적은 샘플로 좋은 성능 보임

 

 

 

 

 

 

 

 

2. 고유 벡터와 고유치

고유벡터와 고유치 개요

- 행렬 A가 주어질때 다음의 정의를 만족하는 값 lamdba를 고유치 eigen value 와 벡터 v를 고유 벡터 eigen vector

고유벡터의 의미

- 행렬 곱셈의 특별한 경우

- 다음의 예시를 보자

- 위의 곱은 원래 백터의 스칼라 곱으로 결과가 안나오지만, 아래의 곱샘 결과는 원래의 벡터에 스칼라 곱이 나옴

- 이유 

     1. 벡터 (3; 2)는 2차원 점으로 원점 (0,0)에서 (3, 2)를 가리킴.

     2. 좌측의 정방 행렬은 벡터의 왼쪽에서 곱하여 벡터를 다른 위치로 만든는 변환 행렬

     3. 정방 행렬이 벡터를 직선 y = x에 대칭하게 만드는 행렬의 경우, 벡터는 변환 행렬을 곱해도 자기자신이 됨

     4. 이 때 벡터 (3; 2)는 변환 행렬의 고유 벡터

- 특징

     1.고유 벡터는 정방 행렬에서만 존재하나 모든 정방 행렬은 고유 벡터를 갖고 있지 않음.

     2. 정방 행렬이 n x n 인 경우 고유 벡터는 n 개

     3. 고유 벡터는 곱하기 전에 스케일링을 해도 여전히 동일한 스칼라 곱의 결과가 나옴

        => 스칼라 값은 고유벡터의 길이를 늘리거나 줄이기 밖에 못함

     4. 고유벡터들은 서로 직교 orthogonal함

        => 셈플 데이터들을 x-y축이 아닌 직교 고유 벡터를 기저로하여 표현 가능

 

 

고유 값의 의미

- 이미 고유 벡터에서 설명.

- 고유 벡터의 스칼라 곱이 고유값 -> 위 예시에서 4가 고유벡터의 고유치

 

 

* 고유값과 고유벡터가 중요한 이유 !!!!

-> 특이값 분해 SVD, 선형 연립방정식의 해, 주성분 분석 PCA 등 많이 사용됨

 

 

 

 

 

 

 

3. 주성분 분석법

다변량 분석 multivariate analysis

- 각 차원간에 상관 관계를 가지는 변수 데이터들을 다루게 됨.

 

주성분 분석 PCA Principal Component Analysis

- 다차원 특징 벡터로 이루어진 데이터의 정보들은 유지시키면서 낮은 차원으로 축소시키는 다변량 처리 방법 중 하나

 

주성분 분석에서의 차원

- 특징 데이터는 특징 벡터의 차원수 만큼의 축을 기준으로 표현

 => ex. 2차원 특징 데이터는 2개의 기준 축으로 표현

- 차원 축소 -> 기준 축을 줄여나간다 

 => 10차원 데이터를 4차원으로 줄인다 -> 10개의 기준축을 4개로 축소함

 

주성분 분석의 과정

1. 다변량 데이터의 주성분인 주축을 통계적 방법으로 구함

2. 주축 principal axis 방향으로 특징 벡터 x를 사영 projection하여 차원 축소.

=> 상관 관계있는 변수들을 상관 없는 변수들의 집합으로 기준축 중심으로 변환하는 것

=> Karthunen-Loeve 변환 KL 변환이라고도 부름

 

차원 수를 축소하는 이유

- 차원의 저주 문제를 개선하기 위해 줄이며, PCA로 낮은 차원에서 최적의 특징 벡터를 효과적으로 다룰 수 있음

 

주성분 분석의 주축에 따른 변화

- 주축을 어떻게 설정하느냐에 따라서 변량의 분산이 달라짐

 => 가장 유용한 성분은 가장 큰 분산값을 가질떄의 성분들

 

 

 

 

 

 

 

4. 고유치, 고유벡터 실습

4.1 균일 분포 샘플 띄우기

 균일 분포로 차원이 2인 벡터 1000개 생성 후 플로팅

clc;
clear all;


R1 = rand(1000, 2);
figure;
plot(R1(:,1), R1(:,2), "r*");

grid
axis("square");
title("uniform distributed random vectors");
xlabel('x');
ylabel("y");

 

4.2 원점 조정

- 샘플 데이터의 중심이 0이 되도록 수정

clc;
clear all;


R1 = rand(1000, 2);


R1_mean = [mean(R1(:,1)), mean(R1(:,2))];
Rctr = [R1(:, 1) - R1_mean(:, 1) , R1(:,2) - R1_mean(:,2)];
figure;
plot(Rctr(:,1), Rctr(:,2), "r*");


grid
axis("square");
title("uniform distributed random vectors의 원점을 0으로");
xlabel('x');
ylabel("y");

 

4.3 샘플 데이터를 원으로 만들기

- 반경 0.5 넘어가는 샘플들은 제거

clc;
clear all;


R1 = rand(1000, 2);


R1_mean = [mean(R1(:,1)), mean(R1(:,2))];
Rctr = [R1(:, 1) - R1_mean(:, 1) , R1(:,2) - R1_mean(:,2)];

for i = 1:1000
    
    if ((sqrt(Rctr(i, 1)^2 + Rctr(i, 2)^2)) > 0.5)
        for j = 1 : 2
            Rcirc(i, j ) =0;
        end
    else
        for j = 1 : 2
            Rcirc(i, j) = Rctr(i, j);
        end
    end
end

plot(Rcirc(:,1), Rcirc(:,2), "r*");

grid
axis("square");
title("uniform distributed random vectors의 원점을 0으로");
xlabel('x');
ylabel("y");

 

 

 

4.4 공분산 행렬과 고유벡터, 고유치 구하기

- 방금 구한 원의 데이터들로 공분산 행렬 계산

clc;
clear all;


R1 = rand(1000, 2);


R1_mean = [mean(R1(:,1)), mean(R1(:,2))];
Rctr = [R1(:, 1) - R1_mean(:, 1) , R1(:,2) - R1_mean(:,2)];

for i = 1:1000
    
    if ((sqrt(Rctr(i, 1)^2 + Rctr(i, 2)^2)) > 0.5)
        for j = 1 : 2
            Rcirc(i, j ) =0;
        end
    else
        for j = 1 : 2
            Rcirc(i, j) = Rctr(i, j);
        end
    end
end



N = 1000
a = 0;
for i = 1 : N
    a = a + Rcirc(i, 1)^2;
end
a = a /N;

b = 0;
for i = 1 : N
    b = b + Rcirc(i, 1) * Rcirc(i, 2);
end
b = b /N;

c = 0;
for i = 1 : N
    c = c + Rcirc(i, 2)^2;
end

c = c / N;
C = [a b;b c]

[EigenVector, EigenValue] = eig(C)

 

 

 

5. 주성분 분석실습

- 방금 구한 2차원 데이터를 1차원으로 축소시키자

5.1 데이터 준비하기

 균일 분포로 차원이 2인 벡터 1000개 생성

- 방금 구한 2차원 데이터를 1차원으로 축소시키자

clear all;
close all;
clc;

% 정규 분포를 따르는 2차원 데이터 생성
x(1, :) = randn(1, 100);
x(2, :) = randn(1, 100) *3;

% 타원 모양 분포를 약간 회전시키자
% 카티지안 좌표계를 극좌표계로 변환후 pi/3회전 후 다시 카티지안으로변환
[p(1, :), p(2,:) ] = cart2pol(x(1, :), x(2, :));
p(1, :) = p(1, :) - pi/3;
[x(1, :), x(2,:)] = pol2cart(p(1,:), p(2,:));

% 데이터 플로팅
scatter(x(1,:), x(2,:));
axis equal;

 

5.2 주성분 찾기

- pacov : 공분산 행렬로 주성분을 바로 구하여 고유값 크기순으로 정렬해주는 함수

 * 주성분 : 고유 벡터를 기저로하고, 고유치만큼 길이를 갖는 데이터를 가장 잘나타내는 축?

=> 붉은 선이 제1 주성분으로 최대 변동 축

=> 녹색 선이 제 2 주성분 , 제1주성분과 수직

clear all;
close all;
clc;

% 정규 분포를 따르는 2차원 데이터 생성
x(1, :) = randn(1, 100);
x(2, :) = randn(1, 100) *3;

% 타원 모양 분포를 약간 회전시키자
% 카티지안 좌표계를 극좌표계로 변환후 pi/3회전 후 다시 카티지안으로변환
[p(1, :), p(2,:) ] = cart2pol(x(1, :), x(2, :));
p(1, :) = p(1, :) - pi/3;
[x(1, :), x(2,:)] = pol2cart(p(1,:), p(2,:));


% 데이터 플로팅
scatter(x(1,:), x(2,:));
axis equal;

% 주성분 PC 찾기
[pc, latent, explained] = pcacov(cov(x'));

% 데이터 상에 주성분 그림
hold on;
plot([-4 4] * pc(1,1), [-4 4] *pc(2, 1), 'r-');
plot([-2 2] * pc(1,2), [-2 2] *pc(2, 2), 'g-');

 

 

5.3 데이터들이 주성분을 주축으로 하도록 회전

-원 데이터 집합과 주성분을 곱하면 데이터들이 주성분이 주축이 되도록 회전됨

clear all;
close all;
clc;

% 정규 분포를 따르는 2차원 데이터 생성
x(1, :) = randn(1, 100);
x(2, :) = randn(1, 100) *3;

% 타원 모양 분포를 약간 회전시키자
% 카티지안 좌표계를 극좌표계로 변환후 pi/3회전 후 다시 카티지안으로변환
[p(1, :), p(2,:) ] = cart2pol(x(1, :), x(2, :));
p(1, :) = p(1, :) - pi/3;
[x(1, :), x(2,:)] = pol2cart(p(1,:), p(2,:));


% 주성분 PC 찾기
[pc, latent, explained] = pcacov(cov(x'));

% 주성분을 축으로 데이터를 회전
y = (x' * pc)';

% 데이터 플로팅
figure;
scatter(y(1, :), y(2, :));
axis equal;

 

 

 

 

5.4 축 상으로 주성분이 놓여졌는지 확인하기

clear all;
close all;
clc;

% 정규 분포를 따르는 2차원 데이터 생성
x(1, :) = randn(1, 100);
x(2, :) = randn(1, 100) *3;

% 타원 모양 분포를 약간 회전시키자
% 카티지안 좌표계를 극좌표계로 변환후 pi/3회전 후 다시 카티지안으로변환
[p(1, :), p(2,:) ] = cart2pol(x(1, :), x(2, :));
p(1, :) = p(1, :) - pi/3;
[x(1, :), x(2,:)] = pol2cart(p(1,:), p(2,:));


% 주성분 PC 찾기
[pc, latent, explained] = pcacov(cov(x'));

% 주성분을 축으로 데이터를 회전
y = (x' * pc)';

% 데이터 플로팅
figure;
scatter(y(1, :), y(2, :));
axis equal;

% 주성분 PC 찾기
[pc2, latent, explained] = pcacov(cov(y'));
% 데이터 상에 주성분 그림
hold on;
plot([-4 4] * pc2(1,1), [-4 4]*pc2(2,1), 'r-');
plot([-2 2]* pc2(1, 2), [-2 2] *pc(2, 2), 'g-');

 

 

5.5 주성분 분석

-원 데이터와 주성분을 내적하면 데이터들이 주성분 축으로 사상되어 1차원 데이터로 축소됨

clear all;
close all;
clc;

% 정규 분포를 따르는 2차원 데이터 생성
x(1, :) = randn(1, 100);
x(2, :) = randn(1, 100) *3;

% 타원 모양 분포를 약간 회전시키자
% 카티지안 좌표계를 극좌표계로 변환후 pi/3회전 후 다시 카티지안으로변환
[p(1, :), p(2,:) ] = cart2pol(x(1, :), x(2, :));
p(1, :) = p(1, :) - pi/3;
[x(1, :), x(2,:)] = pol2cart(p(1,:), p(2,:));


% 주성분 PC 찾기
[pc, latent, explained] = pcacov(cov(x'));

% 주성분을 축으로 데이터를 회전
y = (x' * pc)';

% 1차원으로 축소하기 위해 두번째 성분을 0으로 설정.
y(2,:)=0;

%원 데이터 역변환
x = (y' * inv(pc)');

% 데이터 플로팅
figure;
scatter(y(1, :), y(2, :));
axis equal;

300x250
728x90

1. 비모수적 밀도 추정 예시

모수적 밀도 추정

- 그동안 모수적인 방법으로 샘플데이터가 가우시안 분포를 따른다고 가정 

  -> 확률 밀도함수 모델링 -> 로그 우도 최대화하는 파라미터 찾음

 * 대부분의 데이터 분포는 유니모달이 아니라 멀티 모달

- 멀티 모달을 다루는 GMM을 살펴봄. 

 => 모수적인 밀도 추정 방법은 어느 확률 밀도 함수를 가정하고 샘플 데이터로부터 적절한 파라미터를 추정하는 방법

- 아래의 그림은 샘플 데이터들이 주어질때 이를 가장 잘 나타내는 확률 밀도 함수 추정 예시들을 보여줌

https://en.wikipedia.org/wiki/Density_estimation

 

비모수적 밀도 추정

- 파라미터 추정없이 표본 데이터로부터 밀도 함수를 추정하는 방법.

- 종류 : 히스토그램을 만드는 방법, 커널 밀도 추정 등

 

 

 

 

2. 히스토그램 방법

히스토그램을 이용한 밀도 표현

- 히스토그램을 이용하면 데이터 밀도를 간단하게 표현 가능

- 데이터를 연속된 간격으로 나누고 각 관측 되는 표본 빈도를 카운트 -> 막대 높이로 밀도 표현

- 히스토그램의 확률 함수 

- 아래의 그림은 샘플 데이터가 주어질때 히스토그램으로 밀도를 추정한 예시

http://doingdatascience.com/?tag=kernel

 

 

 

 

3. 커널 밀도 추정

미지의 확률밀도도 함수 추정

- 특징 벡터 x가 표본 공간 영역 R에 존재할때 P(x)를 정의

 -> 특징 벡터 x가 p(x)로부터 발생을 가정 => 표본 공간 R에 속할 확률 P(x)는 아래의 적분으로 정의

- N개의 벡터 집합이 p(x)로 생성된 경우, N개중 k개가 R영역에 속할 확률 P(k)는 (이항분포로)다음과 같이 정의

- 이항 pmf의 성질로 평균과 분산은 다음과 같이 구할수 있음.

- 여기서 n이 무한대일때 P(x)는 다음과 같이 추정됨

 

 

 

 

 

 

300x250
728x90

1.가우시안 혼합모델

가우시안 혼합모델의 필요성

- 확뮬 밀도 함수를 추정하기 위해서, 샘플 데이터들이 특정한 분포(대표적으로 가우시안)을 따른다고 가정

 => 우도를 최대화하는 최우 추정법 MLE Maximization Likelihood Estimation 사용

- but. 특정한 분포를 모르는 경우 비모수적 방법인 파젠창이 있음.

 

 

가우시안 혼합 모델 Gaussian Mixture Model

- 표본 데이터 집합의 분포를 하나의 확률 밀도 함수가 아닌 여러개의 가우시안 확률 밀도함수로 데이터 분포 모델링

  => 가우시안 혼합 모델은 준 모수적 방법 semi-parametric

  => 개별 밀도 함수를 전체 확률 밀도 함수 성분 커널로 간주

- 아래의 그림은 2차원 샘플 데이터에 대한 GMM 데모델링

 * 가우시안 분포가 아니라 다른 분포도 상관없음

https://gfycat.com/ko/smugchiefhummingbird

 

 

 

 

 

 

 

 

 

 

2.가우시안 혼합모델 표현과 장점

가우시안 혼합 모델의 모델링

- 전체 확률밀도 함수는 M개의 가우시안 확률 밀도 함수의 선형 결합.

 => oemga_i번째 theta_i 파라미터를 가진 확률 밀도 함수들의 가중치를 반영한 합이 가우시안 혼합 모델

 

혼합 가중치 성분

- P(omega_i)는 혼합 가중치 성분으로 M까지 다합하면 1이됨

 

파라미터 집합의 형태

- i번째 파라미터 집합 theta_i는 다음과 같이 구성됨

- 여기서 가우시안 모델의 공분산 형태는 완전, 대각, 원형이 될수 있음.

- 혼합 성분 개수는 데이터 집합 크기에 따라 조절 가능

 

 

가우시안 혼합 모델의 장점

- 혼합 성분 개수와 파라미터 값들이 적절히 제공하면 모든 분포에대해 완벽히 모델링 가능

- 비대칭성과 다중 봉우리?(멀티모달) 특성을 가짐

 => 단일 가우시안 확률밀도함수보다 강인한 밀도 추정 가능

 

 

 

 

 

3. EM을 이용하여 GMM 모델링

GMM의 목표

- 샘플 데이터 집합 x가 주어질때 로그 우도를 최대화 하는 혼합 가우시안들의 파라미터를 추정

- K-means와 마찬가지로 EM 알고리즘으로 최적 모델 추정

 

 

GMM 관련 정의

- 샘플 데이터 집합이 x라면, 학습할 데이터 셋을 아래와 같이 x_n으로 정의

- M개의 가우시안 모델들 중 j번째 모델의 파라미터를 다음과 같이 정의

- j번쨰 개별 가우시안 확률 밀도 함수를 아래와 같이 정리

 

 

- 전체 확률 밀도 함수를 M개의 개별 확률 밀도 함수들의 선형 결합으로 정리면 

* 수식 정리하려고하는데 너무 길어진다.

GMM의 특징과 확률 밀도 함수를 추정하는 과정은 대강 이해했으니 넘어가자.

 

 

GMM 정리

- 개별 가우시안 모델들을 혼합하여 다양한 샘플데이터에도 강인하게 만든 모델

 * 여기서 분포는 가우시안 확률 분포에 한정하지 않음

- 전체 확률 분포는 M 개의 개별 확률 분포들와 가중치들의 곱 합과 같음.

- GMM의 파라미터 집합은 M개의 원소의 평균, 분산, 가중치들로 이루어짐.

- EM 알고리즘을 통해 로그 우도가 최대가 되는 지점을 찾아 해당 파라미터 hat{theta}가 최적의 가우시안 혼합 모델의파라미터 집합 

 

 

 

 

 

 

 

 

 

300x250
728x90

1. 데이터 마이닝 개요

데이터 마이닝

- 데이터로부터 의미있는 정보를 추출하는 학문

- ex. 벡터 양자화, 클러스터링

 

 

 

 

패턴인식 시스템의 학습 과정

- 지도 학습 supervised learning이나 비지도학습 unsupervised learning으로 수행함.

- 지도 학습 : 특징벡터 x와 클래스 omega가 같이 주어진 상황에서의 학습

- 비지도학습 : 특징 벡터 x = {x1, ..., xn}만으로 이루어진 데이터로 수행한 학습

- 클러스터링 : 정답(클래스)가 정해지지 않은 데이터들을 적절하게 분류하여 모아주는 방법

 

 

 

비지도 학습의 장점

- 표본이 너무 많아서 라벨링 하기 힘든 경우

- 특징 벡터에 클래스 라벨이 주어지지 않았을 때

- 표본들이 작은 프로토타입 원형들로 분류될수 잇을때

 

 

 

 

 

 

 

 

2. 비지도 학습에 관하여

비지도 학습의 방법들

- 모수적 혼합 모델 구축하는 방법과 비모수적 방법 2가지가 존재

 

 

모수적 혼합 모델 구축을 통한 비지도 학습

- 여러개의 확률 밀도 함수로 주어진 클래스 데이터를 모델링

- 아래의 식과 같이 수학적 모델링 수행하며 혼합 모델이라 부름

 

비모수적 방법

- 데이터가 어느 확률 밀도 함수를 따른다는 가정 없이, 즉 파라미터 없이 정해진 클래스 수 만큼 데이터를 나누는 과정

- 대표적으로 k-means 클러스터링 알고리즘이 존재 => 최적화 기법으로 EM 알고리즘 사용.

 

 

 

 

 

 

 

 

 

 

3. 벡터 양자화

벡터 양자화 vector quantization와 클러스터링 clustering의 의미

- 벡터 양자화 = 클러스터링. 둘이 동일한 뜻

- 벡터 양자화 : 특징벡터 집합 x = [x1, ..., xn]를 K개의 특징 백터 집합 y = [y1, ... yk]로 사상

   => 사상 함수 y_i = c(x_i)가 정의됨.   

       * c( )는 양자화 연산자

      * y_i는 코드 벡터, 코드 워드, 클러스터라 부름

      * y는 코드 워드(클러스터)들의 모임인 코드북이라 함.

 - 클러스터의 갯수 : 코드북의 크기

     => n개의 특징 벡터 데이터들을 K개의 클러스터로 분류하는것이 벡터 양자화(클러스터링)

- 클러스터 중심점 센트로이드 centroid : 특정 클러스터에 소속한 특징 벡터들의 중심점

- 코드 북의 크기 K는 미리 정해져 있어야함

- 아래으 그림은 kmeans 클러스터링 예시

https://dashee87.github.io/data%20science/general/Clustering-with-Scikit-with-GIFs/

 

 

 

 

 

 

 

 

4. 최적화의 필요성

양자화 오차의 발생

- 특징 벡터 집합 x를 새 클러스터 집합 y로 양자화 하는 중 오차 발생

- 벡터 양자화는 특징벡터들 간의 거리 척도가 많이 사용됨. 특징 공간에 맞는 척도 사용 필요

  => 대표적으로 유클리디안 거리가 가장 많의 사용

- x, y 사이의 유클리디안 거리를 다음과 같이 정의

최적화 방향

- 특징 벡터 하나 xn와 중심점 centroid c(x) 사이의 거리가 최소가 되도록 최적화 수행 필요

- 중심점의 좌표는 해당 클러스터에 속하는 모든 특징 벡터들의 평균

평균 왜곡 mean distortion

- 유클리디안 거리로 구한 오차들의 총합 . 평균 왜곡은 아래와 같다.

코드 벡터 집합 구하기의 문제

- 평균 왜곡을 최소화 하는 코드 벡터 집합 y를 어떻게 구할것인지 최적화 과정을 사용 필요

 

벡터 양자화의 문제와 제안된 알고리즘

  1. 코드북 설계 : 주어진 데이터 집합에 최적의 코드북 찾기        => Kmeans 알고리즘            

  2. 양자화 : 주어진 데이터에 가장 가까운 코드벡터 찾아야함      => 비균일 이진 분할

  3. 코드 워드 거리 : 주어진 벡터에 가장 가까운 워드 찾기          => kmenas 알고리즘에 따르는 이진분할 알고리즘

 

 

 

 

 

 

 

 

 

 

5. k-means, EM 알고리즘

EM 알고리즘 Expectation Maximization

- 숨겨진 정보를 가진 문제로부터 최적해를 찾는 유용한 알고리즘

  => 최적의 코드 벡터들 centroids가 클러스터들의 중심이 될 것

- 숨겨진 정보를 추정 expectation하고, maximization을 반복하여 최적해를 찾아내가는 과정

 => 대표적인 EM 최적화 알고리즘이 K-menas

 

 

 

EM 알고리즘과 K-means 알고리즘의 차이

- EM 알고리즘 : 초기값 선택이 지역적 최적해를 찾는데 가장 중요한 요소

- K-means : 아무 초기값에서 E-M 과정을 수렴할떄까지 반복

  => 임의의 중심점들에 속하는 클러스터들을 선정(E) -> 크러스터들로부터 중심점 결정(M) 반복

 

 

 

K-menas 알고리즘

1. 데이터 집합 x = [x1, ... , xn]이 주어지고, k개의 초기 중심 집합(코드 벡터 집합) y = [y1, ..., yk] 생성

2. Expectation : y_i에 가까운 클러스터들을 선정 => x의 모든 원소들은 y의 원소중 하나에 속하게 됨.

3. Maximization : 새로운 중심점 갱신

4. 총 평균 왜곡 계산

 

5. 총 평균 왜곡이 지정안 오차나 반복횟수가 될때 까지 2 ~ 4 반복

300x250
728x90

오류확률을 최소화 하는 결정 규칙(MAP)

- MAP Maximum a Posterior 사후확률 최대화는 판별 함수로 수식화함

 

 

판별함수가 가우시안을 따르는 경우

- 공분산 행렬의 형태에 따라 데이터가 여러 형태로 분포

 

 

베이즈 분류기

- 클래스들의 데이터가 기본적으로 가우시안으로 따른다고 봄

 => 판별식이 아닌 이차형식으로 표현

 * 아래는 이차형식의 예

- 베이즈 분류기는 이차 형식으로 표현되므로 비선형(이차) 분류기라도 함.

 

 

 

 

복습) 우도비 결정규칙들에 따른 판별함수

복습) 판별식 discriminant equation

 

 

 

 

베이즈 분류기가 선형분리기가 되는 경우

- 데이터 분포(공분산)이 다음의 경우를 따르면, 선형 분류기가 됨.

1. 클래스들이 모두 가우시안 분포를 따르고, 공분산 값도 동일하며, 사전 확률이 같은 경우

   => 마할라노비스 거리 분류기

2. 클래스 모두 가우시안을 따르고, 항등 행렬에 비례하는 동일한 공분산값을 가지며, 사전확률이 같음

   => 유클리디안 거리 분류기

 

 

 

 

공분산 행렬의 종류

- 대부분의 분류기들은 베이즈 분류기인 이차 분류기로부터 유도됨.

- 아래의 그림과 같음

 

 

 

 

가우시안 확률 밀도함수 일반식

- 다변량 가우시안 확률밀도함수는 아래와 같이 정의됨

- MAP 판별함수를 구하면 다음과같음.

- 상수항을 제거하고 자연로그를 취하면 아래의 베이즈 이차 판별 함수식을 구함.

 

 

 

 

 

 

공분산이 1번 형태의 경우 판별함수 정리

- 베이즈 이차 판별 함수식의 공분산이 1번 경우와 같다면

- 특징 벡터들이 모든 클래스에서 동일한 분산 값을 가지고, 공분산이 0으로 서로 각 차원간에 독립

 => 공분산이 0이므로 제거해서 정리하자

 

-이 식을 정리하고

 

- 모든 클레스에 대해서 동일한 상수항인 x^T x 항을 제거하면, 기존의 이차 형식이던 판별함수가 일차 선형이 된다.

 => 결정 경계 decision boundaray는 g_i(x) = g_j(x)인 초평면 hyper plane임

- 사전확률 P(omega_i)가 모든 클래스에서 동일한 경우 아래와 같이 판별함수는 정리됨.

 => 이를 최소 거리 minimum distance 분류기 or 최근접 평균 분류기 nearest mean 라고 함

 

 

 

 

 

 

 

 

 

 

 

최근접 평균 분류기 nearest mean classifier

- 입력되는 특징벡터와 각 클래스의 중심간 유클리디안 거리가 판별함수가 되는 간단한 분류기

 

 

- 아래의 그림은 최근접 평균 분류기로 구한 결정 경계들

 

 

 

 

 

 

 

 

 

 

 

 

공분산이 3번 형태의 경우 판별함수 정리

- i번째 공분산 행렬이 비대각 행렬 Sigma인 경우

- 이차 판별함수는 MAP 결정 기준 판별 함수로 다음과 같이 유도 및 정리 됨.

- log |Sigma|는 상수항이므로 제거하면, 마할라노비스 거리를 얻게 된다.

- Sigma = 1이면 유클리디안 거리와 마할라 노비스 거리는 동일해짐

https://www.researchgate.net/figure/Comparison-of-the-Mahalanobis-distance-x-and-the-Euclidean-distance-between-a-point-P-and_fig3_232630604

 

- 이차항을 정리하자

- 이차항은 상수이므로 생략하면, 이 판별 함수는 선형이 됨

 => 결정 경계는 초평면(hyper plane)이 됨.

 

- 사전 확률이 모든 i에 대해서 같담면 다음의 식을 얻음

 => 아래의 식을 마할라노비스 거리 분류기.

 

 

 

300x250
728x90

선형 분류기 linear classifier 개요

- 피셔의 선형 분류기, SVM의 기초가 되는 간단한 분류기

 

이차 분류기 nonlinear classifier 개요

- 판별함수 discriminant function가 가우시안 분포를 따를 때, 판별식이 행렬의 이차형태로 표현되는 분류기

 

 

 

 

 

 

 

 

선형 분류기

- 선형으로 분리가 가능한 두 클래스로 이루어진 데이터 분류하는 판별식으로 정의

- 2차원 데이터 -> 판별식은 직선(결정 경계 dicision boundary),

   3차원 데이터 -> 2차원 평면 dicision plane,

   다차원 데이터 -> 초평면 hyper plane

 

선형 분류기와 선형 판별식

- 클래스 c1, c2를 분류하기위해 두 특징 x, y이 주어지고 선형 판별식이 아래와 같을떄

- a, b, c는 가중치

- 두 특징 x1, y1가 주어질때 선형 판별식 g(x1, y1) < 0 인 경우 : 특징 x1, y1는 c1

- 두 특징 x2, y2가 주어질때 선형 판별식 g(x2, y2) > 0 인 경우 : 특징 x2, y2는 c2

 

 

 

 

 

 

 

고차원 특징에서의 선형 판별식

- 아래와 같이 가중치 벡터 w와 입력 벡터 x의 내적으로 정의

 *  w는 가중치 벡터이며, 초평면의 법선 벡터

- w_0은 원정메서 초평면까지의 거리

 

 

 

판별식 가중치 결정

- 판별식 정의에선 가중치 벡터 w가 가장 중요함.

 => 학습용 데이터를 이용해 최소의 분류 오차를 생성하는 최적의 가중치 파라미터를 찾아 구함

- 주어진 학습 집합에서 분류 오차를 최소화 하는 방식을 사용

 

 

 

 

 

 

결정 경계 decision boundaray

- 두개의 클래스에 대한 분류를 하기 위한 경계를 만드는 문제

 => 하나의 선형 판별식이 필요

- 3개 이상의 클래스를 분류하기 위해선 여러개의 선형 판별식이 필요. 다중 클래스는 3가지 경우가 존재

 

 

 

다중 클래스 결정 경계의 유형들

1. 각 클래스가 단일 판별식으로 결정

- d1(x, y) = 0로 C1인 경우와 아닌경우 판별

- d2(x, y) = 0로 C2인 경우와 아닌경우 판별

- d3(x, y) = 0로 C3인 경우와 아닌경우 판별

2. 판별식이 클래스의 쌍으로 결정되는경우

- d_12(x,y) = 0으로 C1과 C2로 나뉘는 경우

- d_23(x,y) = 0으로 C2와 C3이 나뉘는 경우

- d_13(x,y) = 0으로 C1과 C3이 나뉘는 경우

 

 

 

3. 판별식이 클래스의 쌍인데 특별한 경우(생략)

 

 

300x250
728x90

패턴인식 시스템 설계

1. 데이터 수집 : 올바른 형태의 많은 표본 데이터 필요 -> 텍스트, 사진, 음성 등

2. 특징 선택 : 어떤 특징을 사용할 것인가 선정 -> 관심점, 키, 몸무게 등

3. 모델 선택 : 패턴을 분류하기 위해 어떤 알고리즘을 사용할 것인가 -> 회귀 분석기, 분류기, 클러스터링, 신경망 등

4. 학습 : 훈련 안된 텅빈 모델을 학습된 모델로 만듬 -> 지도학습, 비지도학습, 강화학습 등

5. 인식 : 입력 데이터의 분류를 결정

 

https://sungkipyung.wordpress.com/2011/09/12/pattern-recognition-1%EC%9E%A5-%EC%9A%94%EC%95%BD/

 

 

패턴인식 문제 종류

1. 분류 classification

 - 입력 데이터에 특정 클래스를 줌(어디에 속하는지 분류해줌)

 * 모호한 퍼지같은 결과가 아니라, 분류에 대한 명확한 정수 라벨링이 수행됨

 

2. 회귀 regression

 - 표본 데이터로 입력 데이터를 예측가능한 모델을 만듬 -> 회귀분석

3. 군집화 clustering

 - 표본 데이터들이 서로 어느 그룹에 속하는지 분류

=> 아래의 그림은 머신러닝, 패턴인식 문제들의 종류를 정리한 것임

https://riseone.tistory.com/entry/%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D%EC%9D%98-%EB%B6%84%EB%A5%98

 

 

 

 

 

 

 

 

 

 

패턴인식에서의 분류

- 특징 공간에 존재하는 클래스들을 분할해주는 경계를 찾는 문제

 => 분류란? 결정 경계 decision boundaries를 찾는 문제

- 아래의 그림은 모델이 올바르게 분류할수 있는 결정 경계를 찾는 과정을 보여줌

https://devashishshankar.wordpress.com/tag/tutorial/

 

 

 

 

분류기의 형태

- 분류기는 판별 함수 discriminant functions g(x)의 집합으로 정리할 수 있음.

 => 입력 특징 벡터 x가 주어질때, x는 g_n(x)가 가장 큰 n에 속함

 

 

 

패턴 인식의 접근 방법

1. 통계적 접근 방법

 - 통계 모델을 이용한 패턴 분류 -> 통계 모델 = 해당 클래스별 확률 밀도 함수, 베이즈 결정 규칙으로 분류

2. 신경망 접근 방법

 - 신경망 구현. 표본 데이터로 신경망 가중치 훈련 -> 입력 패턴에 대해 인식

- 아래의 그림은 통계적 방법 예시 : 샘플 데이터로 봉우리 형태의 확률 밀도 함수를 띔

- 신경망 방법 예시 : 입력 벡터(패턴)에 대해 신경망 가중치들이 조정됨

 

 

 

 

 

패턴 인식 예시

1. 문자 인식

2. 보안

3. 사물 분류 등 

300x250
728x90

패턴인식 Pattern Recognition

- 분야 : 인지과학 + 인공지능 분야 중하나

 * 인지 과학 : 심리, 컴퓨터 사이언스, 언어 등을 통합하여 지능을 다루는 학문 분야

 * 인공 지능 : 사람의 학습, 추론 능력을 인공적 모델링을하고, 프로그램으로 구현 기술

- 패턴인식이란 ? : 센싱을 통해 얻은 정보로 대상을 다루는 분야

 

 

 

패턴 pattern

- 패턴 = 특징

- 특징을 모아놓은 집합

- 특징 ? 물체가 가진 고유한 특성

 

특징 feature의 종류

- 색상, 높이, 넓이, 무게 등

 

특징 벡터

- d 차원의 특징 열벡터

- 아래는 1차원 특징 벡터와 2차원 특징 벡터를 보여줌

 

 

 

 

 

 

 

특징 공간

- 특징 벡터가 정의되는 공간

- 1차원 특징 공간의 경우 : 특징 길이가 1

- 2차원 특징 공간의 경우 : 특징 길이가 2

- 3차원 특징 공간의 경우 : 특징 길이가 3

 => 아래의 예시는 사람 별로 나이, 키, 몸무게가 주어질때 특징공간에서 표현한 것

- n차원 특징 공간의 경우 : 특징 길이가 4

 => 아래의 예시는 나이의 변화에 따라 키와 몸무게, 발 크기가 변하는 특징 공간을 보여줌

 

 

패턴 인식이란?

- 특징 벡터인 패턴이 주어질때 이 패턴이 어디에 속하는지 찾아내는 문제

 => 분류 classification이라고 부름 = 특징 벡터 x가 주어질때 클레스 omega를 찾는 문제

- ex. 키와 몸무게로 남성 여성을 분류하는 문제

 => 아까 2차원 특징 공간에서 남성과 여성을 분류 한다면 다음과 같이 분류 가능할듯

 

 

 

 

좋은 특징과 나쁜 특징

- 좋은 특징 : 분류하기 좋은 특징

  => 선형/비선형 모델로 분류 가능

- 분류하기 힘든 특징 => 나쁜 특징

  => 선형/비선형 모델로  분류가 힘듬 + 아웃라이어 심함

 

 

 

패턴의 유형

1. 선형 분류가 가능한 패턴

2. 비선형 분류가 가능한 패턴

3. 상관관계가 큰 패턴

4. 멀티 모달인 패턴(봉우리가 2개 이상인 패턴)

 

300x250

+ Recent posts