อะโวคาโดราคาเท่าไหร่?

การวิเคราะห์ข้อมูลแบบเบย์เซียนด้วย Python

Michal Oleszak

Machine Learning Engineer

Avocado, Inc.

ผลอะโวคาโด

การวิเคราะห์ข้อมูลแบบเบย์เซียนด้วย Python

กรณีศึกษา: การประมาณค่าความยืดหยุ่นของราคา

เป้าหมาย: ประมาณค่าความยืดหยุ่นของราคาอะโวคาโดและหาราคาที่เหมาะสมที่สุด

(ความยืดหยุ่นของราคา = ผลของการเปลี่ยนแปลงราคาต่อปริมาณการขาย)

  1. สร้างโมเดล Bayesian regression
  2. ตรวจสอบโมเดลเพื่อยืนยันความถูกต้อง
  3. พยากรณ์ปริมาณการขายในราคาต่างๆ
  4. เสนอราคาที่ให้กำไรสูงสุดพร้อมระบุความไม่แน่นอน
การวิเคราะห์ข้อมูลแบบเบย์เซียนด้วย Python

ข้อมูลอะโวคาโด

print(avocado)
           date  price      volume  type_organic
0    2015-01-04   0.95  313.242777             0
1    2015-01-11   1.01  290.635427             0
2    2015-01-18   1.03  290.434588             0
3    2015-01-25   1.04  284.703108             0
..          ...    ...         ...           ...
334  2018-03-04   1.52   16.344308             1
335  2018-03-11   1.52   16.642349             1
336  2018-03-18   1.54   16.758042             1
337  2018-03-25   1.55   15.599672             1
1 Data source: https://www.kaggle.com/neuromusic/avocado-prices
การวิเคราะห์ข้อมูลแบบเบย์เซียนด้วย Python

Priors ใน pymc3

formula = "num_bikes ~ temp + work_day + wind_speed"

with pm.Model() as model:

    pm.GLM.from_formula(formula, data=bikes)
    trace = pm.sample(draws=1000, tune=500)
การวิเคราะห์ข้อมูลแบบเบย์เซียนด้วย Python

Priors ใน pymc3

formula = "num_bikes ~ temp + work_day + wind_speed"

with pm.Model() as model:
    priors = {"wind_speed": pm.Normal.dist(mu=-5)}
    pm.GLM.from_formula(formula, data=bikes, priors=priors)
    trace = pm.sample(draws=1000, tune=500)
การวิเคราะห์ข้อมูลแบบเบย์เซียนด้วย Python

การดึงค่า draws จาก trace

temp_draws = trace.get_values("temp")

print(temp_draws)
array([6.8705346, 6.7421152, 6.7393061, ..., 5.966574 , 6.1274128, 6.7149277])
การวิเคราะห์ข้อมูลแบบเบย์เซียนด้วย Python

สิ่งที่ต้องใช้

การ fit โมเดล:

  • pm.Model()
  • pm.GLM.from_formula()
  • pm.sample()
  • pm.Normal()

การแสดงผล:

  • pm.forestplot()
  • pm.traceplot()

 

การพยากรณ์:

  • pm.fast_sample_posterior_predictive()

 

การอนุมาน:

  • az.hdi()
การวิเคราะห์ข้อมูลแบบเบย์เซียนด้วย Python

มาฝึกกันเถอะ!

การวิเคราะห์ข้อมูลแบบเบย์เซียนด้วย Python

Preparing Video For Download...