Làm quen với công nghệ học máy BigQuery

1. Tổng quan

Công nghệ học máy của BigQuery (BQML) giúp người dùng tạo và thực thi các mô hình học máy trong BigQuery bằng truy vấn SQL. Mục tiêu là để dân chủ hoá công nghệ học máy bằng cách cho phép các chuyên viên SQL xây dựng mô hình bằng các công cụ hiện có, đồng thời tăng tốc độ phát triển bằng cách loại bỏ nhu cầu di chuyển dữ liệu.

Sản phẩm bạn sẽ tạo ra

Bạn sẽ sử dụng tập dữ liệu Analytics 360 mẫu để tạo mô hình dự đoán liệu khách truy cập có thực hiện giao dịch hay không.

Kiến thức bạn sẽ học được

Cách tạo, đánh giá và sử dụng các mô hình học máy trong BigQuery

Bạn cần có

  • Một trình duyệt, chẳng hạn như Chrome hoặc Firefox
  • Kiến thức cơ bản về SQL hoặc BigQuery
  • Tài liệu về BQML

2. Thiết lập và yêu cầu

Thiết lập môi trường theo tiến độ riêng

  1. Đăng nhập vào Cloud Console rồi tạo dự án mới hoặc sử dụng lại dự án hiện có. Nếu chưa có tài khoản Gmail hoặc Google Workspace, bạn phải tạo một tài khoản.

96a9c957bc475304.pngs

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

Xin lưu ý rằng mã dự án là một tên riêng biệt trong tất cả dự án Google Cloud (tên ở trên đã được sử dụng nên sẽ không phù hợp với bạn!). Lớp này sẽ được đề cập sau trong lớp học lập trình này là PROJECT_ID.

  1. Tiếp theo, bạn sẽ cần bật tính năng thanh toán trong Cloud Console để sử dụng tài nguyên của Google Cloud.

Việc chạy qua lớp học lập trình này sẽ không tốn nhiều chi phí. Hãy nhớ làm theo mọi hướng dẫn trong phần "Dọn dẹp" sẽ tư vấn cho bạn cách tắt tài nguyên để bạn không phải chịu thanh toán ngoài hướng dẫn này. Người dùng mới của Google Cloud đủ điều kiện tham gia chương trình Dùng thử miễn phí 300 USD.

Mở Bảng điều khiển BigQuery

Trong Google Developer Console, nhấp vào biểu tượng Trình đơn ở trên cùng bên trái của màn hình.

chọn-bq_0.png

Di chuyển xuống trình đơn dưới cùng, rồi nhấp vào BigQuery:

select-bq.png

Thao tác này sẽ mở bảng điều khiển BigQuery trong thẻ trình duyệt mới có dạng như sau:

8b0218390329e8cf.png.

Nhưng không có gì ở đây cả! Thật may là BigQuery có rất nhiều tập dữ liệu công khai để bạn khám phá.

3. Tạo tập dữ liệu

Để tạo tập dữ liệu, hãy nhấp vào mũi tên bên cạnh tên dự án rồi chọn tạo tập dữ liệu mới.

4f51bf57291a59db.png.

Tiếp theo, hãy đặt tên cho tập dữ liệu của bạn là bqml_codelab rồi nhấp vào OK.

63e32478a5652fbc.png.

4. Tạo Mô hình

Hồi quy logistic cho Analytics 360

Giờ chúng ta hãy cùng chuyển sang nhiệm vụ của chúng ta. Dưới đây là cách bạn sẽ tạo mô hình để dự đoán liệu khách truy cập có thực hiện giao dịch hay không.

#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;

Ở đây, chúng tôi sử dụng hệ điều hành của thiết bị của khách truy cập, cho dù thiết bị nói trên có phải là thiết bị di động hay không, quốc gia của khách truy cập và số lượt xem trang là tiêu chí để xác định xem giao dịch đã được thực hiện hay chưa.

Trong trường hợp này, "lớp học lập trình" là tên của tập dữ liệu và "sample_model" là tên mô hình của chúng tôi. Loại mô hình được chỉ định là hồi quy logistic nhị phân. Trong trường hợp này, label là giá trị mà chúng ta đang cố gắng phù hợp. Xin lưu ý rằng nếu bạn chỉ quan tâm đến 1 cột, đây là cách thay thế để đặt input_label_cols. Chúng tôi cũng giới hạn dữ liệu đào tạo của mình ở những dữ liệu được thu thập từ ngày 1 tháng 8 năm 2016 đến ngày 31 tháng 6 năm 2017. Chúng tôi đang làm việc này để lưu dữ liệu của tháng gần nhất cho mục đích "dự đoán". Ngoài ra, chúng tôi giới hạn ở 100.000 điểm dữ liệu để tiết kiệm thời gian. Bạn có thể xoá dòng cuối cùng nếu không muốn thực hiện.

Việc chạy lệnh CREATE MODEL sẽ tạo một Công việc truy vấn sẽ chạy không đồng bộ để bạn có thể đóng hoặc làm mới cửa sổ giao diện người dùng BigQuery, chẳng hạn như.

[Không bắt buộc] Thông tin kiểu máy và số liệu thống kê về việc huấn luyện

Nếu quan tâm, bạn có thể xem thông tin về mô hình này bằng cách nhấp vào sample_model trong tập dữ liệu bqml_codelab trong giao diện người dùng. Trong phần Chi tiết, bạn sẽ tìm thấy một số thông tin cơ bản về mô hình và các lựa chọn huấn luyện dùng để tạo mô hình. Trong Số liệu thống kê về huấn luyện, bạn sẽ thấy một bảng tương tự như sau:

b8bd9548a0d89165.png

5. Đánh giá mô hình

Đánh giá mô hình của chúng tôi

#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'));

Nếu sử dụng cùng với mô hình hồi quy tuyến tính, truy vấn ở trên sẽ trả về các cột sau: mean_absolute_error, mean_squared_error, mean_squared_log_error, median_absolute_error, r2_score, explained_variance. Nếu được sử dụng với mô hình hồi quy logistic, truy vấn ở trên trả về các cột sau: precision, recall, accuracy, f1_score, log_loss, roc_auc. Vui lòng tham khảo bảng thuật ngữ của công nghệ học máy hoặc tìm kiếm trên Google để hiểu cách tính và ý nghĩa của từng chỉ số.

Cụ thể, bạn sẽ nhận thấy các phần SELECTFROM của truy vấn giống hệt với các phần được dùng trong quá trình huấn luyện. Phần WHERE phản ánh sự thay đổi trong khung thời gian và phần FROM cho thấy chúng ta đang gọi ml.EVALUATE. Bạn sẽ thấy một bảng tương tự như sau:

1c7779f6028730cc.pngS

6. Sử dụng Mô hình

Dự đoán số giao dịch mua ở mỗi quốc gia

Ở đây, chúng tôi cố gắng dự đoán số lượng giao dịch mà khách truy cập ở mỗi quốc gia thực hiện, sắp xếp kết quả và chọn 10 quốc gia hàng đầu theo số lượt mua hàng.

#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;

Lưu ý rằng truy vấn này rất giống với truy vấn đánh giá mà chúng ta đã minh hoạ trong phần trước. Thay vì ml.EVALUATE, chúng ta sử dụng ml.PREDICT tại đây và gói phần BQML của truy vấn bằng các lệnh SQL chuẩn. Cụ thể, chúng tôi quan tâm đến quốc gia và tổng số giao dịch mua ở mỗi quốc gia. Đó là những gì chúng ta SELECT, GROUP BYORDER BY. LIMIT được dùng ở đây để đảm bảo chúng tôi chỉ nhận được 10 kết quả hàng đầu. Bạn sẽ thấy một bảng tương tự như sau:

e639f7a409741dcb.png

Dự đoán số giao dịch mua của mỗi người dùng

Sau đây là một ví dụ khác. Lần này, chúng tôi cố gắng dự đoán số lượt giao dịch mà mỗi khách truy cập thực hiện, sắp xếp kết quả và chọn 10 khách truy cập hàng đầu theo giao dịch.

#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;

Bạn sẽ thấy một bảng tương tự như sau:

2be1d8fa96e10178.pngS

7. Xin chúc mừng!

Bạn đã hoàn tất lớp học lập trình này. Bạn đang tìm một thử thách? Thử tạo mô hình hồi quy tuyến tính bằng BQML.

Nội dung đã đề cập

  • Tạo mô hình hồi quy logistic nhị phân
  • Đánh giá mô hình
  • Sử dụng mô hình để đưa ra dự đoán

Bước tiếp theo

  • Để biết thêm thông tin về BQML, vui lòng tham khảo tài liệu này.