일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- API Gateway
- 공분산
- GenericGBQException
- BigQuery
- subdag
- grad-cam
- API
- 유튜브 API
- UDF
- gather_nd
- integrated gradient
- TensorFlow
- GCP
- Airflow
- session 유지
- spark udf
- requests
- Retry
- top_k
- correlation
- youtube data
- chatGPT
- 상관관계
- hadoop
- XAI
- Counterfactual Explanations
- flask
- login crawling
- airflow subdag
- tensorflow text
- Today
- Total
데이터과학 삼학년
[ISLR] Unsupervised Learning 본문
앞장에서 다뤘던 회귀, 분류의 문제는 label이 있는 지도 학습 (supervised learning)이다.
비지도 학습은 반응변수(response variable) Y가 없기때문에 예측하는 데에는 큰 관심은 없다.
대신, X를 통해서 흥미로운 것을 발견하고자 하는 것이 주목적으로 볼 수 있다.
대표적인 비지도학습인
-
주성분분석(principal componentes analysis) : 데이터를 시각화 하거나 전처리하는데 주로 사용 (차원(demensional)을 줄여줌)
-
클러스터링 (clustering) : 데이터 내의 서브 그룹화
위 2가지에 대해 집중적으로 알아보자.
The Challenge of Unsupervised Learning
비지도학습이 어려운 이유는 특정한 목적이 없으며, 분석된 결과에 대한 검증자체가 어렵다는 것이다.
주로 비지도학습은 탐색적 자료분석 (Exploratory Data Analysis, EDA)의 일부로 주로 사용된다.
다만 비지도학습을 통해서 우리는 표본들 내의 특정 성격이 비슷한 데이터끼리 그룹화를 할 수 있으며, 데이터의 패턴을 분석하는데도 유용하게 사용할 수 있다.
Principal Components Analysis (주성분 분석)
주성분 분석은 원래 가지고 있는 변수 X 들 중 대표적인 성질을, 대표적인 변수들을 가지고, 전체 데이터를 나타낼 수 있게 해준다.
주성분 분석은 지도학습 문제에 사용하기 위한 파생변수 (derived variable)을 생성하는 것 뿐 아니라 다차원의 데이터를 시각화할때 차원을 줄여 시각화하는 용도로도 많이 사용된다.
What Are Principal Components?
PCA는 가능한 한 많은 변동성을 포함하는 자료에 대한 저차원 표현을 찾는다. 예를 들면 n개의 관측치 각각이 p차원의 공간에 있지만, 모든 차원에서 동등하게 관심이 있는 것은 아니다.
즉, PCA는 가능한 관심도가 높은 작은 차원을 찾는 것이다.
여기서 관심이란 개념은 관측치들이 각 차원을 따라 변하는 정도에 의해 측정된다.
PCA에 의해 발견된 각 차원은 p개 변수들의 선형결합이다.
변수 X1~Xp의 첫번째 주성분은 가장 큰 분산을 가지게 되는 변수들의 정규화된 선형 결합이다.
여기서
이다. 즉 각 변수들의 중요도의 비율로도 판단할 수 있다. 쎄타11~쎄타p1은 첫 번째 주성분의 loadings 이라 하고, 주성분 로딩 벡터는
를 구성한다. 로딩은 제곱합이 1이 되게 제한되는데 이는 로딩요소들의 절대값이 임의의 큰 값이 되어 분산이 커질 수 있는 위험을 막는다.
결국 주성분 로딩벡터는 아래식의 최적화 문제를 푸는 것이다.
위 최적화 문제는 eigen decomposition (고유값 분해)를 통해 풀 수 있다.
간단히 PCA에 대해 말하면 위 각 변수에 대한 주성분 로딩벡터를 구한 Z1, Z2,...를 구함으로서 위 변수들을 로딩벡터로 구성된 부분 공간으로 투영하는 방식이다.
Another Interpretation of Principal Components
주성분 분석의 다른 해석으로 M개 주성분점수벡터와 첫 M개 주성분로딩벡터는 M차원의 근사치를 제공하게 된다.
More on PCA
Scaling the Variables
PCA를 할때는 변수를 반드시 스케일링해야한다. 예를 들어 아래와 같은 데이터 셋이 있을때 각 변수의 단위는 모두 다르다.
Assault, Murder, Rape는 인구 10만명 발생 횟수지만, UrbanPop은 백분율이다. 따라서 스케일링되지 않은 변수에 PCA를 적용하면 Assault 변수가 다른 변수들에 비해 월등히 큰 분산을 가지게 되어 첫번째 주성분 로딩벡터는 Assault에 대해 매우 큰 로딩을 가지게 될 것이다.
아래 그림의 왼쪽 그림은 스케일링이 된 상태에서 PCA를 한 것이지만, 오른쪽은 스케일링을 하지 않고 PCA를 수행한 것이다.
PCA를 하기 전에 일반적으로 표준편차가 1이 되도록 스케일링을 하는 것이 권장된다.
Uniqueness of the Principal Components
주성분 로딩벡터는 부호는 다를 수 있지만 고유하다. 부호가 다를 수 있는 이유는 각 주성분로딩벡터는 p차원의 공간에서 방향을 지정하는데 부호가 바뀌어도 방향에 아무 영향이 없기 때문이다.
Z의 분산은 -Z의 분산과 동일
같은 데이터를 가지고 다른 소프트웨어에 넣었어도 PCA된 결과는 항상 같다.
The Proportion of Variance Explained
처음 두개의 주성분로딩벡터를 투영하여 2차원 뷰를 얻게 된다.
그렇다면 데이터를 PCA를 함으로써 잃게 되는 정보는 얼마나 될까?
각 주성분에 의해 설명되는 분산의 비율(PVE)을 비교할 수 있다. 만약 자료에 존재하는 총 분산이 아래 식처럼 주어졌을때, PVE는 식(10.8) 과 같다.
Deciding How Many Principal Components to Use
위의 방법대로 PVE를 구하여 각 주성분에 대해 설명되는 분산의 비율을 나타내면 아래 그림과 같다.
두개의 주성분을 합쳐 약 87%이면 상당히 많은 정보를 가지고 있다고 볼 수 있다. 특히 이렇게 그래프를 그림으로써 몇개의 주성분을 사용할지 결정할 수 있다.
몇개 차원으로 줄일지 결정하는 방법은 엘보우로 꺾임이 있는 부분을 토대로 결정할 수 있다. (elbow method) -> 꺽임 이후 큰 변화가 없는 지점을 선택하면 된다.
결국 PCA는 몇개의 주성분을 사용할지 결정한 후 차원을 줄여주는 방법으로 보면 된다.
PCA에 대한 자세한 방법은...search 해보길...
Clustering Methods
클러스터링은 데이터에서 서브그룹 또는 클러스터를 찾는 기법을 말한다.
예를 들어 n개의 관측치가 있고, p개 변수를 가지고 있다고 할때, p개 변수에 기반하여 그룹을 나누는 것을 말한다.
클러스터링과 PCA 둘다 적은 수의 변수로 summary하려는 목적, 즉 데이터를 간단히 표현하려하지만 방법이 조금 다르다.
PCA는 분산의 많은 비율을 설명하는 관측치들의 저차원 표현을 찾는다.
클러스터링은 관측치 중에서 동종의 서브그룹을 찾는다.
클러스터링의 대표적인 방법으로 K-means clustering 과 hierarchical clustering (계층적 클러스터링) 에 대해 알아본다.
K-Means Clustering
K 개의 클러스터를 만드는 방법이라고 생각하면 된다. K-means의 기본 개념은 어떠한 클러스터 내의 변동이 가능한 작은 것 끼리 클러스터링하는 것이다.
즉 클러스터 내의 데이터간 거리에 따라 클러스터한다.
가장 먼저 클러스터 내 변동을 어떤 것으로 할지 정의해야한다.
주로 일반적으로 유클리드 거리를 써서 정의를 하게 된다.
하이퍼파라미터인 k를 몇으로 할지 정한 이후 아래 식을 만족 시키는 그룹을 나누면 된다.
위 식을 푸는 알고리즘은
먼저 랜덤하게 k개의 점을 찍고 해당 점의 무게 중심을 계산하여 각 관측치가 그 무게중심과 가장 가까운 녀석들에게 해당 class를 할당하는 식의 방법이다.
각 알고리즘의 단계를 수렴할때까지 반복하면 아래 그림과 같이 수행이 된다.
- 전체 데이터에서 random하게 class를 부여함
- 각 class의 무게중심을 구하고, 무게중심을 기준으로 가까운 값들은 해당 class로 다시 할당함
- 위 단계를 반복하여 더이상 변하지 않을 때까지(수렴) 실행
랜덤한 k개의 점을 찍고 찾아내는 방식도 있음 (아래 처럼)
단, k-means clustering은 전역 최적 (global optimum)이 아닌 국소 최적 (local optimum)을 찾기때문에 아래 그림처럼 주어진 초기의 랜덤 클러스터 할당에 따라 결과값이 달라진다.
이러한 이유(not global optomum) 때문에 초기 랜덤할당을 다르게 하여 알고리즘을 여러번 실행하는 것이 중요하다.
Hierarchical Clustering
계층적 클러스터링은 k 값의 지정이 필요하지 않은 기법이다. k-평균 클러스터링에 비해 또 다른 장점은 덴드로그램 (dendrogram)이라는 트리 기반으로 표현된다는 것이다.
여기서는 계층적 클러스터링 중 bottom-up (상향식) 과 agglomerative (응집) 클러스터링에 대해 알아본다.
Interpreting a Dendrogram
먼저 덴드로그램을 해석하는 방법에 대해 알아보자. 먼저 한 예로 아래그림 처럼 45개의 관측치를 가지고 살펴보자.
그림을 보면 3개의 class로 구분되어 있는 것을 볼 수 있다. 실제 클래스는 표시가 없다고 가정하고, 아래 그림 10.9를 가지고 살펴보면, 아래 총 45개의 데이터가 연결되어 있다.
위로 올라올수록 이 가지들은 서로 합쳐진다.
즉, 융합이 일찍 일어날 수록 트리의 높이는 낮아지게 된다. 따라서 트리의 맨 아래에서 융합되는 관측치들은 서로 상당히 유사하고, 반면에 트리의 꼭대기 가까운데서 융합되는 관측치들은 서로 상당히 다른 경향이 있을 것으로 볼 수 있다.
덴드로그램을 통해 데이터간 유사성을 판단 내리자면 아래 쪽에서 융합되는 것일 수록 서로가 더 유사한 패턴을 가지고 있다고 판단할 수 있다.
아래 그림처럼 트리의 높이를 어느정도에서 자를 지에 따라 k개의 그룹으로 나눌 수있게 된다.
즉 맨 윗단에서 자르게 되면 1~2개의 그룹으로 나눠지는 것과 같다. 즉 트리의 높이를 결정하는 것은 k-means 의 k를 지정하는 것과 같은 역할을 한다.
이러한 덴드로그램 해석방법을 가지고 아래 그림의 데이터를 분석할때,
실제로 아래 왼쪽 그림을 보면 2 와 9 가 가까이 있다고 해서 같은 성질을 가지는 데이터라고 생각하는 것은 오산이다 (오른쪽그림에서 확인 가능).
즉, 언제, 트리의 어떤 높이로 와서 합쳐지는지를 확인해야 가까운 성질을 가지는지 볼 수 있는 것이다.
덴드로그램은 국적이나 성별로 나눠진 데이터에 대해 나눈다고 할 때 직관적으로는 국적별, 성별로 나누겠지만, 덴드로그램은 그렇게 하지 않을 가능성이 있다.
그렇기 때문에 cluster 들이 nested 되어 있지 않으면 덴드로그램을 만들기 어렵다.
The Hierarchical Clustering Algorithm
계층적 클러스터링 덴드로그램은 매우 간단한 알고리즘을 사용하여 얻어진다.
먼저, 각 관측치(n)개를 대상으로 각 쌍 사이의 비유사성 (dissimilarity) 측도를 정의한다.
이때 주로 유클리드 거리가 사용된다. 경우의 수는 nC2
덴드로그램은 바닥에서 시작하여 비유사성 측도에 따라 클러스터로 취급되며 올라오게 된다.
그리고 덴드로그램을 보고 클러스터를 나눠주면 된다.
아래 그림과 같이 유클리드 거리를 이용하여 가장 가까운 유닛을 먼저 계산하고, 나머지 관측치를 대상으로 다시 가장 가까운 클러스터를 만들어 준다.
이 과정을 반복하며 점진적으로 클러스터를 만들어 주며 트리를 형성해 나간다.
결국 클러스터를 pairwise 방식으로 반복해서 만들며 tree를 형성하는 것이라고 생각하면 된다.
덴드로그램을 만들때 비유사성 측도는 아래 표와 같이 linkage 유형을 선택할 수 있다.
complete: 모든 패어의 거리를 구해서 가장 거리가 먼 녀석부터 클러스터
single : 2가지 쌍 중 거리가 가장 가까운 녀석
average : pair들의 거리의 모든 평균
centroid : 해당 클러스터의 centroid를 구해서 그 거리를 계산하는 방식
Choice of Dissimilarity Measure
비유사성 측도 선택은 다양하게 할 수 있다. 특히 비유사성 측도는 덴드로그램에 큰 영향을 주기 때문에 매우 중요하다.
비유사성 측도는 유클리디안 거리말고도 상관기반 거리도 있다.
상관 기반 거리 (correlation-based distance) : 두 관측치간 상관성이 높으면 유사하다고 간주
덴드로그램을 위한 비유사성 측도의 유형도 결정해야한다.
아래그림이 유형에 따른 차이를 나타낸다.
아래 그림 케이스의 경우, 비유사성 측도에 따라 매우 상이한 결과가 나타날 수 있다.
아래 그림의 관측치 1과 3은 각 변수에 대해 유사한 값을 가지고 있어 유클리드 거리는 작다. 그러나 이들은 약하게 상관되어 있어 상관 기반 거리는 크다.
반면 관측치 1과 2는 각 변수에 대해 상당히 다른 값을 가지며, 유클리거리는 크나 상관기반 거리는 작다.
Practical Issues in Clustering
클러스터링에서 실질적인 이슈가 있다.
- 공통 이슈
- 관측치들 또는 변수들이 어떻게 표준화 되어야하는가? 평균0 표준편차1 혹은 min-max scaler?
- 계층적 클러스터링의 경우
- 비유사성 측도를 어떤 것을 사용하나
- 어떤 연결을 사용하나
- 덴드로그램을 어디에서 절단해하나
- k-평균 클러스터링의 경우
- 데이터 셋에서 k를 그룹을 몇개로 선정할 것이다.
- outlier의 영향을 많이 받는다 --> soft version이 있음 (outliers의 영향을 줄이는)
Validating the Clusters Obtained
클러스터된 그룹을 검증하는 방법은....답하기 어렵다.
아래 그림은 scaling 보정을 해야하는 이유를 나타낸다.
출처 : An Introduction to Statistical Learing in R
'Statistical Learning' 카테고리의 다른 글
[기초통계] Probability vs Likelihood (0) | 2020.08.12 |
---|---|
Imbalanced data approach (0) | 2020.08.10 |
[ISLR] Support Vector Machines (0) | 2020.04.02 |
[기초통계] 왜도(Skewness)와 첨도(Kurtosis) (0) | 2020.03.28 |
[ISLR] Tree-Based Methods (0) | 2020.03.26 |