Programmers人工知能Defcos-Week 5日間5-Probability

11103 ワード

😃[5週-Day 5]😃



かくりつぶんぷ


[離散確率分布]

みつどすいてい


解決すべき最大の問題は密度推定である.N個の観察データx 1,...,分布関数p(x)は、xnが与えられたときに検索される.確率分布を完璧に求めることができれば、すべての問題を解くことができます.これは最も普遍的な問題だ.
一般的な方法は次のとおりです.
確率密度を求める場合,p(x)をパラメトリック分布と仮定する.回帰問題は主にp(t|x)を検索し,分類問題は主にp(C|x)を検索する.
この分布のパラメータを見つけるには、周波数注意とベイズメソッドを使用します.周波数注意法はlikedを最適化することによってパラメータ値を決定する.
ベイズ法はパラメータの先行確率を仮定し,ベイズ規則に基づいてパラメータの先行確率を求める方法である.これを使用してパラメータが見つかった場合、tまたはCを予測できます.
二重プリ分布はプリ確率の関数形式をポスト確率と同じにする.

二項変数-周波数注意方法


xが0または1、またはそのいずれかの値であると仮定します.
これは単純な確率にすぎないが,パラメータで表すことができる.
2つの確率のみの場合,出現1の確率をMUにパラメータ化し,出現0の確率は1−MUの値とする.
任意のx値が与えられた場合、Bernui分布で表され、MUのx乗と1−MUの1−x乗の積で表される.
これは不確実性をうまく表現することができず,それに一致する結果を生じる可能性がある.

この変数-ベイズメソッド


上記のエラーではbaginメソッドを使用できます.
もう1つの言い方は、M回観察イベントN回で結果x全体が1となる確率を定義することである.
mは0〜Nの値を有することができる.これは二項分布です.
前に見たヴァンヌーイ分布と二項分布は,データを表示する別の二つの観点と言える.
ベルヌーイの試みは毎回繰り返されていると言える.これらはそれぞれ確率変数です.複数の確率変数.
xが1の場合について何度観察したかの物語は二項分布である.確率変数があります.
ベージュスキームを使用するには、パラメータの確率を事前に決定する必要があります.重要なのは,後確率と前確率を同じ関数形式にすることである.
Beta分布を用いてBezier法で問題を解決し,Beta分布を二重プレ分布として用いた.
β分布はミューの分布についてである.元はパラメトリックMUだったが今はMUの分布このmuは、別のパラメータa,bによって定義される.

ここではガンマ関数を用い,ガンマ関数はうっかり拡張継承(factorial)の関数である.

このガンマ関数は

上の性質を満たすから(n-1)!満たす性質.
β分布では,a値が大きいほどミューの値は0.5より大きい側に形成され,逆も同様である.a値bの値がいずれも1の場合、β分布は直線的に現れる.
また、bとの差が大きいほど、右側の表示が鮮明になる.

β分布が標準化されていることも実証した.
(積分全体値は1==正規化)
https://m.blog.naver.com/mykepzzang/220843077734においてβ分布の基数と超差を実証した.
複数の変数の期待値と尤度を検索したり、推定したりできます.
多項式分布も求められ,すべてのmkが加算されるとNとなる.
二重プレ分布は、滴下分布を用いて行うことができる.β分布の一般化とみられる.
ディリクレイ分布は標準化されており、その証明も見つけることができます.ポイントの場合は1の性質です
普通の場合でもそうです.帰納法で証明できる.

JUPYTER NOTEBOOK


Uniform Distribution

from scipy.stats import uniform

n = 10000
start = 10
width = 20
data_uniform = uniform.rvs(size=n, loc = start, scale=width)

ax = sns.distplot(data_uniform,
                  bins=100,
                  kde=True,
                  color='skyblue',
                  hist_kws={"linewidth": 15,'alpha':1})
ax.set(xlabel='Uniform Distribution ', ylabel='Frequency')

Bernoulli Distribution

from scipy.stats import bernoulli
data_bern = bernoulli.rvs(size=10000,p=0.8) # mu == p
# 빈도를 절반으로 하고 싶으면, p를 0.5으로 세팅하면 됩니다.

np.unique(data_bern, return_counts=True)

ax= sns.distplot(data_bern,
                 kde=False,
                 color="skyblue",
                 hist_kws={"linewidth": 15,'alpha':1})
ax.set(xlabel='Bernoulli Distribution', ylabel='Frequency')

Beta Distribution

from scipy.stats import beta
a, b = 0.1, 0.1
data_beta = beta.rvs(a, b, size=10000)

ax= sns.distplot(data_beta,
                 kde=False,
                 color="skyblue",
                 hist_kws={"linewidth": 15,'alpha':1})
ax.set(xlabel='Beta Distribution', ylabel='Frequency')

Multinomial Distribution

from scipy.stats import multinomial
data_multinomial = multinomial.rvs(n=1, 
		   p=[0.2, 0.1, 0.3, 0.4], size=10000)

data_multinomial[:50]

for i in range(4):
  print(np.unique(data_multinomial[:,i], return_counts=True))