AI 기초

차원 감소의 정의는 무엇인가?

mm
Unite.AI를 Google의 선호 소스에 추가

차원 감소의 정의는 무엇인가?

차원 감소는 데이터셋의 차원을 줄이는 과정으로, 많은 특징을 대표하는 더 적은 특징으로 변환하는 것입니다. 예를 들어, 차원 감소는 20개의 특징을 가진 데이터셋을 몇 개의 특징으로 줄이는 데 사용할 수 있습니다. 차원 감소는 일반적으로 비지도 학습 작업에서 자동으로 클래스를 생성하는 데 사용됩니다. 차원 감소가 사용되는 이유와 방법을 더 잘 이해하기 위해, 높은 차원 데이터와 관련된 문제와 차원 감소를 줄이는 가장 인기 있는 방법을 살펴보겠습니다.

더 많은 차원은 과적합으로 이어진다

차원은 데이터셋 내의 특징/열의 수를 나타냅니다.

기계 학습에서 더 많은 특징이 더 나은 모델을 생성한다고 가정하지만, 더 많은 특징이 항상 더 나은 모델을 의미하는 것은 아닙니다.

데이터셋의 특징은 유용성에 따라 크게 다를 수 있으며, 많은 특징이 모델에 거의 중요하지 않을 수 있습니다. 또한, 데이터셋에 더 많은 특징이 포함될수록 더 많은 샘플이 필요합니다. 따라서 모델은 더 복잡해지고, 과적합에 더 민감해집니다. 모델은 훈련 데이터의 패턴을 너무 잘 학습하여 새로운 데이터에 일반화되지 않습니다.

데이터셋의 차원을 줄이는 것은 여러 가지 이점이 있습니다. 모델이 더 단순해져 과적합에 덜 민감해지고, 알고리즘을 훈련하는 데 필요한 컴퓨팅 파워가 줄어듭니다. 또한, 더 적은 차원을 가진 데이터셋은 더 적은 저장 공간을 필요로 합니다. 데이터셋의 차원을 줄이는 것은 또한 많은 특징을 가진 데이터셋에 적합하지 않은 알고리즘을 사용할 수 있습니다.

일반적인 차원 감소 방법

차원 감소는 특징 선택 또는 특징 엔지니어링을 통해 수행할 수 있습니다. 특징 선택은 엔지니어가 데이터셋의 가장 관련된 특징을 식별하는 것입니다. 반면, 특징 엔지니어링은 다른 특징을 결합하거나 변환하여 새로운 특징을 생성하는 과정입니다.

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

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

주성분 분석

주성분 분석의 예

주성분 분석(PCA)은 데이터셋의 특징을 분석하여 가장 영향력이 큰 특징을 요약하는 통계적 방법입니다. 데이터셋의 특징은 더 적은 차원으로 대표되지만, 데이터의 대부분의 특징을 유지합니다. 이를 “데이터를 더 낮은 차원으로 압축하는” 것으로 생각할 수 있습니다.

예를 들어, 와인을 설명하는 다양한 방법을 생각해 보십시오. 와인을 설명하는 데 사용할 수 있는 특징은 CO2 수준, 공기 주입 수준 등과 같이 매우 구체적인 특징일 수 있습니다. 그러나 이러한 특징은 와인 유형을 식별하는 데 거의 쓸모가 없습니다. 대신, 와인을 더 일반적인 특징으로 설명하는 것이 더 합리적입니다. 주성분 분석은 더 구체적인 특징을 결합하여 더 일반적인 특징을 생성하는 데 사용할 수 있습니다.

주성분 분석은 입력 특징이 평균에서 얼마나 변하는지 분석하여 특징 간의 관계를 결정합니다. 이를 위해 공분산 행렬을 생성하여 데이터셋의 특징에 대한 공분산을 포함하는 행렬을 생성합니다. 이는 변수 간의 상관관계를 결정하는 데 사용되며, 음의 공분산은 역 상관관계를 나타내고, 양의 공분산은 양의 상관관계를 나타냅니다.

데이터셋의 주성분은 초기 변수의 선형 결합을 생성하여 만듭니다. 이는 선형 대수학의 개념인 고유값과 고유벡터의 도움으로 수행됩니다. 주성분은 서로 상관관계가 없는 선형 결합으로 생성됩니다. 초기 변수에 포함된 대부분의 정보는 첫 번째 몇 개의 주성분에 압축되어, 새로운 특징(주성분)이 생성되어 원래 데이터셋의 정보를 더 낮은 차원으로 대표합니다.

특이값 분해

특이값 분해의 예

특이값 분해(SVD)는 행렬의 값을 단순화하는 데 사용됩니다. 행렬을 구성 요소로 분해하여 계산을 더 쉽게 만듭니다. 특이값 분해는 실수 행렬과 복소수 행렬 모두에 사용할 수 있지만, 여기에서는 실수 행렬의 분해 방법을 살펴보겠습니다.

실수 데이터로 구성된 행렬이 있다고 가정해 보십시오. 목표는 행렬의 열/특징의 수를 줄이는 것입니다. 주성분 분석과 마찬가지로, 특이값 분해는 행렬의 차원을 줄이면서 행렬의 변동성을 최대한 유지합니다. 행렬 A를操作하려면, 행렬 A를 세 개의 다른 행렬 U, D, V로 나타낼 수 있습니다. 행렬 A는 원래 x * y 요소를 가지고, 행렬 U는 직교 행렬로 x * x 요소를 가지고 있습니다. 행렬 V는 또 다른 직교 행렬로 y * y 요소를 가지고 있습니다. 행렬 D는 x * y 요소를 가지고, 대각 행렬입니다.

행렬 A의 값을 분해하려면, 원래 특이 행렬 값을 대각 행렬의 값으로 변환해야 합니다. 직교 행렬의 속성은 다른 수로 곱해지면 변경되지 않습니다. 따라서, 직교 행렬을 곱하고 행렬 V의 전치를 취하여 원래 행렬 A와 동일한 행렬을 생성할 수 있습니다.

행렬 A를 행렬 U, D, V로 분해하면, 행렬 U, D, V에는 행렬 A의 데이터가 포함됩니다. 그러나, 행렬의 왼쪽 열에는 대부분의 데이터가 포함됩니다. 이러한 첫 번째 몇 개의 열만 취하여 행렬 A의 대표로 사용할 수 있습니다.

선형 판별 분석

 

선형 판별 분석의 예

선형 판별 분석(LDA)은 다차원 그래프의 데이터를 선형 그래프로 투영하는 과정입니다. 이를 이해하기 위해, 두 클래스에 속하는 데이터 포인트가 포함된 2차원 그래프를 생각해 보십시오. 데이터 포인트가 산재하여 두 클래스를 구분하는 선을 그릴 수 없다고 가정해 보십시오. 이러한 상황을 처리하기 위해, 2차원 그래프의 데이터 포인트를 1차원 그래프(선)로 줄일 수 있습니다. 이 선에는 데이터 포인트가 분산되어 있으며, 데이터를 두 부분으로 나누는 데 사용할 수 있습니다.

선형 판별 분석을 수행할 때, 두 가지 주요 목표가 있습니다. 첫 번째 목표는 클래스의 분산을 최소화하는 것입니다. 두 번째 목표는 클래스의 평균 사이의 거리를 최대화하는 것입니다. 이러한 목표는 새 축을 생성하여 달성됩니다. 새 축은 이전에 설명한 목표에 따라 두 클래스를 분리합니다. 축이 생성된 후, 2차원 그래프의 데이터 포인트가 새 축에 따라 배치됩니다.

원래 데이터 포인트를 새 축에 따라 이동시키는 데 필요한 세 단계가 있습니다. 첫 번째 단계에서는 클래스 간의 평균 거리(클래스 간 분산)를 계산하여 클래스의 분리도를 계산합니다. 두 번째 단계에서는 클래스 내의 분산을 계산하여 샘플과 클래스 평균 사이의 거리를 결정합니다. 세 번째 단계에서는 클래스 간의 분산을 최대화하는 더 낮은 차원 공간을 생성합니다.

선형 판별 분석은 대상 클래스의 평균이 서로 멀리 떨어져 있을 때 가장 좋은 결과를 얻습니다. 클래스의 평균이 분포에서 겹치면, 선형 판별 분석은 클래스를 선형 축으로 효과적으로 분리할 수 없습니다.

블로거이자 프로그래머로 Machine Learning Deep Learning 주제에 전문가입니다. 다니엘은 다른 사람들이 AI의 힘을 사회적善으로 사용하는 것을 돕기를 희망합니다.