Phân tích hiệu suất của trang web bằng Places Insights và BigQuery ML

hình ảnh

Tại sao một trang web phát triển mạnh mẽ trong khi một trang web khác hoạt động kém hiệu quả mặc dù có nhân viên, kho hàng và hoạt động nhất quán? Những doanh nghiệp có nhiều địa điểm thường gặp khó khăn trong việc giải thích sự khác biệt về hiệu suất này trong danh mục đầu tư của họ. Câu trả lời thường nằm ẩn trong môi trường bên ngoài. Bằng cách tận dụng dữ liệu về địa điểm yêu thích (POI), chúng ta có thể vượt ra ngoài những lời giải thích mang tính giai thoại và định lượng chính xác mức độ cạnh tranh tại địa phương cũng như đặc điểm của khu vực xung quanh để xác định sự thành công của một trang web.

Hướng dẫn này minh hoạ cách định lượng tác động của môi trường xung quanh đến sự thành công của trang web bằng cách sử dụng Thông tin chi tiết về địa điểmBigQuery ML. Bạn sẽ kết hợp dữ liệu hiệu suất trang web độc quyền với các tín hiệu không gian địa lý bên ngoài để chẩn đoán các yếu tố thúc đẩy hiệu suất.

Chúng ta sẽ sử dụng một tập dữ liệu gồm các địa điểm ở London để xây dựng mô hình hồi quy tuyến tính. Quy trình này sử dụng Hệ thống lập chỉ mục không gian H3. Hệ thống này chia thành phố thành các ô lục giác đồng nhất. Bằng cách tổng hợp dữ liệu môi trường vào các ô này, bạn có thể huấn luyện một mô hình để dự đoán hiệu suất tiềm năng của bất kỳ khu vực xung quanh nào trong thành phố, chứ không chỉ các địa điểm hiện có của bạn.

Bạn sẽ tìm hiểu cách:

  1. Tính năng kỹ thuật: Tổng hợp số lượng Địa điểm yêu thích (POI) như phòng tập thể dục, trường học và trạm trung chuyển trong bán kính 500 mét tính từ các địa điểm của bạn.
  2. Huấn luyện mô hình: Sử dụng BigQuery ML để xây dựng một mô hình hồi quy tương quan các đặc điểm môi trường này với các chỉ số hiệu suất nội bộ của bạn.
  3. Đánh giá thành phố: Áp dụng mô hình đã huấn luyện cho toàn bộ lưới H3 của London để xác định các điểm nóng có tiềm năng cao cho việc mở rộng trong tương lai.

Nếu bạn mới sử dụng BigQuery ML, hãy xem phần Giới thiệu về BigQuery ML để tìm hiểu về các khái niệm cốt lõi và các loại mô hình được hỗ trợ.

hình ảnh

Để khám phá quy trình này trong một môi trường tương tác, hãy chạy sổ tay sau. Ví dụ này minh hoạ cách xây dựng một mô hình dự đoán bằng BigQuery ML và trực quan hoá các cơ hội trên toàn thành phố bằng cách sử dụng tính năng lập chỉ mục không gian H3.

Điều kiện tiên quyết

Trước khi bắt đầu, hãy đảm bảo bạn có những thông tin sau:

  • Dự án trên Google Cloud:

    • Một dự án trên Google Cloud đã bật tính năng thanh toán.
  • Quyền truy cập vào dữ liệu:

  • Google Maps Platform:

  • Môi trường và thư viện Python:

    • Một môi trường Python như Colab Enterprise trong Bảng điều khiển Google Cloud.
    • Các thư viện sau đây đã được cài đặt:
      Thư viện Mô tả
      pandas-gbq Tương tác với BigQuery.
      geopandas Xử lý các thao tác dữ liệu không gian địa lý.
      folium Tạo bản đồ tương tác.
      shapely Thao tác hình học.
  • Quyền IAM:

    • Đảm bảo người dùng hoặc tài khoản dịch vụ của bạn có các vai trò IAM sau đây:
      Vai trò ID
      Người chỉnh sửa dữ liệu BigQuery roles/bigquery.dataEditor
      Người dùng BigQuery roles/bigquery.user
  • Nhận biết chi phí:

    • Hướng dẫn này sử dụng các thành phần có tính phí của Google Cloud. Hãy lưu ý đến các khoản phí có thể phát sinh liên quan đến:
      • BigQuery ML: Tính phí cho các vị trí điện toán đã sử dụng. Xem giá BigQuery ML.
      • Thông tin chi tiết về địa điểm: Tính phí dựa trên mức sử dụng truy vấn.

Thiết kế tính năng bằng Thông tin chi tiết về địa điểm

Để tách biệt các yếu tố bên ngoài ảnh hưởng đến hiệu suất của trang web, bạn phải chuyển đổi dữ liệu thô về địa điểm yêu thích thành các đặc điểm có thể định lượng. Bạn sẽ tính mật độ của các tiện nghi hoặc loại địa điểm cụ thể, chẳng hạn như phòng tập thể dục, trường học và trạm trung chuyển trong bán kính 500 mét của mỗi địa điểm. Tiện nghi mà bạn chọn sẽ phụ thuộc vào những gì bạn cho là phù hợp nhất với doanh nghiệp của mình.

hình ảnh

Chúng ta sẽ sử dụng Python và thư viện pandas-gbq cho bước này. Phương pháp này cho phép bạn thực thi truy vấn SELECT WITH AGGREGATION_THRESHOLD (bắt buộc để truy cập vào tập dữ liệu Thông tin chi tiết về địa điểm) và lưu kết quả vào một bảng mới trong dự án của bạn. Hãy xem phần Truy vấn trực tiếp tập dữ liệu để biết thêm thông tin về cách làm việc với dữ liệu Thông tin chi tiết về địa điểm.

Chạy truy vấn Kỹ thuật trích xuất tính chất

Chạy tập lệnh Python sau trong môi trường của bạn (ví dụ: Colab Enterprise). Tập lệnh này kết nối dữ liệu trang web nội bộ của bạn với tập dữ liệu Thông tin chi tiết về địa điểm.

from google.cloud import bigquery
import pandas_gbq

# Configuration
project_id = 'your_project_id'
dataset_id = 'your_dataset_id'
features_table_id = f'{dataset_id}.site_features'

client = bigquery.Client(project=project_id)

# Define the Feature Engineering Query
# We count specific amenities within 500m of each site in London.
sql = f"""
SELECT WITH AGGREGATION_THRESHOLD
    internal.store_id,
    internal.store_performance,

    -- Feature Engineering: count nearby POIs by type
    COUNTIF('gym' IN UNNEST(places.types)) AS gym_count,
    COUNTIF('restaurant' IN UNNEST(places.types)) AS restaurant_count,
    COUNTIF('school' IN UNNEST(places.types)) AS school_count,
    COUNTIF('transit_station' IN UNNEST(places.types)) AS transit_count,
    COUNTIF('clothing_store' IN UNNEST(places.types)) AS clothing_store_count

FROM
    `{dataset_id}.site_performance` AS internal
JOIN
    `places_insights___gb.places` AS places
    ON ST_DWITHIN(internal.location, places.point, 500)
WHERE
    places.business_status = 'OPERATIONAL'
GROUP BY
    internal.store_id, internal.store_performance
"""

print("1. Running Feature Engineering Query...")

# Execute the query and download results to a Pandas DataFrame
df_features = client.query(sql).to_dataframe()

print(f"2. Saving features to: {features_table_id}...")

# Upload the engineered features to a permanent BigQuery table
pandas_gbq.to_gbq(
    dataframe=df_features,
    destination_table=features_table_id,
    project_id=project_id,
    if_exists='replace'
)

print("   Success! Training data ready.")

Tìm hiểu về câu hỏi

  1. ST_DWITHIN: Hàm không gian địa lý này tạo vùng đệm 500 mét xung quanh mỗi vị trí của trang web và xác định tất cả các điểm Places Insights nằm trong bán kính đó.
  2. COUNTIF: Hàm này tính toán mật độ của các loại địa điểm cụ thể (ví dụ: "phòng tập thể dục", "trường học") cho từng địa điểm. Những số liệu này trở thành các đặc điểm đầu vào (X) cho mô hình học máy.
  3. pandas_gbq.to_gbq: Hàm này duy trì kết quả truy vấn vào một bảng mới (site_features). Bảng vĩnh viễn này đóng vai trò là tập dữ liệu huấn luyện sạch cho mô hình BigQuery ML.

Đối với các ứng dụng thực tế nâng cao hơn, hãy cân nhắc việc tính toán các đối tượng ở nhiều khoảng cách (ví dụ: 250 m, 500 m, 1 km) và khám phá các thuộc tính khác của Thông tin chi tiết về địa điểm như rating, price_level hoặc regular_opening_hours. Hãy xem các loại địa điểm được hỗ trợtài liệu tham khảo về lược đồ cốt lõi để biết danh sách đầy đủ các thuộc tính của Thông tin chi tiết về địa điểm.

Huấn luyện mô hình bằng BigQuery ML

Với các đặc điểm được thiết kế và lưu trong bảng site_features, giờ đây, bạn có thể huấn luyện một mô hình Hồi quy tuyến tính.

Mô hình này tìm hiểu các trọng số tối ưu (β) cho từng đặc điểm môi trường (X) để dự đoán hiệu suất của trang web (Y).

hình ảnh

Xử lý điểm ngoại lệ bằng tính năng điều chỉnh quy mô mạnh mẽ

Dữ liệu không gian địa lý thường chứa các giá trị ngoại lệ cực đoan có thể làm sai lệch các mô hình tuyến tính tiêu chuẩn. Ví dụ: một địa điểm ở West End của London có thể có 200 nhà hàng trong vòng 500 mét, trong khi một địa điểm ở vùng ngoại ô chỉ có 2 nhà hàng. Nếu bạn sử dụng phương pháp mở rộng quy mô tiêu chuẩn (Trung bình/Độ lệch chuẩn), điểm ngoại lệ (200) sẽ làm sai lệch phân phối và buộc mô hình phải ưu tiên việc điều chỉnh giá trị cực đoan đó.

Để giải quyết vấn đề này, chúng ta sử dụng Robust Scaling (ML.ROBUST_SCALER) trong định nghĩa mô hình. Kỹ thuật này điều chỉnh theo tỷ lệ các tính năng dựa trên Trung vị và Khoảng tứ phân vị (IQR), giúp mô hình có khả năng phục hồi trước các điểm ngoại lai và đảm bảo mô hình học được từ phân phối điển hình của các trang web của bạn.

Tạo mô hình

Chạy truy vấn SQL sau đây trong BigQuery để tạo và huấn luyện mô hình.

Chúng ta sử dụng mệnh đề TRANSFORM để áp dụng tính năng mở rộng mạnh mẽ cho tất cả các tính năng đầu vào. Chúng tôi cũng đặt optimize_strategy = 'NORMAL_EQUATION' vì đây là phương pháp huấn luyện hiệu quả nhất cho các tập dữ liệu tương đối nhỏ, chẳng hạn như danh mục vị trí cửa hàng điển hình. Cuối cùng, chúng tôi lọc ra những điểm ngoại lai có hiệu suất cao (store_performance < 75) để tập trung mô hình vào việc dự đoán các mô hình tăng trưởng điển hình.

CREATE OR REPLACE MODEL `your_project.your_dataset.site_performance_model`
TRANSFORM(
  store_performance,
  -- Feature Engineering inside the model artifact
  -- These stats are calculated on the TRAINING split only
  ML.ROBUST_SCALER(gym_count) OVER() AS scaled_gym_count,
  ML.ROBUST_SCALER(restaurant_count) OVER() AS scaled_restaurant_count,
  ML.ROBUST_SCALER(school_count) OVER() AS scaled_school_count,
  ML.ROBUST_SCALER(transit_count) OVER() AS scaled_transit_count,
  ML.ROBUST_SCALER(clothing_store_count) OVER() AS scaled_clothing_store_count
)
OPTIONS(
    model_type = 'LINEAR_REG',
    input_label_cols = ['store_performance'],

    -- OPTIMIZATION PARAMETERS
    optimize_strategy = 'NORMAL_EQUATION', -- Exact mathematical solution (fast for small data)
    data_split_method = 'AUTO_SPLIT',      -- Automatically reserves ~20% for evaluation

    -- DIAGNOSTICS
    enable_global_explain = TRUE -- Essential to see feature importance
)
AS
SELECT
    gym_count,
    restaurant_count,
    school_count,
    transit_count,
    clothing_store_count,
    store_performance
FROM
    `your_project.your_dataset.site_features`
WHERE
    store_performance < 75;

Đánh giá hiệu suất của mô hình

Trước khi tin tưởng thông tin chi tiết của mô hình về những yếu tố thúc đẩy hiệu suất trang web, bạn phải xác minh rằng các dự đoán của mô hình là chính xác.

Sau khi huấn luyện, hãy dùng hàm ML.EVALUATE để đánh giá các dự đoán của mô hình dựa trên một tập dữ liệu "giữ lại" không được dùng trong quá trình huấn luyện.

SELECT
  *
FROM
  ML.EVALUATE(MODEL `your_project.your_dataset.site_performance_model`);

Kiểm tra Điểm R2 (r2_score) và Sai số tuyệt đối trung bình (mean_absolute_error) để xác định xem mô hình của bạn đã sẵn sàng cho quá trình sản xuất hay chưa:

  • Điểm R2 đo lường mức độ khác biệt về hiệu suất thực tế được giải thích bằng các yếu tố môi trường bên ngoài (địa điểm yêu thích lân cận). Điểm R2 là 0,70 có nghĩa là 70% thành công của một trang web gắn liền với môi trường địa phương. Chỉ số này càng gần 1, 0 thì mối tương quan giữa các tiện nghi môi trường và hiệu suất của trang web càng chặt chẽ.
  • MAE cho biết lỗi trung bình theo điểm. Ví dụ: MAE là 1,5 có nghĩa là các dự đoán của mô hình thường nằm trong phạm vi +/- 1,5 điểm so với điểm hiệu suất thực tế.

Khắc phục sự cố Điểm số thấp

Nếu điểm R2 của bạn thấp, hãy cân nhắc những điểm cải thiện sau:

  • Mở rộng các loại đối tượng: Thêm nhiều Loại địa điểm vào truy vấn của bạn (ví dụ: tourist_attraction, subway_station).
  • Điều chỉnh bán kính phạm vi: Thay đổi khoảng cách ST_DWITHIN. Bán kính 500 mét có thể quá rộng đối với một quán cà phê nhưng quá nhỏ đối với một cửa hàng nội thất.
  • Tăng kích thước dữ liệu: Đảm bảo bạn đang huấn luyện trên đủ vị trí cửa hàng để tìm ra một mẫu có ý nghĩa thống kê.

Ghi điểm cho Thành phố bằng tính năng lập chỉ mục không gian H3

Chúng tôi sử dụng H3 Spatial Indexing để chia thành phố London thành một lưới đồng nhất gồm các ô hình lục giác (Độ phân giải 8, khoảng 0,7 km²). Bằng cách tổng hợp dữ liệu Places Insights vào các ô này, chúng tôi có thể áp dụng mô hình đã huấn luyện cho mọi khu vực lân cận, xác định những khu vực có tiềm năng cao phù hợp với hồ sơ môi trường của các địa điểm hoạt động hiệu quả nhất.

Chạy truy vấn tìm kiếm cơ hội

Để tạo lưới này, chúng tôi sử dụng hàm PLACES_COUNT_PER_H3 do tập dữ liệu Thông tin chi tiết về địa điểm cung cấp (Tìm hiểu thêm về cách truy vấn Thông tin chi tiết về địa điểm bằng hàm Số lượng địa điểm). Hàm này tính số lượng POI cho các ô lưới H3 trong một thao tác duy nhất.

Chạy truy vấn SQL sau đây để thực hiện 3 bước trong một lần thực thi:

  1. Lập chỉ mục và đếm H3: Chúng tôi gọi PLACES_COUNT_PER_H3 bằng cách sử dụng một đối tượng cấu hình JSON để tìm tất cả các địa điểm hoạt động trong bán kính 25 km tính từ trung tâm London. Chúng tôi truy vấn riêng thông tin này cho từng loại tiện nghi (phòng tập thể dục, trường học, v.v.) và kết hợp các loại tiện nghi bằng cách sử dụng UNION ALL.
  2. Xoay (Kỹ thuật trích xuất tính chất): Vì mô hình học máy của chúng tôi dự kiến các nhóm tính chất riêng biệt (như gym_countrestaurant_count), chúng tôi sẽ nhóm các ô và sử dụng tính năng tổng hợp có điều kiện (SUM(IF(...))) để xoay dữ liệu thành lược đồ chính xác.
  3. Dự đoán: Chúng tôi đưa trực tiếp các đặc điểm lưới được xoay này vào hàm ML.PREDICT để tạo điểm hiệu suất cho từng khu vực lân cận.
WITH combined_counts AS (
    -- Gyms
    SELECT h3_cell_index, geography, count, 'gym' AS type
    FROM `places_insights___gb.PLACES_COUNT_PER_H3`(
        JSON_OBJECT(
            'geography', ST_BUFFER(ST_GEOGPOINT(-0.1278, 51.5074), 25000), -- 25km radius around London
            'h3_resolution', 8,
            'business_status', ['OPERATIONAL'],
            'types', ['gym']
        )
    )
    UNION ALL
    -- Restaurants
    SELECT h3_cell_index, geography, count, 'restaurant' AS type
    FROM `places_insights___gb.PLACES_COUNT_PER_H3`(
        JSON_OBJECT(
            'geography', ST_BUFFER(ST_GEOGPOINT(-0.1278, 51.5074), 25000),
            'h3_resolution', 8,
            'business_status', ['OPERATIONAL'],
            'types', ['restaurant']
        )
    )
    UNION ALL
    -- Schools
    SELECT h3_cell_index, geography, count, 'school' AS type
    FROM `places_insights___gb.PLACES_COUNT_PER_H3`(
        JSON_OBJECT(
            'geography', ST_BUFFER(ST_GEOGPOINT(-0.1278, 51.5074), 25000),
            'h3_resolution', 8,
            'business_status', ['OPERATIONAL'],
            'types', ['school']
        )
    )
    UNION ALL
    -- Transit Stations
    SELECT h3_cell_index, geography, count, 'transit_station' AS type
    FROM `places_insights___gb.PLACES_COUNT_PER_H3`(
        JSON_OBJECT(
            'geography', ST_BUFFER(ST_GEOGPOINT(-0.1278, 51.5074), 25000),
            'h3_resolution', 8,
            'business_status', ['OPERATIONAL'],
            'types', ['transit_station']
        )
    )
    UNION ALL
    -- Clothing Stores
    SELECT h3_cell_index, geography, count, 'clothing_store' AS type
    FROM `places_insights___gb.PLACES_COUNT_PER_H3`(
        JSON_OBJECT(
            'geography', ST_BUFFER(ST_GEOGPOINT(-0.1278, 51.5074), 25000),
            'h3_resolution', 8,
            'business_status', ['OPERATIONAL'],
            'types', ['clothing_store']
        )
    )
),
aggregated_features AS (
    -- Pivot the stacked rows back into standard feature columns for the ML Model
    SELECT
        h3_cell_index AS h3_index,
        ANY_VALUE(geography) AS h3_geography,
        SUM(IF(type = 'gym', count, 0)) AS gym_count,
        SUM(IF(type = 'restaurant', count, 0)) AS restaurant_count,
        SUM(IF(type = 'school', count, 0)) AS school_count,
        SUM(IF(type = 'transit_station', count, 0)) AS transit_count,
        SUM(IF(type = 'clothing_store', count, 0)) AS clothing_store_count
    FROM
        combined_counts
    GROUP BY
        h3_cell_index
)

-- Feed the pivoted features into the model
SELECT
    h3_index,
    predicted_store_performance,
    h3_geography,
    gym_count,
    restaurant_count
FROM
    ML.PREDICT(MODEL `your_project.your_dataset.site_performance_model`,
      (SELECT * FROM aggregated_features)
    )
ORDER BY
    predicted_store_performance DESC;

Diễn giải kết quả

Truy vấn này trả về một bảng, trong đó mỗi hàng đại diện cho một khu vực hình lục giác ở London.

  • h3_index: Giá trị nhận dạng duy nhất cho ô lục giác.
  • predicted_store_performance: Điểm số ước tính của mô hình cho một địa điểm nằm trong ô này, chỉ dựa trên môi trường xung quanh.
  • h3_geography: Hình học đa giác của ô, chúng ta sẽ dùng hình học này để trực quan hoá trong bước tiếp theo.

Giá trị cao cho biết những khu vực có mật độ trường học, phòng tập thể dục và phương tiện công cộng phù hợp với các mẫu được tìm thấy xung quanh những địa điểm hiện có thành công nhất của bạn.

Trực quan hoá Bản đồ xác định khách hàng tiềm năng

Để có thể hành động dựa trên dữ liệu, hãy trực quan hoá kết quả trên bản đồ. Mặc dù đầu ra dạng bảng cung cấp điểm số thô, nhưng bản đồ cho thấy các cụm không gian và hành lang có tiềm năng cao mà không rõ ràng trong danh sách.

Trong sổ tay đi kèm, chúng ta sử dụng thư viện geopandas để phân tích cú pháp hình học đa giác H3 và folium để kết xuất một bản đồ tương tác.

Kết quả là một bản đồ chuyên đề, trong đó mỗi ô lục giác được tô màu theo điểm số dự đoán.

hình ảnh

Giải thích bản đồ:

  • Điểm nóng (Vàng/Xanh lục): Những khu vực này có điểm số hiệu suất dự đoán cao. Những khu vực này có mật độ tối ưu về trường học, phòng tập thể dục và phương tiện công cộng, tương quan với các địa điểm thành công của bạn. Đây là những ứng cử viên sáng giá cho việc lựa chọn địa điểm mới.
  • Điểm lạnh (Màu tím): Những khu vực này thiếu các đặc điểm môi trường hỗ trợ như những khu vực có hiệu suất cao nhất.
  • Kiểm tra tương tác: Trong môi trường sổ tay, bạn có thể di chuột lên bất kỳ ô nào để xem số lượng cụ thể của các tiện nghi (ví dụ: "Phòng tập thể dục: 12") đã đóng góp vào điểm số cụ thể đó.

Kết luận

Bạn đã kết hợp thành công dữ liệu hoạt động nội bộ với Thông tin chi tiết về địa điểm để chẩn đoán hiệu suất trang web. Bằng cách phân tích trọng số của mô hình, bạn đã xác định được những đặc điểm cụ thể của khu vực lân cận có tương quan với các chỉ số hiện có của bạn. Bằng cách sử dụng tính năng lập chỉ mục không gian H3, bạn đã mở rộng phạm vi phân tích từ vài trăm địa điểm lên hàng nghìn khu dân cư tiềm năng trên khắp London.

Hành động tiếp theo

  • Mở rộng tính năng Kỹ thuật: Thêm Loại địa điểm cụ thể hơn vào truy vấn của bạn để nắm bắt những yếu tố thúc đẩy lượng người ghé thăm cửa hàng thực tế trong thị trường hẹp.
  • Khám phá các mô hình nâng cao: Mặc dù Hồi quy tuyến tính mang lại khả năng giải thích rõ ràng, nhưng hãy thử nghiệm với BOOSTED_TREE_REGRESSOR trong BigQuery ML kết hợp với chiến lược xác thực chéo phù hợp để nắm bắt các mối quan hệ phi tuyến tính.
  • Vận hành bản đồ: Xuất kết quả lưới H3 sang một trang tổng quan tuỳ chỉnh bằng Maps JavaScript API để chia sẻ thông tin chi tiết này với nhóm của bạn.

Người đóng góp