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

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

เกี่ยวกับ Codelab นี้

subjectอัปเดตล่าสุดเมื่อ พ.ย. 29, 2021
account_circleเขียนโดย Torry Yang

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

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

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

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