군집 평가(Cluster Evaluation) 비지도학습의 특성상 어떠한 지표라도 정확하게 성능을 평가하기는 어렵다. 군집화의 성능을 평가하는 대표적인 방법으로 실루엣 분석을 이용한다. 실루엣 분석의 개요 실루엣 분석은 각 군집 간의 거리가 얼마나 효율적으로 분리되어 있는지를 나타낸다. → 효율적으로 잘 분리됐다는 것은 다른 군집과의 거리는 떨어져있고 군집 내에서는 서로 가깝게 잘 뭉쳐져있다는 의미이다. 실루엣 분석은 실루엣 계수(Silhouette coeficient)를 기반으로 한다. 개별 데이터가 가지는 실루엣 계수는 해당 데이터가 같은 군집 내의 데이터와 얼마나 가깝게 군집화돼 있고, 다른 군집과는 얼마나 멀리 분리돼있는지 나타내는 지표이다. 실루엣 계수식 a(i): 해당 데이터 포인트와 같은 군..
K-평균 알고리즘 이해 K-평균은 군집화에서 가장 일반적으로 사용되는 알고리즘이다. 군집 중심점이라는 특정한 임의의 지점을 선택해 해당 중심에 가장 가까운 포인트들을 선택하는 군집화 기법이다. *K-평균의 장점* 일반적인 군집화에서 가장 많이 활용되는 알고리즘이다. 알고리즘이 쉽고 간결하다. *K-평균의 단점* 거리 기반 알고리즘으로, 속성 개수가 매우 많을 경우 군집화 정확도가 떨어진다.(이를 위해 PCA 차원 축소를 적용하기도 함) 반복 수행시, 횟수가 많을 경우 수행 시간이 느려진다. 몇 개의 군집(cluster)을 선택해야 할지 가이드하기 어렵다. 사이킷런 KMeans 클래스 KMeans는 다음과 같은 초기화 파라미터를 가지고 있다. In [ ]: class sklearn.cluster.KMean..
NMF(Non-Negative Matrix Factorization) NMF 개요 NMF는 TruncatedSVD와 같이 낮은 Rank를 통한 행렬 근사 방식의 변형이다. NMF는 원본 행렬 내의 모든 원소값이 양수라는게 보장되면 더 간단하게 두 개의 기반 양수 행렬로 분해될 수 있는 기법이다. NMF는 SVD와 유사하게 차원 축소를 통한 잠재 요소 도출로 이미지 변환 및 압축, 텍스트의 토픽 도출 등의 영역에서 사용되고 있다. In [1]: from sklearn.datasets import load_iris from sklearn.decomposition import NMF import matplotlib.pyplot as plt iris = load_iris() iris_ftrs = iris.dat..
SVD(Singular Value Decomposition) SVD 개요 SVD도 PCA와 유사한 행렬 분해 기법을 이용한다 PCA는 정방행렬만을 고유벡터로 분해할 수 있지만, SVD는 행과 열의 크기가 다른 행렬에도 적용할 수 있다 → 특이값 분해 넘파이의 SVD를 이용해 SVD 연산을 수행하고, 분해가 어떤 식으로 되는지 예제로 알아보자 넘파이의 SVD 모듈인 numpy.linalg.svd 행렬의 개별 로우끼리의 의존성을 없애기 위해 4x4 랜덤 행렬을 생성하자 In [5]: import numpy as np from numpy.linalg import svd np.random.seed(121) a = np.random.randn(4, 4) print(np.round(a, 3)) [[-0.212 -0..
LDA(Linear Discriminant Analysis) LDA 개요 LDA는 선형 판별 분석법으로 불리며 PCA와 매우 유사하다 PCA와 유사하게 입력 데이터셋을 저차원 공간에 투영해 차원을 축소하는 기법이지만, LDA는 '지도학습의 분류'에서 사용하기 쉽도록 개별 클래스를 분별할 수 있는 기준을 최대한 유지하면서 차원을 축소한다 LDA는 입력 데이터의 타겟값 클래스를 최대한으로 분리할 수 있는 축을 찾는다 특정 공간상에서 클래스 분리를 최대화하는 축을 찾기 위해, 클래스 간 분산(between-class scatter)과 클래스 내부 분산(within-class scatter)의 비율을 최대화하는 방식 즉, 클래스 간 분산은 최대한 크게, 클래스 내부 분산은 최대한 작게 가져가는 방식 LDA는 클..
차원 축소 개요 차원 축소는 매우 많은 피처로 구성된 다차원 데이터셋의 차원을 축소해 새로운 차원의 데이터셋을 생성하는 것 피처가 수백 개 이상이면 상대적으로 적은 차원에서 학습된 모델보다 예측 신뢰도가 떨어진다 또, 피처가 많으면 피처들끼리 상관관계가 높을 수도 있다 → 다중공선성 문제 차원을 축소하여 피처 개수를 줄이면 직관적으로 데이터를 해석할 수 있다 피처 선택: 특정 피처에 종속성이 강한 불필요한 피처는 아예 제거하고 데이터의 특징을 잘 나타내는 주요 피처만 선택하는 것 피처 추출: 기존 피처를 저차원의 중요 피처로 압축해서 추출하는 것 새롭게 추출된 피처는 기존 피처와는 완전히 다른 값이 된다 피처를 함축적으로 잘 설명할 수 있는 또 다른 공간으로 매핑하여 추출함 기존 피처가 전혀 인지하기 어..