[Math] Categorical Distribution

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

Categorical Distribution

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


1. Categorical Random Variable

$K$개(=class 갯수)의 정수값 중 하나를 가질 수 있는 확률변수.

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

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


2. 주사위 예

$$\begin{aligned} x &= 1 \quad \rightarrow \quad \mathbf{x} = (1, 0, 0, 0, 0, 0) \\ x &= 2 \quad \rightarrow \quad \mathbf{x} = (0, 1, 0, 0, 0, 0) \\ x &= 3 \quad \rightarrow \quad \mathbf{x} = (0, 0, 1, 0, 0, 0) \\ x &= 4 \quad \rightarrow \quad \mathbf{x} = (0, 0, 0, 1, 0, 0) \\ x &= 5 \quad \rightarrow \quad \mathbf{x} = (0, 0, 0, 0, 1, 0) \\ x &= 6 \quad \rightarrow \quad \mathbf{x} = (0, 0, 0, 0, 0, 1) \end{aligned}$$

  • 화살표 오른쪽에 있는 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이고(=mutually exclusive), 나머진 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에 속할 확률을 의미.

3. Categorical Distribution

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

 

즉, 파라메터(각 클래스가 될 확률)가 vector가 됨: $\mathbf{\mu}=(\mu_1, \dots, \mu_K)$

 

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

$$
\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을 가질 수 있음.

시행횟수를 여러 차례로 증가시킬 경우, Multinomial Distirbution이 됨.

2024.05.22 - [.../Math] - [Math] Multinomial Distribution (다항분포)

 

[Math] Multinomial Distribution (다항분포)

Multinomial Distribution : $K$ 개 class인 Categorical Variable의sample을 $N$개 얻을 때의각각의 class $i$가 각각 $x_i$번 나오는 random variable $\textbf{X}$의 이산 확률 분포. 달리 말하면 $\textbf{x}$가 $(x_1, x_2, \cdots, x_K

dsaint31.tistory.com


3-1. Probability Mass Function (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}$$


3-2. Moment

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

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

3-2-1. expected value

$$
E[x_i]=\mu_i
$$


3-2-2. variance

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


4. 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: rvs=Random Variates의 약자.

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()
더보기

결과


같이보면 좋은 자료들

2024.04.18 - [.../Math] - [Math] Probability Distribution

 

[Math] Probability Distribution

Probability DistributionProbability Distribution은 특정 random variable(확률 변수)이 취할 수 있는 각각의 값에 대한 확률을 나타내는 분포임.Probability Distribution Function (PDF)으로 기술되며,random variable이 어떤 값

dsaint31.tistory.com

2025.05.08 - [.../Math] - [Summary] 확률 및 통계 기본

 

[Summary] 확률 및 통계 기본

기본 term 과 정의들.2024.02.23 - [.../Math] - [Math] 기본 Term: Statistics [Math] 기본 Term: Statistics기본 Term: Statistics기술 통계와 추론 통계의 주요 개념들, 그리고 관련 용어들에 대한 소개1. Statistics (통계)의

dsaint31.tistory.com


 

'... > 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
  • 전체
    오늘
    어제
    • 분류 전체보기 (748)
      • Private Life (13)
      • Programming (56)
        • DIP (112)
        • ML (26)
      • Computer (119)
        • CE (53)
        • ETC (33)
        • CUDA (3)
        • Blog, Markdown, Latex (4)
        • Linux (9)
      • ... (351)
        • Signals and Systems (103)
        • Math (172)
        • 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
    • 기타 방사능관련.
  • 인기 글

  • 태그

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

  • 최근 글

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

티스토리툴바