การเริ่มต้นใช้งาน BigQuery ML

1. ภาพรวม

BigQuery ML (BQML) ช่วยให้ผู้ใช้สร้างและเรียกใช้โมเดลแมชชีนเลิร์นนิงใน BigQuery ได้โดยใช้การค้นหา SQL เป้าหมายคือการทำให้แมชชีนเลิร์นนิงมีความเสมอภาคโดยให้ผู้ปฏิบัติงาน SQL สามารถสร้างโมเดลโดยใช้เครื่องมือที่มีอยู่และเพิ่มความเร็วในการพัฒนาโดยไม่จำเป็นต้องมีการเคลื่อนย้ายข้อมูล

สิ่งที่คุณจะสร้าง

ใช้ตัวอย่างชุดข้อมูล Analytics 360 ในการสร้างรูปแบบที่คาดการณ์ว่าผู้เข้าชมจะทำธุรกรรมหรือไม่

สิ่งที่คุณจะได้เรียนรู้

วิธีสร้าง ประเมิน และใช้รูปแบบแมชชีนเลิร์นนิงใน BigQuery

สิ่งที่ต้องมี

2. การตั้งค่าและข้อกำหนด

การตั้งค่าสภาพแวดล้อมตามเวลาที่สะดวก

  1. ลงชื่อเข้าใช้ Cloud Console และสร้างโปรเจ็กต์ใหม่หรือใช้โปรเจ็กต์ที่มีอยู่ซ้ำ หากยังไม่มีบัญชี Gmail หรือ Google Workspace คุณต้องสร้างบัญชี

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

โปรดจดจำรหัสโปรเจ็กต์ ซึ่งเป็นชื่อที่ไม่ซ้ำกันในโปรเจ็กต์ Google Cloud ทั้งหมด (ชื่อด้านบนมีคนใช้แล้ว และจะใช้ไม่ได้ ขออภัย) และจะมีการอ้างอิงใน Codelab ว่า PROJECT_ID ในภายหลัง

  1. ถัดไป คุณจะต้องเปิดใช้การเรียกเก็บเงินใน Cloud Console เพื่อใช้ทรัพยากร Google Cloud

การใช้งาน Codelab นี้น่าจะไม่มีค่าใช้จ่ายใดๆ หากมี ตรวจสอบว่าคุณได้ทำตามวิธีการใน "การล้างข้อมูล" ซึ่งจะแนะนำคุณเกี่ยวกับวิธีปิดทรัพยากรเพื่อไม่ให้มีการเรียกเก็บเงินนอกเหนือจากบทแนะนำนี้ ผู้ใช้ใหม่ของ Google Cloud จะมีสิทธิ์เข้าร่วมโปรแกรมทดลองใช้ฟรี$300 USD

เปิดคอนโซล BigQuery

ใน Google Developer Console ให้คลิกไอคอนเมนูที่ด้านบนซ้ายของหน้าจอ

เลือก-bq_0.png

เลื่อนลงไปด้านล่างสุดแล้วคลิก BigQuery

select-bq.png

ซึ่งจะเปิดคอนโซล BigQuery ในแท็บเบราว์เซอร์ใหม่ ซึ่งมีลักษณะดังนี้

8b0218390329e8cf.png

แต่ที่นี่ไม่มีอะไรเลย! โชคดีที่มีชุดข้อมูลสาธารณะจำนวนมากใน BigQuery ให้คุณได้สำรวจ

3. สร้างชุดข้อมูล

หากต้องการสร้างชุดข้อมูล ให้คลิกลูกศรข้างชื่อโปรเจ็กต์ แล้วเลือกสร้างชุดข้อมูลใหม่

4f51bf57291a59db.png

ต่อไปให้ตั้งชื่อชุดข้อมูลว่า bqml_codelab แล้วคลิกตกลง

63e32478a5652fbc.png

4. สร้างโมเดล

การถดถอยแบบลอจิสติกส์สำหรับ Analytics 360

เรามาทำงานต่อกันเลย ต่อไปนี้คือวิธีที่คุณจะสร้างโมเดลเพื่อคาดการณ์ว่าผู้เข้าชมจะทำธุรกรรมหรือไม่

#standardSQL
CREATE OR REPLACE MODEL `bqml_codelab.sample_model` 
OPTIONS(model_type='logistic_reg') AS
SELECT
  IF(totals.transactions IS NULL, 0, 1) AS label,
  IFNULL(device.operatingSystem, "") AS os,
  device.isMobile AS is_mobile,
  IFNULL(geoNetwork.country, "") AS country,
  IFNULL(totals.pageviews, 0) AS pageviews
FROM
  `bigquery-public-data.google_analytics_sample.ga_sessions_*`
WHERE
  _TABLE_SUFFIX BETWEEN '20160801' AND '20170631'
LIMIT 100000;

ที่นี่ เราใช้ระบบปฏิบัติการของอุปกรณ์ของผู้เข้าชม ไม่ว่าอุปกรณ์จะเป็นอุปกรณ์เคลื่อนที่ ประเทศของผู้เข้าชม และจำนวนการดูหน้าเว็บเป็นเกณฑ์ว่าจะมีการทำธุรกรรมหรือไม่

ในกรณีนี้คือ "codelab" คือชื่อของชุดข้อมูลและ "sample_model" คือชื่อโมเดลของเรา ประเภทโมเดลที่ระบุคือการถดถอยแบบโลจิสติกแบบไบนารี ในกรณีนี้ label คือสิ่งที่เรากำลังพยายามปรับให้รองรับ โปรดทราบว่าหากคุณสนใจเพียง 1 คอลัมน์ วิธีนี้เป็นอีกทางเลือกหนึ่งในการตั้งค่า input_label_cols และเรายังจำกัดข้อมูลการฝึกอบรมไว้เฉพาะที่เก็บรวบรวมตั้งแต่วันที่ 1 สิงหาคม 2016 ถึง 31 มิถุนายน 2017 อีกด้วย เราดำเนินการนี้เพื่อบันทึกข้อมูลของเดือนที่ผ่านมาสำหรับ "การคาดคะเน" นอกจากนี้ เราจํากัดจุดข้อมูลไว้ที่ 100,000 จุดเพื่อประหยัดเวลา คุณสามารถนำบรรทัดสุดท้ายออกได้หากคุณไม่ได้กำลังเร่งรีบ

การเรียกใช้คำสั่ง "Create MODEL" จะสร้างงานการค้นหาที่จะเรียกใช้แบบไม่พร้อมกันเพื่อให้คุณปิดหรือรีเฟรชหน้าต่าง BigQuery UI ได้

[ไม่บังคับ] ข้อมูลรุ่นและ สถิติการฝึกอบรม

หากสนใจ คุณสามารถดูข้อมูลเกี่ยวกับโมเดลได้โดยคลิก sample_model ใต้ชุดข้อมูล bqml_codelab ใน UI ในส่วนรายละเอียด คุณควรพบข้อมูลพื้นฐานของโมเดลและตัวเลือกการฝึกที่ใช้ในการสร้างโมเดล ในส่วนสถิติการฝึกอบรม คุณจะเห็นตารางที่คล้ายกับตารางนี้

b8bd9548a0d89165.png

5. ประเมินโมเดล

ประเมินโมเดลของเรา

#standardSQL
SELECT
  *
FROM
  ml.EVALUATE(MODEL `bqml_codelab.sample_model`, (
SELECT
  IF(totals.transactions IS NULL, 0, 1) AS label,
  IFNULL(device.operatingSystem, "") AS os,
  device.isMobile AS is_mobile,
  IFNULL(geoNetwork.country, "") AS country,
  IFNULL(totals.pageviews, 0) AS pageviews
FROM
  `bigquery-public-data.google_analytics_sample.ga_sessions_*`
WHERE
  _TABLE_SUFFIX BETWEEN '20170701' AND '20170801'));

หากใช้กับโมเดลการถดถอยเชิงเส้น การค้นหาข้างต้นจะแสดงผลคอลัมน์ต่อไปนี้ mean_absolute_error, mean_squared_error, mean_squared_log_error, median_absolute_error, r2_score, explained_variance หากใช้กับโมเดลการถดถอยแบบโลจิสติกส์ การค้นหาด้านบนจะแสดงผลคอลัมน์ต่อไปนี้ precision, recall, accuracy, f1_score, log_loss, roc_auc โปรดอ่านอภิธานศัพท์แมชชีนเลิร์นนิงหรือค้นหาใน Google เพื่อทำความเข้าใจวิธีคำนวณและความหมายของเมตริกแต่ละรายการ

คุณจะทราบว่าส่วน SELECT และ FROM ของการค้นหานั้นเหมือนกับที่ใช้ในระหว่างการฝึก ส่วน WHERE แสดงการเปลี่ยนแปลงของกรอบเวลา และส่วน FROM แสดงว่าเราโทรหา ml.EVALUATE คุณจะเห็นตารางที่คล้ายกับตารางนี้

1c7779f6028730cc.png

6. ใช้โมเดล

คาดการณ์การซื้อต่อประเทศ

ในตัวอย่างนี้เราพยายามคาดการณ์จำนวนธุรกรรมของผู้เข้าชมของแต่ละประเทศ จัดเรียงผลลัพธ์ และเลือกประเทศ 10 อันดับแรกตามการซื้อ

#standardSQL
SELECT
  country,
  SUM(predicted_label) as total_predicted_purchases
FROM
  ml.PREDICT(MODEL `bqml_codelab.sample_model`, (
SELECT
  IFNULL(device.operatingSystem, "") AS os,
  device.isMobile AS is_mobile,
  IFNULL(totals.pageviews, 0) AS pageviews,
  IFNULL(geoNetwork.country, "") AS country
FROM
  `bigquery-public-data.google_analytics_sample.ga_sessions_*`
WHERE
  _TABLE_SUFFIX BETWEEN '20170701' AND '20170801'))
GROUP BY country
ORDER BY total_predicted_purchases DESC
LIMIT 10;

โปรดทราบว่าคำค้นหานี้คล้ายกับคำค้นหาการประเมินที่เราแสดงในส่วนก่อนหน้าอย่างมาก เราใช้ ml.PREDICT แทน ml.EVALUATE ที่นี่และรวมส่วน BQML ของการค้นหาด้วยคำสั่ง SQL มาตรฐาน ตามหลักแล้ว เราสนใจประเทศนั้นๆ และจำนวนรวมของการซื้อสำหรับแต่ละประเทศ เราจึงSELECT, GROUP BY และORDER BY มีการใช้ LIMIT ที่นี่เพื่อให้มั่นใจว่าเราได้รับผลลัพธ์ 10 อันดับแรกเท่านั้น คุณจะเห็นตารางที่คล้ายกับตารางนี้

e639f7a409741dcb.png

คาดการณ์การซื้อต่อผู้ใช้

มาดูอีกตัวอย่างหนึ่งกัน ครั้งนี้เราพยายามคาดการณ์จำนวนธุรกรรมของผู้เข้าชมแต่ละราย จัดเรียงผลลัพธ์และเลือกผู้เข้าชม 10 อันดับแรกตามธุรกรรม

#standardSQL
SELECT
  fullVisitorId,
  SUM(predicted_label) as total_predicted_purchases
FROM
  ml.PREDICT(MODEL `bqml_codelab.sample_model`, (
SELECT
  IFNULL(device.operatingSystem, "") AS os,
  device.isMobile AS is_mobile,
  IFNULL(totals.pageviews, 0) AS pageviews,
  IFNULL(geoNetwork.country, "") AS country,
  fullVisitorId
FROM
  `bigquery-public-data.google_analytics_sample.ga_sessions_*`
WHERE
  _TABLE_SUFFIX BETWEEN '20170701' AND '20170801'))
GROUP BY fullVisitorId
ORDER BY total_predicted_purchases DESC
LIMIT 10;

คุณจะเห็นตารางที่คล้ายกับตารางนี้

2be1d8fa96e10178.png

7. ยินดีด้วย

ใช้ Codelab นี้เสร็จแล้ว หากกำลังมองหาชาเลนจ์ ลองสร้างโมเดลการถดถอยเชิงเส้นด้วย BQML

หัวข้อที่ครอบคลุม

  • สร้างโมเดลการถดถอยแบบโลจิสติกแบบไบนารี
  • ประเมินโมเดล
  • ใช้โมเดลเพื่อทำการคาดการณ์

ขั้นตอนถัดไป