디리클레 프로세스는 군집갯수를 구하기 위해 사용할 수 있습니다.

디리클레 프로세스는 군집갯수를 구하기 위해 사용할 수 있습니다.
Photo by Divyanshi Verma / Unsplash

Dirichlet Process (디리클레 과정)

  • **Dirichlet Process (DP)**는 무한 차원의 확률분포로, 클러스터링 문제에서 군집의 개수가 미리 정해지지 않은 경우에 유용하게 사용됩니다.
  • DP는 기존의 Dirichlet Distribution를 확장한 것으로, 데이터 포인트들이 서로 다른 군집에 속할 확률을 정의합니다.
    • Dirichlet Distribution은 확률벡터(즉, 모든 원소가 0과 1 사이의 값을 가지며, 전체 합이 1이 되는 벡터)를 생성하는 다변량 확률 분포입니다.
      • 이 분포는 다항분포(Multinomial Distribution)의 사전 분포(Prior Distribution)로 자주 사용됩니다. $$\text{Dir}(\mathbf{x} | \alpha) = \frac{1}{B(\alpha)} \prod_{i=1}^K x_i^{\alpha_i - 1}$$

        • $\mathbf{x} = (x_1, x_2, \dots, x_K)$는 확률벡터로, $x_i \geq 0$이고, $\sum_{i=1}^K x_i = 1$입니다.
        • $\alpha = (\alpha_1, \alpha_2, \dots, \alpha_K)$는 양수 파라미터 벡터로, 이 값을 통해 각 차원의 분포 모양이 결정됩니다.
        • $B(α)$는 정규화 상수로, 각 $\alpha_i$ 값에 따라 Dirichlet 분포의 확률 밀도를 정상화하는 역할을 합니다.
  • Dirichlet Process는 다음과 같이 정의됩니다$$G∼DP(α,H)$$
    • $\alpha$는 농도 매개변수로, 새로운 군집이 생성될 빈도를 조절합니다.
    • $H$는 기본 분포로, DP에서 샘플링된 분포들이 따르게 될 기준이 되는 분포입니다.
  • Dirichlet Process는 다음과 같이 작동합니다:
    • 첫 번째 데이터 포인트는 기본 분포 $H$에서 샘플링된 값을 따릅니다.
    • 이후 데이터 포인트는 기존 군집에 속할 확률과 새로운 군집을 형성할 확률을 가지며, 이 확률은 농도 매개변수 $\alpha$에 따라 조절됩니다.
  • Dirichlet Process는 확률 과정의 한 유형으로, 특히 비매개변수 베이지안 통계에서 사용됩니다. 이 과정은 데이터를 군집화할 때 각 데이터가 특정 군집에 속할 확률을 모델링하는 데 사용됩니다.
    • 확률 과정(Probabilistic Process 또는 Stochastic Process)은 시간이나 공간과 같은 어떤 지표에 따라 변하는 확률적 현상을 수학적으로 모델링하는 것을 말합니다. 쉽게 말해, 시간의 흐름에 따라 확률적으로 변화하는 무작위 변수를 다루는 과정입니다.
      • 확률 과정은 무작위 변수의 연속적인 집합이라고 할 수 있습니다. 이 무작위 변수는 시간이나 공간에 따라 변하며, 각 시간 점에서 무작위적인 값을 가집니다.
        • 예를 들어, 주가의 변화, 날씨의 변화, 라디오 신호의 강도 변화 등이 확률 과정의 예입니다.
      • 확률 과정은 일반적으로 시간 ttt에 따라 정의됩니다. 즉, 어떤 무작위 현상이 시간이 지남에 따라 어떻게 변하는지를 설명합니다.
        • 예를 들어,$X(t)$가 시간 $t$에서의 주가를 나타낸다고 하면, $X(t)$는 특정 시간 $t$에서 주가가 가질 수 있는 여러 가지 가능성을 표현합니다.
  • 장점
    • 유연성: 군집의 개수를 미리 알 필요 없이, 데이터를 기반으로 군집이 동적으로 결정됩니다.
    • 무한한 가능성: 이론적으로 무한한 개수의 군집을 허용하므로, 데이터가 증가해도 새로운 군집을 생성할 수 있습니다.
    • 베이지안 접근: 베이지안 통계학의 기초 위에 세워져 있어, 사전 확률 분포와 사후 확률 분포의 개념을 사용합니다.
  • 단점
    • 복잡성: 개념적으로 이해하기 어렵고, 구현이 복잡할 수 있습니다.
    • 계산 비용: 데이터가 커질수록 계산 비용이 크게 증가할 수 있습니다.
    • 파라미터 민감도: 하이퍼파라미터에 따라 결과가 크게 달라질 수 있습니다.
  • 대안
    • Gaussian Mixture Model (GMM): 고정된 군집 개수를 사용하지만, 가우시안 분포를 기반으로 군집화하는 방법입니다.
    • k-means: 가장 기본적인 군집화 방법으로, 고정된 개수의 군집을 생성합니다.
    • Hierarchical Clustering: 군집의 계층적 구조를 형성하는 군집화 방법입니다.

Chinese Restaurant Process (중국집 과정)

  • **Chinese Restaurant Process (CRP)**는 Dirichlet Process의 직관적인 해석을 제공하는 비유적인 모델입니다.
  • 이 모델에서는 무한히 큰 좌석을 가진 중국집에 손님들이 들어오는 상황을 가정합니다. 새로운 손님은 이미 앉아 있는 사람들과 같은 테이블에 앉거나 새로운 테이블을 선택할 확률을 가집니다.

CRP의 규칙

  1. 기존 테이블에 앉는 확률: 이미 $k$명의 손님이 앉아 있는 테이블에 새로운 손님이 앉을 확률은 $\frac{k}{n + \alpha}$​입니다.
  2. 새로운 테이블을 선택할 확률: 새로운 테이블에 앉을 확률은 $\frac{\alpha}{n + \alpha}$입니다. 여기서 $\alpha$는 집중도(concentration parameter)로, 새로운 군집이 생성되는 빈도를 조절합니다.

CRP의 장점

  1. 직관적 이해: CRP는 DP를 직관적으로 이해하는 데 도움을 줍니다.
  2. 군집화의 자연스러운 생성: 데이터를 분석할 때 자연스럽게 군집이 형성되므로, 실제 데이터에서 유용하게 사용될 수 있습니다.

단점

  1. 비유적 모델: CRP는 비유적인 모델이므로, 실제 구현에서 다소 추상적일 수 있습니다.
  2. 매개변수 설정의 어려움: 집중도 α\alphaα의 값을 적절히 설정하는 것이 어려울 수 있습니다.

Sample

import numpy as np  
import matplotlib.pyplot as plt  
from scipy.stats import gamma  
  
def bayesian_chinese_restaurant_process(alpha_prior_shape, alpha_prior_rate, n_customers):  
    # alpha 값을 감마 분포로부터 샘플링 (사전분포 반영)  
     # 감마 분포에서 α 값을 샘플링합니다. 이 값이 CRP에서 새로운 테이블을 선택할 확률을 결정하는 데 사용됩니다  
    alpha = np.random.gamma(alpha_prior_shape, 1 / alpha_prior_rate)  
      
    tables = []  
    for i in range(n_customers):  
        if len(tables) == 0:  
            tables.append(1)  
        else:  
            probs = np.array(tables) / (i + alpha)  
            probs = np.append(probs, alpha / (i + alpha))  
            table_choice = np.random.choice(len(tables) + 1, p=probs)  
            if table_choice == len(tables):  
                tables.append(1)  
            else:  
                tables[table_choice] += 1  
    return tables, alpha  
  
#감마 분포의 파라미터로, 사전분포를 정의합니다.  
alpha_prior_shape = 2.0  # 감마 분포의 형태 매개변수 (사전분포)  
alpha_prior_rate = 1.0   # 감마 분포의 척도 매개변수 (사전분포)  
n_customers = 100  
  
# 베이지안 CRP 실행  
tables, sampled_alpha = bayesian_chinese_restaurant_process(alpha_prior_shape, alpha_prior_rate, n_customers)  
  
# 결과 시각화  
plt.bar(range(len(tables)), tables)  
plt.xlabel('Table Index')  
plt.ylabel('Number of Customers')  
plt.title(f'Bayesian Chinese Restaurant Process (Sampled alpha={sampled_alpha:.2f})')  
plt.show()

Read more

[책]Reshuffle: Who wins when AI restacks the knowledge economy

[책]Reshuffle: Who wins when AI restacks the knowledge economy

원래는 Amazon에 가서 Personal Knowledge Managment에 관한 책을 사려고 했다. Sketch Your Mind라는 책이었는데, 그 때 이 책 “Reshuffle”을 발견하였다. AI가 어떻게 Knowledge Economy를 흔들 것가? 라는 부제를 훑어보면서 저자가 쓴 다른 책을 보게 되었는데 거기에 내가 좋아했던 책을쓴 저자라는 것을 알게 되었다. 그래서 크게 고민하지 않고 구매를 하고

By Bongho, Lee
[책]올라운드투자, 누군가의 투자일기

[책]올라운드투자, 누군가의 투자일기

“올라운드 투자”라는 제목을 보았을 때는, “올라운드 플레이어”가 생각이 났다. “올라운드”라는 표현을 오랜만에 들어본 까닭이었다. 그럼에도 불구하고 이 책을 고른 것은 저자가 그간 보여준 컨텐츠에 대한 신뢰가 있던 까닭이었다. 컨텐츠를 다양하게 보는 편이지만 깊이가 아주 있지는 않았다. 여기서 깊이라 함은 기존 전문적인 정량적 분석의 내용의 수준을 말하는 것이다.

By Bongho, Lee
내가 놓치고 있던 미래, 먼저 온 미래를 읽고

내가 놓치고 있던 미래, 먼저 온 미래를 읽고

장강명 작가의 책은, 유학시절 읽고 처음이었다. 유학시절 "한국이 싫어서"라는 책은 동기부여가 상당히 되는 책이었다. 한국을 떠나 새로운 정채성을 학생으로서 Build up 해나가고 있던 상황에서 이 책은 제목부터 꽤 솔깃하였다. 물론 결말이 기억날 정도로 인상깊은 책은 아니었지만 말이다. 그렇게 시간이 흘러 장강명 작가의 책은 더 이상 읽지 않던

By Bongho, Lee