1. บทนำ
Codelab นี้จะสอนวิธีใช้การถดถอยเชิงเส้นเพื่อสร้างรูปแบบที่คาดการณ์ต้นทุนต่อคลิก
ข้อกำหนดเบื้องต้น
หากต้องการทํา Codelab นี้ให้เสร็จสมบูรณ์ คุณจะต้องมีข้อมูลแคมเปญคุณภาพสูงเพียงพอเพื่อสร้างโมเดล
2. สร้างตารางสำรอง
เรียกใช้การค้นหาต่อไปนี้
CREATE TABLE
linear_regression_example_data
AS(
WITH all_data AS (
SELECT
imp.user_id as user_id,
ROW_NUMBER() OVER(PARTITION BY imp.user_id) AS rowIdx,
imp.browser AS browser_name,
gender_name AS gender_name,
age_group_name AS age_group_name,
DATETIME(TIMESTAMP_MICROS(
imp.query_id.time_usec), "America/Los_Angeles") as impression_time,
clk.advertiser_click_cost_usd AS label
FROM adh.google_ads_impressions imp
INNER JOIN adh.google_ads_clicks clk USING (impression_id)
LEFT JOIN adh.gender ON demographics.gender = gender_id
LEFT JOIN adh.age_group ON demographics.age_group = age_group_id
)
# Need just one user ID or regression won't work
SELECT
label,
browser_name,
gender_name,
age_group_name,
# Although BQML could divide impression_time into several useful variables on
# its own, it may attempt to divide it into too many features. As a best
# practice extract the variables that you think will be most helpful.
# The output of impression_time is a number, but we care about it as a
# category, so we cast it to a string.
CAST(EXTRACT(DAYOFWEEK FROM impression_time) AS STRING) AS day_of_week,
CAST(EXTRACT(HOUR FROM impression_time) AS STRING) AS hour,
FROM
all_data
WHERE
rowIdx = 1 # This ensures that there's only 1 row per user.
AND
label IS NOT NULL
AND
gender_name IS NOT NULL
AND
age_group_name IS NOT NULL
);
3. สร้างและฝึกโมเดล
แนวทางปฏิบัติแนะนำคือแยกขั้นตอนการสร้างตารางออกจากขั้นตอนการสร้างโมเดล
เรียกใช้การค้นหาต่อไปนี้ในตารางชั่วคราวที่สร้างขึ้นในขั้นตอนก่อนหน้า ไม่ต้องกังวลว่าจะระบุวันที่เริ่มต้นและวันที่สิ้นสุดอย่างไร เนื่องจากระบบจะอนุมานข้อมูลเหล่านี้ตามข้อมูลในตารางชั่วคราว
CREATE OR REPLACE
MODEL `example_linear`
OPTIONS(
model_type = 'adh_linear_regression'
)
AS (
SELECT *
FROM
tmp.linear_regression_example_data
);
SELECT * FROM ML.EVALUATE(MODEL `example_linear`)
แถว | mean_absolute_error | mean_squared_error | mean_squared_log_error | median_absolute_error | r2_score | explained_variance |
1 | 0.11102380666874107 | 0.019938972461569476 | 0.019503393448234131 | 0.091792024503562136 | -9.8205955364568478 | -9.7975398794423025 |