[Math] Categorical Distribution

2024. 5. 22. 21:17·.../Math
728x90
728x90

Categorical Distribution

일반적으로 multi-class classification (다중분류문제)에서 사용되는 확률분포.


Categorical Random Variable

$K$개의 정수값 중 하나를 가질 수 있는 확률변수.

  • 이때 가질 수 있는 $K$개의 정수값은 각각 class (또는 category) 에 해당함. → $K=2$인 경우, Bernoulli Random Variable과 동일.
  • one-hot encoding을 사용하여 sample value가 vector로 나옴 → moment들도 모두 vector임.

대표적으로 주사위 던지기를 들 수 있고, 이때 $K=6$ 임.


주사위 예

$x=1 \rightarrow \textbf{x}=(1,0,0,0,0,0)$

$x=2 \rightarrow \textbf{x}=(0,1,0,0,0,0)$

$\vdots$

$x=6 \rightarrow \textbf{x}=(0,0,0,0,0,1)$

  • 화살표 오른쪽에 있는 vector표현이 바로 one-hot encoding 임.
  • $\textbf{x}=(x_1,x_2,x_3,x_4,x_5,x_6)$으로 일반형으로 표현됨.
    • $x_i$는 0 or 1 만을 가질 수 있음.
    • $\displaystyle \sum^K_{i=1}x_i = 1$이 성립.
      즉, $K$ class인 경우, $\textbf{x}$는 $K$개의 element를 가지며, 오직 한 element만 1이고, 나머진 0을 가짐.
    • $x_i$는 일종의 Bernoulli random variable이라고 볼 수 있으며, 각각의 $x_i$는 Bernoulli distribution을 따르므로 1이 될 확률 $\mu_i$를 가짐.
    • $x_i$들을 한꺼번에 vector $\textbf{x}$로 표현하는 것처럼, $\mu_i$들을 모아 vector $\mu$로 표현함 (vector 표현이 보다 일반적임.
  • $\mu=(\mu_1, \mu_2, \mu_3, \cdots, \mu_K)$
    • vector $\mu$는 Categorical distribution의 parameter임.
    • vector $\mu$는 다음의 조건을 만족함.
      • $\mu_i$는 0 이상, 1이하의 값을 가짐 ($x_i$와 달리 연속변수임).
      • $\displaystyle \sum^K_{i=1} \mu_i = 1$이 성립. $\mu_i$는 $i$ 번째 class에 속할 확률을 의미.

Categorical Distribution

Bernoulli distirbution에서 random variable이 0과 1만을 가지는 것을 1~ $K$ 의 integer값을 가지도록 확장한 것.

 

수식으로 다음과 같이 표현됨.

$$
\begin{aligned}\textbf{X}&\sim \text{Cat}(\textbf{x};\mu)\&\sim \text{Cat}(x_1,x_2,\cdots,x_K;\mu_1,\mu_2,\cdots,\mu_K)\end{aligned}
$$

  • $x_i$: 카테고리 $i$에 대한 Bernoulli random variable. : 0 or 1을 가질 수 있음.

PMF

Probability Mass Function은 다음과 같음.

$$
\text{Cat}(\textbf{x};\mu)=\left{ \begin{matrix} \mu_1 & \text{if } \textbf{x}=(1,0,\cdots,0)\\mu_2& \text{if }\textbf{x}=(0,1,\cdots,0)\\vdots & \vdots\\mu_K & \text{if }\textbf{x}=(0,0,\cdots,1) \end{matrix} \right.
$$

one-hot encoding을 사용했기 때문에 다음과 같은 축약형이 가능함.

$$
\text{Cat}(\textbf{x};\mu)=\mu_1^{x_1}\mu_2^{x_2}\cdots\mu_K^{x_K}=\prod_{i=1}^{K}\mu_i^{x_i}
$$


Moment

sample value가 vector이므로, moment도 vector임.

moment의 각 element는 다음과 같음 (참고: Bernoulli distribution)

expected value

$$
E[x_i]=\mu_i
$$


variance

$$
\text{Var}[\mu_i]=\mu_i(1-\mu_i)
$$


scipy.stats.multinomial

multinomial은
사실 Multinomial distribution(다항분포)를 위한 것이나,
시행횟수 $N$이 1인 경우 Categorical Distibution이 됨.
(Bernoulli distribution과 Binomial distribution의 관계와 같음)

import numpy as np
import scipy 
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
sns.set()

mu = [0.1,0.2,0.2,0.2,0.2,0.1]
N = 1
rv = scipy.stats.multinomial(N, mu)

candidates = np.arange(1,7)
candidates_onehot = pd.get_dummies(candidates)

plt.bar(candidates, rv.pmf(candidates_onehot.values))
plt.ylabel('p(x)')
plt.xlabel('sample value')
plt.title('PMF of Categorical Distribution')
plt.show()
더보기

결과


rvs를 통한 sampling

np.random.seed(973037)
x = rv.rvs(100)
print(x[:3])
  • [[0 1 0 0 0 0] [0 0 0 0 1 0] [0 0 0 0 1 0]]

Simulation

measured = x.sum(axis=0) / float(len(x))

plt.bar(candidates, measured)
plt.title('simulation of Categorical distribution')
plt.xlabel('sample value')
plt.ylabel('ratio')
plt.show()
더보기

결과


Ideal vs. Simulation

df = pd.DataFrame({'ideal': rv.pmf(candidates_onehot.values), 'measured':measured})
df.index = candidates
df2 = df.stack().reset_index()
df2.columns = ['sample value','type','ratio']
#df2.pivot('sample value','type','ratio')

sns.barplot(x='sample value', y='ratio', hue='type', data=df2)
plt.title('ideal vs. measured')
plt.show()
더보기

결과

'... > Math' 카테고리의 다른 글

[Math] Optimization Problem 의 종류  (0) 2024.06.01
[Math] Optimization 이란 (Introduction)  (0) 2024.06.01
[Math] Multinomial Distribution (다항분포)  (0) 2024.05.22
[Math] Example: Variable  (0) 2024.05.02
[Math] The Law of Total Probability  (0) 2024.04.23
'.../Math' 카테고리의 다른 글
  • [Math] Optimization Problem 의 종류
  • [Math] Optimization 이란 (Introduction)
  • [Math] Multinomial Distribution (다항분포)
  • [Math] Example: Variable
dsaint31x
dsaint31x
    반응형
    250x250
  • dsaint31x
    Dsaint31's blog
    dsaint31x
  • 전체
    오늘
    어제
    • 분류 전체보기 (739)
      • Private Life (13)
      • Programming (56)
        • DIP (104)
        • ML (26)
      • Computer (119)
        • CE (53)
        • ETC (33)
        • CUDA (3)
        • Blog, Markdown, Latex (4)
        • Linux (9)
      • ... (350)
        • Signals and Systems (103)
        • Math (171)
        • Linear Algebra (33)
        • Physics (42)
        • 인성세미나 (1)
      • 정리필요. (54)
        • 의료기기의 이해 (6)
        • PET, MRI and so on. (1)
        • PET Study 2009 (1)
        • 방사선 장해방호 (4)
        • 방사선 생물학 (3)
        • 방사선 계측 (9)
        • 기타 방사능관련 (3)
        • 고시 (9)
        • 정리 (18)
      • RI (0)
      • 원자력,방사능 관련법 (2)
  • 블로그 메뉴

    • Math
    • Programming
    • SS
    • DIP
  • 링크

    • Convex Optimization For All
  • 공지사항

    • Test
    • PET Study 2009
    • 기타 방사능관련.
  • 인기 글

  • 태그

    SS
    Vector
    fourier transform
    numpy
    math
    Convolution
    Term
    signal_and_system
    linear algebra
    random
    Optimization
    SIGNAL
    signals_and_systems
    검사
    opencv
    인허가제도
    Probability
    Programming
    function
    Python
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
dsaint31x
[Math] Categorical Distribution
상단으로

티스토리툴바