λͺ©ν
- μ‘°κ±΄λΆ νλ₯ μ λν μ΄ν΄
- λ² μ΄μ§μ ν΅κ³μ κ°λ
λ² μ΄μ§μμ ν΅μ¬μ 'κΈ°μ‘΄ κ°μ€'μ 'μλ‘μ΄ μ 보'λ₯Ό ν λλ‘ 'μ λ°μ΄νΈ' νλ€λ μ
λͺ¬ν°ν
λ¬Έ 3κ° λ€μ μΌμ 2λ§λ¦¬, μ°¨ 1λ. μ ν ν λ΅μ μκ³ μλ μ§νμκ° λλ¨Έμ§ 2κ° μ€ 1κ°μ λ€μ μΌμκ° μμμ 보μ¬μ€
μ΄ν μ νμ λ°κΏ κ²μΈμ§ λ§κ²μΈμ§. λΉμ°ν λ°κΎΈλ κ² κ°μ΄λ
μ΄ νλ₯ μ λ²μΉ(The Law of Total Probability)
AλΌλ νΉμ νλ₯ λ³μμ λν΄, λͺ¨λ κ°λ₯ν μ΄λ²€νΈμ μ΄ νλ₯ μ 1μ΄λ€.
$$P(A)=∑P(An)=1$$
μ‘°κ±΄λΆ νλ₯ (The Law of Cinditional Probability)
λ€λ₯Έ μ΄λ²€νΈκ° μΌμ΄λ μν©μμμ νλ₯
$$P(A|B) = {P(A∩B) \over P(B)}$$
μ 체 μ¬κ°νμ΄ λͺ¨λ κ°λ₯ν νλ₯ 곡κ°μ΄κ³ ,
Aλ μ’μΈ‘μ, Bλ μ°μΈ‘μ, κ΅μ§ν©μ΄ λΆμ λΆλΆ
μμ μμ P(B) λ₯Ό μλ³μ κ³±νλ©΄, $$P(A|B)P(B) = P(A∩B)$$ μ κ°μ μμ μ»μ μ μλ€.
μ΄λ 곧 $$P(A|B) = ∑P(A∩Bn)$$
μ¦, BλΌλ μ λ³΄κ° μ£Όμ΄μ§ μν©μμ Aμ νλ₯ μ Bμ κ΅μ§ν©λ€μ ν©μΌλ‘ ꡬμ±λμ΄μμμ μ μ μλ€.
λ² μ΄μ§μ μ΄λ‘ (Bayes Theorem)
$$P(A|B)={P(A∩B) \over P(B)} $$
$$P(B|A)={P(B∩A) \over P(A)}$$
μ 리νλ©΄
$$P(A|B) = {P(B|A)P(A) \over P(B)}$$
P(A|B) -> μ¬ν νλ₯ . (BλΌλ μ λ³΄κ° μ λ°μ΄νΈ λ μ΄νμ μ¬(μ΄λ²€νΈ)ν νλ₯ )
P(A) -> μ¬μ νλ₯ . BλΌλ μ λ³΄κ° μ λ°μ΄νΈ λκΈ° μ μ μ¬μ νλ₯
P(B|A) -> data(Likelihood; κ°λ₯λ, μ°λ)
μ¦, λ² μ΄μ§μ μ΄λ‘ μ κ°μ€μ μλ‘μ΄ λ°μ΄ν°κ° λ€μ΄μ€λ©΄ κ·Έ κ°μ€μ΄ κ³μ μ λ°μ΄νΈλ¨
Warm up μμ
μ΄μ½λ μ λ°μμ λ, νΈκ° νλ₯ κ³μ°
- μ΄ μ¬λμ΄ λνν νΈκ°μ΄ μκ³ (P(B)), κ·Έλμ μ΄μ½λ μ μ€¬λ€ (P(A|B))
2) μ΄ μ¬λμ΄ λνν νΈκ°μ μκ³ (P(notB)), μμμ μ΄μ½λ μ μ€¬λ€ (P(A|notB))
$$P(A)=P(A|B)P(B) + P(A|B^c)P(B^c)$$
κ°μΈμ μΌλ‘ μμ μμ μλ κ² μ λ§μ λ§μ λ§ μ€μνλ€κ³ μκ°...!!!
π λ² μ΄μ§μ ν μ€νΈλ₯Ό λ°λ³΅νμ¬ μ¬μ© (repeated testing)
λ€μμ Wikipediaλ‘ λΆν°μ μμμ λλ€.
κ°μ : μ½λ¬Όμ μ€μ μ¬μ© νλ κ²½μ° κ²°κ³Όκ° μμ±μΌ νλ₯ μ 99%
λ² μ΄μ§μμ μ μ©νλ μμλ λ§€μ° λ§μ§λ§, κ·Έμ€ νλλ μ½μ λν μμ±λ°μ ν μ€νΈ μ λλ€.
μΌλ°μ μΌλ‘, μ΄ ν μ€νΈμμ μμ±λ°μμ΄ λμ¨ κ²½μ° μ€μ λ‘ μ½λ¬Όμ΄ μ 체μ ν¬ν¨λμ΄ μμ κ²μ΄λΌκ³ μκ°νμ§λ§.
λ§μ½ 1%μ μμμ± (False positive, μ€μ λ‘ μ½λ¬Όμ΄ μμ§λ§ μμ±λ°μμ΄ λνλ¨)μ΄ μ‘΄μ¬νλ κ²½μ°μλ ν μ€νΈμ μλ―Έλ λ§€μ° ν¬κ² λ°λλλ€.
μ€μ λΆμμ μν΄, μ 체 μΈκ΅¬μμ 0.5%, ($1/200$) λ§μ΄ μ€μ λ‘ μ½λ¬Όμ΄ μ 체μ ν¬ν¨λμ΄ μλ€κ³ κ°μ ν΄λ³΄λλ‘ νκ² μ΅λλ€.
μμ±λ°μ ν μ€νΈμ κ²°κ³Όκ° μμ±μΌλ‘ λμμ κ²½μ° μ€μ λ‘ μ½λ¬Όμ΄ μμ νλ₯ μ μ΄λμ λκ° λ κΉμ?
λ¨μν μκ°νλ©΄, False positiveλ₯Ό μ μΈν 99%λΌκ³ μκ° ν μ μμ΅λλ€λ§ μ°λ¦¬λ μ΄μ μ¬μ νλ₯ κ³Ό μ¬ννλ₯ μ μ¬μ© ν μ μκΈ° λλ¬Έμ λ² μ΄μ§μμ ν΅ν΄ κ²μ¦ν΄λ³΄λλ‘ νκ² μ΅λλ€.
λ€μ κ³μ° κ²°κ³Όμμ, $User$λ μ€μ μ½λ¬Όμ΄ λ°κ²¬ λλ μ¬λ, $+$λ μμ±λ°μμ λλ€.
μ¦, μ€μ§ 33.2% μ λ λ§μ΄ μμ±λ°μμ΄ λμλ€κ³ ν΄λ μ€μ λ‘ μ½λ¬Όμ ν¬ν¨ νλ κ²½μ°μ λλ€.
μ΄λ¬ν μ΄μ λ‘ μΈν΄ μ€μ μν©μμλ μ¬λ¬λ² λ°λ³΅ν΄μ μ€νμ ν©λλ€.
λ§μ½ 2λ²μ λ°λ³΅ ν΄μ λͺ¨λ μμ±μ΄ λμ€λ κ²½μ°, 3λ²μ λ°λ³΅νλ κ²½μ°... μ λ°λΌμ, μμ±λ°μμ΄ μ€μ μ½λ¬Όλ‘ λΆν° λμ¨ κ²°κ³ΌμΌ νλ₯ μ λ§€μ° λμμ§λλ€.
μ΄μ²λΌ λ² μ΄μ§μμ μ½λ¬Όμ λ°μ, μμ£Ό μΈ‘μ , μμ μ¬λΆμ κ°μ΄ λ§μ λΆλΆμμ μ¬μ©λλ©°, μ΄μ λνμ¬ νμ false positive rateμ μ¬μ νλ₯ μ ν΅ν΄ μ νν νλ₯ μ κ³μ° ν μ μμ΄μΌ ν©λλ€.
λͺ¬ν°ν with λ² μ΄μ§μ
κ°μ
μ²μμ 1λ² λ¬Έμ μ νν¨
$$H : Hypothesis : 1λ² λ¬Έ λ€μ μλμ°¨κ° μμ$$ $$E : Evidence : μ§νμκ° μΌμκ° μλ λ¬Έμ 1κ° μ΄μ΄μ€$$
$$λ² μ΄μ§μ
P(A|B)=P(B|A)P(A)P(B)$$
$$μ°λ¦¬μ λͺ©μ : μ§νμκ° λ¬Έμ 보μ¬μ€ μν : P(E) μμ μ ννλ λ¬Έμ μλμ°¨κ° μμ νλ₯ P(H) -> P(H|E)$$
$$P(H|E)=P(E|H)P(H)P(E)=P(E|H)P(H)P(E|H)P(H)+P(E|notH)P(notH)$$
μ°λ¦¬κ° ꡬν΄μΌ νλ κ²
$$P(E|H)$$
$$P(E|H) = 1λ² λ¬Έμ μλμ°¨κ° μλ μν©μμ μ§νμκ° μΌμκ° μλ λ¬Έμ 1κ° μ΄μ΄μ€ νλ₯ = 1$$
$$P(H)$$
$$P(H) = μλμ°¨κ° 1λ²λ¬Έμ μμ νλ₯ : {1 \over 3} $$
$$P(E|notH)$$
$$λ§μ°¬κ°μ§λ‘ P(E|notH) = 1$$
$$P(notH)$$
$$P(notH) = {2 \over 3}$$
κ³μ°
$$P(H|E)={1⋅{1 \over 3} \over (1⋅{1 \over 3} +1⋅{2 \over 3})} ={{1 \over 3} \over 1} = {1 \over 3}$$
μΌμκ° μλ λ€λ₯Έ λ¬Έμ΄λΌλ μΆκ° μ 보(E)κ° μλ μν©μμ μ²μμ μ ννλ 1λ² λ¬Έμ μλμ°¨κ° μμ νλ₯ (H)μ $$ {1 \over 3}$$
μ½λ¬Ό μμ±λ°μ μμ κ³μ°
# λ² μ΄μ§μ κ³μ°μ μν΄μλ 4κ°μ λ³μκ° νμν©λλ€.
p_pos_used = 0.99 # True positive rate (TPR, Sensitivity)
p_used = 0.005 # prior probability
p_pos_not_used = 0.01 # False positive rate (FPR)
p_not_used = 1 - p_used # 1 - p_used
numerator = p_pos_used * p_used
denominator = (p_pos_used * p_used) + (p_pos_not_used * p_not_used)
posterior_probability = numerator / denominator
posterior_probability
0.33221476510067116
p_pos_used = 0.99 # TPR
p_used = 0.332 # prior probability
p_pos_not_used = 0.01 # FPR
p_not_used = 1 - p_used # 1 - p_used
numerator = p_pos_used * p_used
denominator = (p_pos_used * p_used) + (p_pos_not_used * p_not_used)
posterior_probability = numerator / denominator
posterior_probability
0.980081106870229
p_pos_used = 0.99 # TPR
p_used = 0.98008 # prior probability
p_pos_not_used = 0.01 # FPR
p_not_used = 1 - p_used # 1 - p_used
numerator = p_pos_used * p_used
denominator = (p_pos_used * p_used) + (p_pos_not_used * p_not_used)
posterior_probability = numerator / denominator
posterior_probability #99.979%
# p_value = 1 - posterior_probability
0.9997947404084419
μ¬κΈ°μ μ κΉ!
μ΄κ±° μ§κ³ λμ΄κ°κΈ°~~ κΈ°μ΅ν΄λΌμ! μ€μ λ‘ λ² μ΄μ§μ νλ₯ μ΄μ©ν λλ μ΄λ κ² λ€λͺ¨λ‘ κ° νλ₯ ν΄λΉμμ κ·Έλ €μ μκ°νλ κ±° μμ§λ§κΈ°!!
λμ λμ§κΈ° with λ² μ΄μ§μ
μ²μ κ°μ = λμ μ λμ‘μλ μλ©΄μ΄ λμ¬ νλ₯ μ 0λΆν° 1κΉμ§ κ³ λ₯΄κ² λΆν¬ν΄μλ€. (μ¬μ μ 보 μμ)
λμ μ μ¬λ¬λ² λμ§λ©΄μ ν΄λΉ μ 보λ₯Ό λ°μνκ³ ,
μ΄λ₯Ό ν΅ν΄ λμ μ λμ‘μλ μλ©΄μ΄ λμ¬ νλ₯ μ μ μ μΆμ νλ κ³Όμ
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
import scipy.stats as stats
from IPython.core.pylabtools import figsize
figsize(15, 9)
dist = stats.beta
n_trials = [0, 1, 2, 3, 4, 5, 8, 15, 50, 300, 500, 1000]
data = stats.bernoulli.rvs(0.5, size = n_trials[-1]) # binomial with p(h) = 0.5
x = np.linspace(0, 1, 100)
for k, N in enumerate(n_trials):
sx = plt.subplot(len(n_trials) / 2, 2, k+1)
plt.xlabel("P(H)", fontsize = 13) if k in [0, len(n_trials) - 1] else None
plt.setp(sx.get_yticklabels(), visible = False)
heads = data[:N].sum()
y = dist.pdf(x, 1 + heads, 1 + N - heads)
plt.plot(x, y, label = 'Trial %d \n Head %d Times' % (N, heads))
plt.fill_between(x, 0, y, color = '#348abd', alpha = .4)
plt.vlines(0.5, 0, 4, color = 'k', linestyles = '--', lw = 1)
leg = plt.legend()
leg.get_frame().set_alpha(0.4)
plt.autoscale(tight = True)
plt.suptitle('Bayesian Update (Probability of Head)', y = 1.02, fontsize = 14)
plt.tight_layout()
# μ°λ¦¬λ λμ μλ·λ©΄μ΄ 1/2μ΄λΌλ κ²μ μμ§λ§, λͺ¨λ₯΄λ 2μ΄ μ κΈ°λΌκ³ νμ λ μ΄λ κ² κ³μ μλνλ©΄ μκ² λ¨.
μ λ’°κ΅¬κ° with λ² μ΄μ§μ
import numpy as np
from scipy import stats
coinflips = np.random.binomial(1, 0.5, 20)
coinflips
array([1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0])
Frequency κΈ°λ° μ λ’°κ΅¬κ° μΆμ
def confidence_interval(data, confidence = 0.95):
"""
μ£Όμ΄μ§ λ°μ΄ν°μ νλ³Έ νκ· μ λν μ λ’° ꡬκ°μ κ³μ°ν©λλ€.
κΈ°λ³Έ κ°μΌλ‘ t-λΆν¬μ μλ°©ν₯ (two-tailed), 95%μ μ λ’°λλ₯Ό μ¬μ©ν©λλ€.
μ
λ ₯ κ° :
data - μ¬λ¬ κ°λ‘ μ΄λ£¨μ΄μ§ (list νΉμ numpy λ°°μ΄) νλ³Έ κ΄μΈ‘μΉ
confidence - μ 뒰ꡬκ°μ μν μ λ’°λ
λ°ν λλ κ°:
(νκ· , νν, μνꡬκ°)μΌλ‘ μ΄λ£¨μ΄μ§ tuple
"""
data = np.array(data)
mean = np.mean(data)
n = len(data)
s = data.std(ddof = 1)
stderr = s / np.sqrt(n)
print(stderr)
t = stats.t.ppf( (1 + confidence) / 2.0 , n - 1)
margin_of_error = t * stderr
interval = stderr * stats.t.ppf((1 + confidence) / 2.0, n - 1)
return (mean, mean - interval, mean + interval)
confidence_interval(coinflips)
0.1094243309804831
(0.35, 0.12097224312031754, 0.5790277568796824)
Bayesian κΈ°λ° μ λ’°κ΅¬κ° μΆμ (Scipy μ¬μ©)
# https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.bayes_mvs.html#scipy.stats.bayes_mvs
mean_CI, _, _ = stats.bayes_mvs(coinflips, alpha = .95) # mean , variance, std
# mean_cntr, var_cntr, std_cntr
mean_CI
# μ κ²°κ³Όμ μ μ¬ν¨
Mean(statistic=0.35, minmax=(0.12097224312031751, 0.5790277568796824))
μΆκ° : Bayesian Optimization
μΆν λ¨Έμ λ¬λ, λ₯λ¬λμμ νλΌλ―Έν°λ₯Ό μ λ°μ΄νΈνλ μ©λλ‘ λ² μ΄μ§μμ΄ μ¬μ©λλ€. λ°μ΄ν°κ° μ λ°μ΄νΈλλ©΄μ μ μ°¨ λͺ¨λΈμ νΌν νλ κ°λ μ΄λΌκ³ λ§ μμλμ!
'πΏ Data > λΆνΈμΊ ν' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[TIL]11.Vector and Matrix (0) | 2021.12.01 |
---|---|
[TIL]10.μ€νλ¦°νΈ μ±λ¦°μ§ (0) | 2021.12.01 |
[TIL]4.Basic Derivative (0) | 2021.11.27 |
[TIL]3.Data Manipulation(κ°μΈμ μΌλ‘ μ μμμΌ λλ€κ³ λκΌλ λΆλΆ) (0) | 2021.11.27 |
[TIL]2.Feature Engineering (0) | 2021.11.27 |