부본 차원 축소란 무엇입니까? - Unite.AI
Rescale 미팅 예약

AI 101

차원 축소란 무엇입니까?

mm
업데이트 on

차원 축소란 무엇입니까?

차원 축소 데이터 세트의 차원을 줄이는 데 사용되는 프로세스로, 많은 기능을 가져와 더 적은 기능으로 나타냅니다. 예를 들어 차원 축소를 사용하여 XNUMX개의 기능으로 구성된 데이터 세트를 단 몇 개의 기능으로 줄일 수 있습니다. 차원 축소는 일반적으로 다음에서 사용됩니다. 비지도 학습 많은 기능에서 클래스를 자동으로 생성하는 작업. 더 잘 이해하기 위해 차원 축소가 사용되는 이유와 방법, 고차원 데이터와 관련된 문제와 가장 널리 사용되는 차원 축소 방법을 살펴보겠습니다.

더 많은 차원은 과적합으로 이어집니다.

차원은 데이터 세트 내의 기능/열 수를 나타냅니다.

기계 학습에서는 더 정확한 모델을 생성하므로 더 많은 기능이 더 좋다고 가정하는 경우가 많습니다. 그러나 더 많은 기능이 반드시 더 나은 모델로 변환되는 것은 아닙니다.

데이터 세트의 기능은 모델에 얼마나 유용한지에 따라 크게 다를 수 있으며 많은 기능이 거의 중요하지 않습니다. 또한 데이터 세트에 포함된 기능이 많을수록 다양한 기능 조합이 데이터 내에서 잘 표현되도록 하기 위해 더 많은 샘플이 필요합니다. 따라서 샘플 수는 특징 수에 비례하여 증가합니다. 더 많은 샘플과 더 많은 기능은 모델이 더 복잡해야 함을 의미하며 모델이 더 복잡할수록 과적합에 더 민감해집니다. 모델이 교육 데이터의 패턴을 너무 잘 학습하고 샘플 데이터를 일반화하지 못합니다.

데이터 세트의 차원을 줄이면 여러 가지 이점이 있습니다. 언급한 바와 같이 모델이 기능이 서로 어떻게 관련되어 있는지에 대해 더 적은 가정을 해야 하므로 더 간단한 모델은 과적합될 가능성이 적습니다. 또한 차원이 적다는 것은 알고리즘을 훈련하는 데 필요한 컴퓨팅 성능이 적다는 것을 의미합니다. 마찬가지로 차원이 작은 데이터 세트에는 더 적은 저장 공간이 필요합니다. 데이터 세트의 차원을 줄이면 기능이 많은 데이터 세트에 적합하지 않은 알고리즘을 사용할 수도 있습니다.

일반적인 차원 감소 방법

차원 감소는 기능 선택 또는 기능 엔지니어링을 통해 수행할 수 있습니다. 기능 선택은 엔지니어가 데이터 세트의 가장 관련성이 높은 기능을 식별하는 반면 기능 엔지니어링 다른 기능을 결합하거나 변형하여 새로운 기능을 만드는 과정입니다.

기능 선택 및 엔지니어링은 프로그래밍 방식 또는 수동으로 수행할 수 있습니다. 기능을 수동으로 선택하고 엔지니어링할 때 데이터를 시각화하여 기능과 클래스 간의 상관 관계를 발견하는 것이 일반적입니다. 이러한 방식으로 차원 감소를 수행하는 것은 시간이 많이 걸릴 수 있으므로 차원을 줄이는 가장 일반적인 방법 중 일부는 Python용 Scikit-learn과 같은 라이브러리에서 사용할 수 있는 알고리즘을 사용하는 것입니다. 이러한 일반적인 차원 감소 알고리즘에는 주성분 분석(PCA), 특이 값 분해(SVD) 및 선형 판별 분석(LDA)이 포함됩니다.

비지도 학습 작업의 차원 축소에 사용되는 알고리즘은 일반적으로 PCA 및 SVD인 반면, 지도 학습 차원 축소에 활용되는 알고리즘은 일반적으로 LDA 및 PCA입니다. 지도 학습 모델의 경우 새로 생성된 기능은 기계 학습 분류기에 입력됩니다. 여기에 설명된 용도는 단지 일반적인 사용 사례일 뿐이며 이러한 기술이 사용될 수 있는 유일한 조건은 아닙니다. 위에 설명된 차원 축소 알고리즘은 단순히 통계적 방법이며 기계 학습 모델 외부에서 사용됩니다.

주요 구성 요소 분석

사진: 주요 구성 요소가 식별된 매트릭스

주성분 분석 (PCA) 데이터셋의 특성/특징을 분석하여 가장 영향력이 큰 특징을 요약하는 통계적 방법입니다. 데이터 세트의 기능은 데이터의 대부분의 특성을 유지하지만 더 적은 차원에 분산되는 표현으로 함께 결합됩니다. 이를 고차원 표현에서 몇 차원만 있는 표현으로 데이터를 "압축"하는 것으로 생각할 수 있습니다.

PCA가 유용할 수 있는 상황의 예로 와인을 설명할 수 있는 다양한 방법을 생각해 보십시오. CO2 수준, 폭기 수준 등과 같은 많은 매우 구체적인 기능을 사용하여 와인을 설명하는 것이 가능하지만 이러한 특정 기능은 특정 유형의 와인을 식별하려고 할 때 상대적으로 쓸모가 없을 수 있습니다. 대신 맛, 색, 나이와 같은 보다 일반적인 특징을 기반으로 유형을 식별하는 것이 더 신중할 것입니다. PCA는 보다 구체적인 기능을 결합하고 보다 일반적이고 유용하며 과적합을 일으킬 가능성이 적은 기능을 만드는 데 사용할 수 있습니다.

PCA는 입력 기능이 서로 평균과 어떻게 다른지 확인하고 기능 간에 관계가 있는지 확인하여 수행됩니다. 이를 위해 공변 행렬이 생성되어 가능한 데이터 집합 기능 쌍에 대한 공분산으로 구성된 행렬을 설정합니다. 이는 역상관을 나타내는 음의 공분산과 양의 상관을 나타내는 양의 상관으로 변수 간의 상관을 결정하는 데 사용됩니다.

데이터 세트의 주요(가장 영향력 있는) 구성 요소는 초기 변수의 선형 조합을 생성하여 생성되며, 이는 선형 대수학 개념의 도움으로 수행됩니다. 고유값과 고유벡터. 주성분이 서로 상관되지 않도록 조합이 생성됩니다. 초기 변수에 포함된 대부분의 정보는 처음 몇 개의 주성분으로 압축됩니다. 즉, 원래 데이터 세트의 정보를 더 작은 차원 공간에 포함하는 새로운 기능(주성분)이 생성되었음을 의미합니다.

특이 값 분해

사진: Cmglee 작성 – 자체 작업, CC BY-SA 4.0, https://commons.wikimedia.org/w/index.php?curid=67853297

특이 값 분해 (SVD) is 행렬 내의 값을 단순화하는 데 사용, 매트릭스를 구성 부분으로 줄이고 해당 매트릭스로 계산을 더 쉽게 만듭니다. SVD는 실제 값과 복소수 행렬 모두에 사용할 수 있지만 이 설명의 목적을 위해 실제 값의 행렬을 분해하는 방법을 살펴보겠습니다.

실제 값 데이터로 구성된 행렬이 있고 목표가 PCA의 목표와 유사하게 행렬 내의 열/특성 수를 줄이는 것이라고 가정합니다. PCA와 마찬가지로 SVD는 행렬의 가변성을 최대한 유지하면서 행렬의 차원을 압축합니다. 행렬 A에서 연산을 수행하려는 경우 행렬 A를 U, D, V라는 세 개의 다른 행렬로 나타낼 수 있습니다. 행렬 A는 원래 x * y 요소로 구성되고 행렬 U는 요소 X * X로 구성됩니다(이는 직교 행렬). 행렬 V는 y * y 요소를 포함하는 다른 직교 행렬입니다. 행렬 D는 요소 x * y를 포함하며 대각 행렬입니다.

행렬 A의 값을 분해하려면 원래 특이 행렬 값을 새 행렬 내에서 찾은 대각선 값으로 변환해야 합니다. 직교 행렬로 작업할 때 다른 숫자를 곱해도 속성이 변경되지 않습니다. 따라서 이 속성을 이용하여 행렬 A를 근사화할 수 있습니다. 직교 행렬을 행렬 V의 전치와 함께 곱하면 결과는 원래 A와 동등한 행렬이 됩니다.

행렬 a가 행렬 U, D, V로 분해되면 행렬 A에서 찾은 데이터가 포함됩니다. 그러나 행렬의 가장 왼쪽 열에 대부분의 데이터가 저장됩니다. 우리는 이 처음 몇 개의 열만 가져와 훨씬 적은 차원과 A 내의 대부분의 데이터를 갖는 행렬 A를 나타낼 수 있습니다.

선형 판별 분석

 

왼쪽: LDA 전 매트릭스, 오른쪽: LDA 후 축, 이제 분리 가능

선형 판별 분석 (LDA) 다차원 그래프에서 데이터를 가져오는 프로세스이며 선형 그래프에 재투영합니다.. 서로 다른 두 클래스에 속하는 데이터 포인트로 채워진 2차원 그래프를 생각하면 이를 상상할 수 있습니다. 두 개의 다른 클래스를 깔끔하게 구분하는 선을 그릴 수 없도록 포인트가 흩어져 있다고 가정합니다. 이러한 상황을 처리하기 위해 1D 그래프에서 발견되는 점을 XNUMXD 그래프(선)로 줄일 수 있습니다. 이 라인에는 모든 데이터 포인트가 분산되어 있으며 가능한 최상의 데이터 분리를 나타내는 두 섹션으로 나눌 수 있습니다.

LDA를 수행할 때 두 가지 주요 목표가 있습니다. 첫 번째 목표는 클래스의 분산을 최소화하는 것이고 두 번째 목표는 두 클래스의 평균 간 거리를 최대화하는 것입니다. 이러한 목표는 2D 그래프에 존재할 새 축을 생성하여 달성됩니다. 새로 생성된 축은 앞에서 설명한 목표에 따라 두 클래스를 구분하는 역할을 합니다. 축이 생성되면 2D 그래프에서 찾은 점들이 축을 따라 배치됩니다.

원래 점을 새 축을 따라 새 위치로 이동하는 데 필요한 세 단계가 있습니다. 첫 번째 단계에서는 개별 클래스 간의 거리 평균(클래스 간 분산)을 사용하여 클래스의 분리 가능성을 계산합니다. 두 번째 단계에서는 해당 클래스에 대한 샘플과 평균 사이의 거리를 결정하여 여러 클래스 내의 분산을 계산합니다. 마지막 단계에서 클래스 간의 분산을 최대화하는 저차원 공간이 생성됩니다.

LDA 기법은 대상 클래스의 평균이 서로 멀리 떨어져 있을 때 최상의 결과를 얻습니다. LDA는 분포 평균이 겹치는 경우 선형 축으로 클래스를 효과적으로 분리할 수 없습니다.

 

전문 분야의 블로거 및 프로그래머 기계 학습 깊은 학습 주제. 다니엘은 다른 사람들이 사회적 이익을 위해 AI의 힘을 사용하도록 돕기를 희망합니다.