Giới thiệu về BigQuery ML
Trong thời đại công nghệ hiện nay, việc xây dựng và triển khai các mô hình Machine Learning một cách hiệu quả là rất quan trọng. Việc sử dụng dịch vụ Cloud, đặc biệt là BigQuery ML trên Google Cloud, sẽ giúp bạn tiết kiệm rất nhiều thời gian và công sức, đồng thời tận dụng những công cụ mạnh mẽ cho việc lưu trữ và xử lý dữ liệu.
BigQuery ML cho phép bạn triển khai các mô hình Machine Learning thông qua cú pháp SQL quen thuộc, giúp cho việc phân tích, chạy mô hình, và đưa ra báo cáo trở nên nhanh chóng và chính xác hơn. Trong bài viết này, chúng ta sẽ cùng thực hành với BigQuery ML theo khóa học của Google Cloud. Bạn có thể tham gia thực hành tại đây.
Làm quen với BigQuery ML
Để bắt đầu, bạn cần truy cập console của Google Cloud và chọn BigQuery. Tiếp theo, hãy tạo một dataset mới bằng cách chọn "Create dataset" và nhập tên cho dataset, chẳng hạn như bqml_lab
. Sau khi tạo dataset thành công, hãy thử tạo một query đơn giản để tiến hành dự đoán.
sql
#standardSQL
CREATE OR REPLACE MODEL `bqml_lab.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;
Đoạn code trên tạo một mô hình hồi quy logistic để dự đoán khả năng thực hiện giao dịch của người dùng. Sau khi chạy code, chúng ta có thể đánh giá chất lượng của mô hình bằng câu truy vấn sau:
sql
#standardSQL
SELECT
*
FROM
ml.EVALUATE(MODEL `bqml_lab.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'));
Kết quả thu được sẽ cho bạn biết độ chính xác của mô hình. Để tìm hiểu thêm về khả năng dự đoán, bạn có thể sử dụng query dưới đây để xác định 10 quốc gia có khả năng giao dịch cao nhất:
sql
#standardSQL
SELECT
country,
SUM(predicted_label) as total_predicted_purchases
FROM
ml.PREDICT(MODEL `bqml_lab.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;
Thực Hành: Dự Đoán Khách Hàng Mua Sắm
Câu hỏi 1: Tính tỷ lệ chuyển đổi của khách hàng
sql
#standardSQL
WITH visitors AS(
SELECT
COUNT(DISTINCT fullVisitorId) AS total_visitors
FROM `data-to-insights.ecommerce.web_analytics`
),
purchasers AS(
SELECT
COUNT(DISTINCT fullVisitorId) AS total_purchasers
FROM `data-to-insights.ecommerce.web_analytics`
WHERE totals.transactions IS NOT NULL
)
SELECT
total_visitors,
total_purchasers,
total_purchasers / total_visitors AS conversion_rate
FROM visitors, purchasers;
Trong đó, chúng ta nhận thấy tỷ lệ chuyển đổi của khách hàng là 2.69%. Tiếp theo, chúng ta sẽ tìm ra 5 sản phẩm bán chạy nhất:
sql
SELECT
p.v2ProductName,
p.v2ProductCategory,
SUM(p.productQuantity) AS units_sold,
ROUND(SUM(p.localProductRevenue / 1000000), 2) AS revenue
FROM `data-to-insights.ecommerce.web_analytics`,
UNNEST(hits) AS h,
UNNEST(h.product) AS p
GROUP BY 1, 2
ORDER BY revenue DESC
LIMIT 5;
Câu hỏi 2: Dự đoán khả năng mua của người dùng
Với một mô hình dự đoán, ta sẽ cần đánh giá các feature như totals.bounces
và totals.timeOnSite
. Chúng ta sẽ tạo mô hình phân loại sau:
sql
CREATE OR REPLACE MODEL `ecommerce.classification_model`
OPTIONS(model_type='logistic_reg', input_label_cols = ['will_buy_on_return_visit']) AS
SELECT
* EXCEPT(fullVisitorId)
FROM
(SELECT
fullVisitorId,
IFNULL(totals.bounces, 0) AS bounces,
IFNULL(totals.timeOnSite, 0) AS time_on_site
FROM
`data-to-insights.ecommerce.web_analytics`
WHERE
totals.newVisits = 1)
JOIN
(SELECT
fullvisitorid,
IF(COUNTIF(totals.transactions > 0 AND totals.newVisits IS NULL) > 0, 1, 0) AS will_buy_on_return_visit
FROM
`data-to-insights.ecommerce.web_analytics`
GROUP BY fullvisitorid)
USING (fullVisitorId);
Sau khi bắt đầu mô hình, chúng ta có thể đánh giá hiệu suất bằng cách sử dụng câu truy vấn đánh giá mô hình. Thông qua các query SQL chi tiết về việc dự đoán và phân tích dữ liệu, bài viết này đã giới thiệu đến bạn cách tiếp cận một cách hệ thống và logic trong việc phát triển một mô hình Machine Learning.
Kết luận
Bài viết này đã cung cấp cho bạn cái nhìn tổng quan về cách sử dụng BigQuery ML trên Google Cloud để phát triển và triển khai mô hình Machine Learning. Nền tảng này không chỉ cho phép bạn chạy các mô hình phức tạp mà còn giúp bạn tiếp cận với đám mây một cách dễ dàng và tiện lợi hơn. Trong tương lai, chúng ta sẽ còn khám phá những use case phức tạp hơn với BigQuery.
source: viblo