차원의 저주 : 훈련 샘플 각각이 수천 수백만 개의 특성을 가지고 있어서 이런 많은 특성은 훈련을 느리게 할 뿐만 아니라 좋은 솔루션을 찾기 어렵게 만드는 문제
❗차원 축소 전에 먼저 원본 데이터로 시스템을 훈련해보는 것을 권장함. 어떤 경우에는 훈련 데이터의 차원을 축소시키면 잡음이나 불필요한 세부 사항을 걸러내므로 성능이 높아질 수 있다. 일반적으로는 훈련 속도만 빨라진다.
8.2 차원 축소를 위한 접근법
차원을 감소시키는 두 가지 주요한 접근법 : 투영, 매니폴드 학습
8.2.1 투영
모든 훈련 샘플이 고차원 공간 안의 저차원 부분 공간에 놓여있다.
모든 훈련 샘플을 이 부분 공간에 수직으로 투영하면 2D 데이터셋을 얻을 수 있다.
그러나 차원 축소에 있어서 투영이 언제나 최선의 방법은 아니다.
스위스 롤 데이터셋처럼 부분 공간이 뒤틀리거나 휘어 있기도 하다.
8.2.2 매니폴드 학습
2D매니폴드 : 고차원 공간에서 휘어지거나 뒤틀린 2D 모양
d차원 매니폴드 : 국부적으로 d차원 초평면으로 보일 수 있는 n차원 공간의 일부
매니폴드 학습 : 훈련 샘플이 놓여 있는 매니폴드를 모델링하는 식으로 작동하는 것
매니폴드 가정 , 매니폴드 가설 : 대부분 실제 고차원 데이터셋이 더 낮은 저차원 매니폴드에 가깝게 놓여있는 것
매니폴드 가정은 종종 암묵적으로 다른 가정과 병행되곤 한다. 바로 처리해야 할 작업이 저차원의 매니폴드 공간에 표현되면 더 간단해질 것이란 가정이다.
📌모델을 훈련시키기 전에 훈련 세트의 차원을 감소시키면 훈련 속도는 빨라지지만 항상 더 낫거나 간단한 솔루션이 되는 것은 아니다. 이는 전적으로 데이터셋에 달렸다.
8.3 주성분 분석
주성분 분석은 가장 인기 있는 차원 축소 알고리즘이다.
먼저 데이터에 가장 가까운 초평면을 정의한 다음, 데이터를 이 평면에 투영시킨다.
8.3.1 분산 보존
저차원의 초평면에 훈련 세트를 투영하기 전, 먼저 올바른 초평면을 선택해야한다.
실선에 투영된 것 : 분산을 최대로 보존
점선에 투영된 것 : 분산을 매우 적게 유지
파선에 투영된 것 : 분산을 중간 정도로 유지
💡다른 방향으로 투영하는 것보다 분산이 최대로 보존되는 축을 선택하는 것이 정보가 가장 적게 손실되므로 합리적
8.2.2 주성분
PCA는 훈련 세트에 분산이 최대인 축을 찾는다. 첫 번째 축에 직교하고 남은 분산을 최대로 보존하는 두 번째 축을 찾는다.
i 번째 축을 이 데이터의 i 번째 주성분이라 부른다.
❗각 주성분을 위해 PCA는 주성분 방향을 가리키고 원점에 중앙이 맞춰진 단위 벡터를 찾는다. 하나의 축에 단위 벡터가 반대 방향으로 두 개 있으므로 PCA가 반환하는 단위 벡터의 방향은 일정하지 않다. 주성분의 방향은 일정하지 않다.
📌그렇다면 훈련 세트의 주성분을 어떻게 찾을까?
특잇값 분해를 이용한다.
8.2.3 d차원으로 투영하기
주성분을 모두 추출해냈다면 처음 d개의 주성분으로 정의한 초평면에 투영하여 데이터셋의 차원을 d차원으로 축소시킬 수 있다. 이 초평면은 분산을 가능한 한 최대로 보존하는 투영임을 보장한다.
💡
설명된 분산의 비율 : 각 주성분의 축을 따라 있는 데이터셋의 분산 비율
8.3.6 적절한 차원 수 선택
축소할 차원 수를 임의로 정하기보다는
- 충분한 분산이 될 때까지 더해야 할 차원 수를 선택한다.
- 설명된 분산을 차원 수에 대한 함수로 그리는 것이다.
- 지도 학습 작업의 전처리 단계로 차원 축소를 사용하는 경우, 다른 하이퍼파라미터와 마찬가지로 차원 수를 튜닝한다.
8.3.7 압축을 위한 PCA
크기 축소는 분류 알고리즘의 속도를 크게 높일 수 있다.
재구성 오차 : 원본 데이터와 재구성된 데이터 사이의 평균 제곱 거리
8.3.8 랜덤 PCA
랜덤 PCA라 부르는 확률적 알고리즘을 사용하면 처음 d개의 주성분에 대한 근삿값을 빠르게 찾을 수 있다.
그러려면 svd_solver 매개변수를 "randomized"로 지정해야한다.
8.3.9 점진적 PCA
훈련 세트를 미니배치로 나눈 뒤 IPCA 알고리즘에 한 번에 하나씩 주입
훈련 세트가 끌 때 유용하고 온라인으로 PCA를 적용할 수 있다.
수만개 이상의 특성이 있는 데이터셋을 다루는 경우 훈련 속도가 너무 느려질 수 있으므로 이 경우 대신 랜덤 투영을 사용하는 것을 고려해야한다.
8.4 랜덤 투영
랜덤 투영 알고리즘은 랜덤한 선형 투영을 사용하여 데이터를 저차원 공간에 투영한다.
- 실제로 거리를 상당히 잘 보존할 간능성이 매우 높다
- 투영 후에도 비슷한 두 개의 샘플은 비슷한 채로 남고 매우 다른 두 개의 샘플은 매우 다른 채로 남는다.
- 간단하고 빠르며 메모리 효율이 높고 강력한 차원 축소 알고리즘
- 고차원 데이터셋을 다룰 때 염두에 두어야 한다.
더 많은 차원을 삭제할수록 더 많은 정보가 손실되고 더 많은 거리가 왜곡된다.
💡최적의 차원수는 어떻게 선택할까?
거리가 주어진 허용 오차 이상 변하지 않도록 보장하기 위해 보존할 최소 차원 수를 결정
8.5 지역 선형 임베딩
- 비선형 차원 축소 기술이다.
- 투영에 의존하지 않는 매니폴드 학습이다.
- 각 훈련 샘플이 최근접 이웃에 얼마나 선형적으로 연관되어 있는지 측정한다.
- 국부적인 관계가 가장 잘 보존되는 훈련 세트의 저차원 표현을 찾는다.
- 잡음이 너무 많지 않은 경우 고인 매니폴드를 펼치는 데 좋다.
8.6 다른 차원 축소 기법
- 다차원 스케일링
- Isomap
- t-SNE
- 선형 판별 분석
9 비지도 학습
- 군집 : 비슷한 샘플을 클러스터로 모음.
- 이상치 탐지 : 정상 데이터가 어덯게 보이는지 학습, 비정상 샘플을 감지하는 데 사용(정상치 : 정상 샘플)
- 밀도 추정 : 데이터셋 생성 확률 과정의 확률 밀도 함수를 추정, 이상치 탐지에 널리 사용, 밀도가 매우 낮은 영역에 놓인 샘플이 이상치일 가능성이 높음.
9.1 군집
군집 : 비슷한 샘플을 구별해 하나의 클러스터 또는 비슷한 샘플의 그룹으로 할당하는 작업
- 알고리즘이 다르면 다른 종류의 클러스터를 감지한다.
- 어떤 알고리즘은 센트로이드라 부르는 특정 포인트를 중심으로 모인 샘플을 찾음.
- 어떤 알고리즘은 샘플이 밀집되어 연속된 영역을 찾음.
9.1.1 k-평균
k-평균은 반복 몇 번으로 이런 종류의 데이터셋을 빠르고 효율적으로 클러스터로 묶을 수 있는 간단한 알고리즘이다.
레이블 : 군집에서 샘플에 할당한 클러스터의 인덱스
하드 군집 : 샘플을 하나의 클러스터에 할당
소프트 군집 : 클러스터마다 샘플에 점수를 부여
k-평균 알고리즘 작동 방식
- 센트로이드를 랜덤하게 선정
- 샘플에 레이블을 할당하고 센트로이드를 업데이트
- 샘플에 레이블을 할당하고 센트로이드를 업데이트하는 식으로 센트로이드에 변화가 없을 때까지 계속
이 알고리즘은 제한된 횟수 안에 수렴하는 것을 보장한다.
샘플과 가장 가까운 센트로이드 사이의 평균 제곱 거리는 각 단계마다 내려갈 수만 있고 음수가 될 수 없기 때문에 수렴이 보장된다.
이 알고리즘의 수렴은 보장되지만 적절한 솔루션으로 수렴하지 못할 수 있다. 이 여부는 센트로이드 초기화에 달려있다.
센트로이드 초기화 개선 방법
- 센트로이드 위치를 근사하게 알 수 있다면 init 매개변수에 센트로이드 리스트를 담은 너머파이 배열을 지정하고 n_init을 1로 설정한다.
- 랜덤 초기화를 다르게 하여 여러 번 알고리즘을 실행하고 가장 좋은 솔루션을 선택한다.
이너셔 : 각 샘플과 가장 가까운 센트로이드 사이의 제곱 거리 합, 최선의 솔루션인지 알 수 있는 성능 지ㅛ
k-평균 속도 개선
- 클러스터가 많은 일부 대규모 데이터셋에서 불필요한 거리 계산을 피함으로써 알고리즘의 속도를 상당히 높일 수 있다.
- 이를 위해 삼각 부등식을 사용, 샘플과 센트로이드 사이의 거리를 위한 하한선과 상한선을 유지한다.
미니배치 k-평균
- 전체 데이터셋을 사용해 반복하지 않고 각 반복마다 미니배치를 사용해 센트로이드를 조금씩 이동
- 메모리에 들어가지 않는 대량의 데이터셋에 군집 알고리즘을 적용
- 미니배치 k-평균 알고리즘이 일반 k-평균 알고리즘보다 훨씬 빠르지만 이너셔는 일반적으로 조금 더 나쁘다.
💡최적의 클러스터 개수 찾기
실루엣 점수 : 모든 샘플에 대한 실루엣 계수의 평균
실루엣 계수 : -1에서 +1까지 바뀔 수 있다.
실루엣 계수가 0에 가까우면 클러스터 경계에 위치한다는 의미이고 -1에 가까우면 이 샘플이 잘못된 클러스터에 할당되었다는 의미이다.
실루엣 다이어그램 : 모든 샘플의 실루엣 계수를 할당된 클러스터와 계수 값으로 정렬하여 그린 그래프
수직 파선 : 각 클러스터 개수에 해당하는 평균 실루엣 점수
한클러스터의 샘플 대부분이 이 점수보다 낮은 계수를 가지면 클러스터의 새ㅐㅁ플이 다른 클러스터랑 너무 가깝다는 것을 의미
9.1.2 k-평균의 한계
장점 : 속도가 빠르고 확장이 용이
- 단점
- 최적이 아닌 솔루션을 피하려면 알고리즘을 여러 번 실행 해야함.
- 클러스터 개수를 지정해야 함.
- 클러스터의 크기 또는 밀집도가 서로 다르거나 원형이 아닐 경우 잘 작동하지 않음.
9.1.3 군집을 사용한 이미지 분할
이미지 분할 : 이미지를 여러 개의 세그먼트로 분할하는 작업
여러 변형 있음 > 색상 분할, 시맨틱 분할, 인스턴스 분할
시맨틱 분할 또는 인스턴스 분할에서 최고 수준의 성능을 내려면 합성곱 신경망 기반의 복잡한 모델을 사용해야 한다.
9.1.3 군집을 사용한 준지도 학습
군집을 사용하는 또 다른 사례 : 준지도학습
레이블이 없는 데이터가 많고 레이블이 있는 데이터는 적을 때 사용
대표 이미지 : 각 클러스터에서 센트로이드에 가장 가까운 이미지
📌능동 학습 : 전문가가 학습 알고리즘과 상호 작용해 알고리즘이 요청할 때 특정 샘플의 레이블을 제공
9.1.5 DBSCAN
- DBSCAN 알고리즘은 밀집된 연속적 지역을 클러스터로 정의함.
- 모든 클러스터가 밀집되지 않은 지역과 잘 구분될 때 좋은 성능을 냄.
- 새로운 샘플에 대해 클러스터를 예측할 수 없음. 그러므로 사용자가 필요한 예측기를 선택해야 함.
- 매우 간단하지만 강력한 알고리즘
- 클러스터의 모양과 개수에 상관없이 감지할 수 있는 능력이 있음
- 이상치에 안정적이고 하이퍼파라미터가 두 개분임
- 대규모 데이터셋에 잘 확장되지 않음
9.1.6 다른 군집 알고리즘
- 병합군집
- BIRCH
- 평균-이동
- 유사도 전파
- 스펙트럼 군집
9.2 가우스 혼합
가우스 혼합 모델 : 샘플이 파라미터가 알려지지 않은 여러 개의 혼합된 가우스 분포에서 생성되었다고 가정하는 확률 모델
- 하나의 가우스 분포에서 생성된 모든 샘플은 하나의 클러스터를 형성
- 일반적으로 이 클러스터는 타원형
- 타원의 모양, 크기, 밀집도, 방향이 다름
- 샘플이 주어지면 가우스 분포 중 하나에서 생성되었다는 것은 알지만 어떤 분포인지 도 이 분포의 파라미터는 무엇인지 알지 못함
기댓값-최댓화 알고리즘(EM)
- 클러스터 파라미터를 랜덤하게 초기화하고 수렴할 때까지 두 단계를 반복함
- 먼저 새매플을 클러스터에 할당함(기댓값 단계)
- 클러스터를 업데이트함(최대화 단계)
- 소프트 클러스터 할당을 사용
- 책임 : 클러스터에 속할 추정 확률
❗특성이나 클러스터가 많거나 샘플이 적을 땐 EM이 최적의 솔루션으로 수렴하기 어렵다. 이런 경우 알고리즘이 학습할 파라미터의 수를 제한해야 한다. 한 가지는 클러스터의 모양과 방향의 범위를 제한하는 것이다. 공분산 행렬에 제약을 추가해 이렇게 할 수 있다.
9.2.1 가우스 혼합을 사용한 이상치 탐지
가우스 혼합 모델을 이상치 탐지에 사용하는 방법 : 밀도가 낮은 지역에 있는 모든 샘플을 이상치로 볼 수 있다. 이렇게 할 때는 사용할 밀도 임곗값을 정해야 한다.
특이치 탐지 : 이상치로 오염되지 않은 깨끗한 데이터셋에서 훈련
이상치 탐지 : 데이터셋을 정제하는 데 사용
9.2.2 클러스터 개수 선택
가우스 혼합에서는 BIC나 AIC 같은 이론적 정보 기준을 최소화하는 모델을 찾는다.
BIC와 AIC
- 모두 학습할 파라미터가 많은 모델에게 벌칙을 가하고 데이터에 잘 맞는 모델에게 보상을 더한다.
- 종종 동일한 모델을 선택한다.
- 둘의 선택이 다를 경우 BIC가 선택한 모델이 AIC가 선택한 모델보다 간단한 경향이 있다.
9.2.3 베이즈 가우스 혼합 모델
- 최적의 클러스터 개수를 수동으로 찾지 않고 불필요한 클러스터의 가중치를 0으로 만들어줌.
- 타원형 클러스터에 잘 작동함.
- 다른 모양을 가진 클러스터에서는 잘 작동하지 않음.
9.2.4 이상치 탐지와 특이치 탐지를 위한 알고리즘
- Fast-MCD
- 아이솔레이션 포레스트
- LOF
- one-class SVM
- PCA