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ó
2. Thiết lập và yêu cầu
Thiết lập môi trường theo tiến độ riêng
- Đă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.
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
.
- 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.
Di chuyển xuống trình đơn dưới cùng, rồi nhấp vào BigQuery:
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:
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.
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.
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:
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 SELECT
và FROM
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:
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 BY
và ORDER 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:
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:
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.