# Bayesian Optimization pseudocode

{% code fullWidth="true" %}

```
// 贝叶斯优化算法伪代码
算法：贝叶斯优化(Bayesian Optimization)
输入：目标函数 f(x)，初始样本集 D = {(x₁, f(x₁)), ..., (xₙ, f(xₙ))}，
      迭代次数 T，采集函数 α(x; D)，概率模型参数先验 p(w)
输出：最优解 x*

1: for t = 1 to T do
2:     根据贝叶斯公式计算参数后验:
         p(w|D) ∝ p(D|w)p(w)  // 其中p(D|w)是似然函数
3:     使用后验参数 p(w|D) 训练概率模型 M（如高斯过程）
4:     求解下一个采样点 xₜ₊₁ = argmax_x α(x; D, M)
5:     计算目标函数值 yₜ₊₁ = f(xₜ₊₁)
6:     更新样本集 D = D ∪ {(xₜ₊₁, yₜ₊₁)}
7: end for
8: 返回历史最优解 x* = argmin_{x∈D} f(x)
```

{% endcode %}

{% code fullWidth="true" %}

```
// 采集函数的数学表达
1. 期望改进(Expected Improvement, EI):
   α_EI(x; D) = E[max(f(x) - f(x⁺), 0)]
   其中 f(x⁺) = min{f(x₁), f(x₂), ..., f(xₙ)}
   
2. 置信上限(Upper Confidence Bound, UCB):
   α_UCB(x; D) = μ(x) + κ·σ(x)
   其中 κ 控制探索与利用的平衡
   
3. 概率改进(Probability of Improvement, PI):
   α_PI(x; D) = Φ((f(x⁺) - μ(x))/σ(x))
   其中 Φ 是标准正态分布的累积分布函数
```

{% endcode %}

> 贝叶斯定理 Bayes' Theorem

$$
p(w|D) = \frac{p(D|w) . p(w)}{ p(D)}
$$

{% hint style="info" %}

1. 先验概率（根据先前的经验，对事物发生的概率）
2. 接收新的信息
3. 根据新的信息，更新对事物的判断，得出后验概率

新假设 = 旧假设 + 新证据\
\
<https://www.youtube.com/watch?v=Dwv60z_XeaE><br>
{% endhint %}

{% code fullWidth="true" %}

```markup
// 贝叶斯推断步骤

以上公式，用于计算后验概率 p(w|D) 其中：
p(w|D) 是在观测到数据 D 时，假设 w 成立的后验概率；在事件D发生的条件下，事件w发生的概率（后验概率）-后验知识

- p(D|w) 是在假设 w 成立时，观测到数据 D 的似然度；在事件w发生的条件下，事件D发生的概率（似然概率）-观察到的证据
- p(w) 是假设 w 成立的先验概率；事件w发生的先验概率 - 先验知识
- p(D) 是数据 D 的边缘概率，也叫证据，用于归一化常数，确保后验概率是合理的概率分布 -事件D发生的总概率
       


                       p(D|w)似然函数 * p(w) 先验概率
    p(w|D) 后验概率 =  -----------------------------
                             p(D)全概率公式
                             
             
    p(D) = p(D|w)*p(w) + p(D|w`)*p(w`)
      w` = ! w     
      
      
举例：                          
假设我们有一个疾病测试，已知该疾病的患病率为1%，测试准确率为99%（即99%的人能被正确诊断）。
现在，某人测试结果为阳性，那么他真正患有该疾病的概率是多少呢？

P(疾病) = 0.01 (先验概率)
P(阳性|疾病) = 0.99 (似然函数)
P(阳性|无疾病) = 0.01 (假阳性率)
P(无疾病) = 0.99
P(阳性) = P(阳性|疾病) * P(疾病) + P(阳性|无疾病) * P(无疾病) = 0.99 * 0.01 + 0.01 * 0.99 = 0.0198
根据贝叶斯公式，该人真正患有该疾病的概率为:
P(疾病|阳性) = [P(阳性|疾病) * P(疾病)] / P(阳性) = (0.99 * 0.01) / 0.0198 = 0.5

https://www.youtube.com/watch?v=Pu675cHJ7bg
```

{% endcode %}

{% code fullWidth="true" %}

```
// 高斯过程回归核心公式
给定训练数据 D = {(x₁, y₁), ..., (xₙ, yₙ)}
预测点 x* 的分布为:
μ(x*) = K(x*, X)[K(X, X) + σ²I]⁻¹y
σ²(x*) = K(x*, x*) - K(x*, X)[K(X, X) + σ²I]⁻¹K(X, x*)
其中 K 是核函数，X 是训练输入，y 是训练输出
```

{% endcode %}
