Markov Chain Monte Carlo và khớp mô hình

Phân tích dữ liệu Bayesian với Python

Michal Oleszak

Machine Learning Engineer

Phân tích dữ liệu Bayes trong sản xuất

  • Xấp xỉ bằng lưới: bất tiện khi có nhiều tham số
  • Lấy mẫu từ hậu nghiệm đã biết: cần tiên nghiệm liên hợp
  • Markov Chain Monte Carlo (MCMC): lấy mẫu từ hậu nghiệm chưa biết!
Phân tích dữ liệu Bayesian với Python

Monte Carlo

  • Xấp xỉ một đại lượng bằng cách sinh số ngẫu nhiên
  • Theo công thức, $\pi r^2 \simeq 78{,}5$

Một hình tròn bán kính 5.

Phân tích dữ liệu Bayesian với Python

Monte Carlo

  • Xấp xỉ một đại lượng bằng cách sinh số ngẫu nhiên
  • Theo công thức, $\pi r^2 \simeq 78{,}5$
  • Vẽ hình vuông 10x10 bao quanh hình tròn.

Hình tròn bán kính 5 với hình vuông bao quanh.

Phân tích dữ liệu Bayesian với Python

Monte Carlo

  • Xấp xỉ một đại lượng bằng cách sinh số ngẫu nhiên
  • Theo công thức, $\pi r^2 \simeq 78{,}5$
  • Vẽ hình vuông 10x10 bao quanh hình tròn.
  • Lấy mẫu 25 điểm ngẫu nhiên trong hình vuông.
  • Có bao nhiêu điểm nằm trong hình tròn? $19/25=76\%$
  • Xấp xỉ diện tích hình tròn: 76% * 100 = 76

Hình tròn bán kính 5 với hình vuông bao quanh và 25 điểm ngẫu nhiên trong hình vuông.

Phân tích dữ liệu Bayesian với Python

Chuỗi Markov

  • Mô hình hóa chuỗi trạng thái, chuyển giữa chúng với các xác suất cho trước.
Phân tích dữ liệu Bayesian với Python

Chuỗi Markov

  • Mô hình hóa chuỗi trạng thái, chuyển giữa chúng với các xác suất cho trước.

Gấu sẽ làm gì tiếp theo:

săn ăn ngủ
săn 0.1 0.8 0.1
ăn 0.05 0.4 0.55
ngủ 0.8 0.15 0.05
  • Sau nhiều khoảng thời gian, xác suất chuyển trạng thái trở nên như nhau, bất kể điểm bắt đầu.
Phân tích dữ liệu Bayesian với Python

Chuỗi Markov

  • Mô hình hóa chuỗi trạng thái, chuyển giữa chúng với các xác suất cho trước.

Gấu sẽ làm gì tiếp theo:

săn ăn ngủ
săn 0.1 0.8 0.1
ăn 0.05 0.4 0.55
ngủ 0.8 0.15 0.05
  • Sau nhiều khoảng thời gian, xác suất chuyển trạng thái trở nên như nhau, bất kể điểm bắt đầu.

Gấu sẽ làm gì trong tương lai xa:

săn ăn ngủ
săn 0.28 0.44 0.28
ăn 0.28 0.44 0.28
ngủ 0.28 0.44 0.28
Phân tích dữ liệu Bayesian với Python

Markov Chain Monte Carlo

Một chấm đỏ trên trục có đánh số.

Phân tích dữ liệu Bayesian với Python

Markov Chain Monte Carlo

Hai chấm trên trục có đánh số, một đỏ và một đen.

Phân tích dữ liệu Bayesian với Python

Markov Chain Monte Carlo

Hai chấm trên trục có đánh số, một đỏ và một xanh lá.

Phân tích dữ liệu Bayesian với Python

Markov Chain Monte Carlo

Ba chấm trên trục có đánh số, một đỏ, một xanh lá và một đen.

Phân tích dữ liệu Bayesian với Python

Markov Chain Monte Carlo

Hai chấm trên trục có đánh số, hai đỏ và một xanh lá.

Phân tích dữ liệu Bayesian với Python

Markov Chain Monte Carlo

Bốn chấm trên trục có đánh số, hai đỏ và hai xanh lá.

Phân tích dữ liệu Bayesian với Python

Markov Chain Monte Carlo

Bảy chấm trên trục có đánh số, hai đỏ và năm xanh lá.

Phân tích dữ liệu Bayesian với Python

Markov Chain Monte Carlo

Nhiều chấm trên trục có đánh số, một số đỏ, đa số xanh lá.

Phân tích dữ liệu Bayesian với Python

Dữ liệu quảng cáo đã tổng hợp

print(ads_aggregated)
           date  clothes_banners_shown  sneakers_banners_shown  num_clicks
0    2019-01-01                     20                      18           2
1    2019-01-02                     24                      19           8
2    2019-01-03                     20                      20           5
..          ...                    ...                     ...         ...
148  2019-05-29                     24                      25           8
149  2019-05-30                     26                      27          11
150  2019-05-31                     26                      24           8

[151 rows x 4 columns]
Phân tích dữ liệu Bayesian với Python

Hồi quy tuyến tính với pyMC3

formula = "num_clicks ~ clothes_banners_shown + sneakers_banners_shown"


with pm.Model() as model: pm.GLM.from_formula(formula, data=ads_aggregated)
# Print model specification print(model)
# Sample posterior draws trace = pm.sample(draws=1000, tune=500)

Đầu ra hàm print của pymc3, liệt kê tiên nghiệm cho các tham số mô hình.

Phân tích dữ liệu Bayesian với Python

Hãy luyện tập MCMC!

Phân tích dữ liệu Bayesian với Python

Preparing Video For Download...