การประมาณการถดถอยใน Ads Data Hub

การถดถอยแบบเชิงเส้นและแบบโลจิสติกส์คือโมเดลแมชชีนเลิร์นนิงที่ช่วยให้คุณสร้างการคาดการณ์ที่มีความหมายจากข้อมูลการโฆษณาได้

  • การถดถอยเชิงเส้นจะสร้างฟังก์ชันที่จะปรับเส้นให้พอดีกับข้อมูล โดยที่ระยะห่างระหว่างจุดข้อมูลและเส้นจะลดลง จากนั้นจะใช้โมเดลนี้เพื่อคาดการณ์ค่าตัวเลขโดยอิงตามข้อมูลที่ป้อน เช่น การคาดการณ์มูลค่าตลอดอายุการใช้งานของผู้ใช้ตามการซื้อ การโต้ตอบก่อนหน้า เป็นต้น
  • การถดถอยแบบโลจิสติกใช้สําหรับโจทย์การแยกประเภทตามการคาดการณ์ โมเดลอาจเป็น 1 ใน 2 ประเภทขึ้นอยู่กับจำนวนตัวแปรที่คุณระบุ ดังนี้
    • การถดถอยแบบโลจิสติกแบบไบนารีตอบว่า "ใช่/ไม่ใช่" เช่น แนวโน้มที่เหตุการณ์ Conversion จะเกิดขึ้น
    • การถดถอยแบบโลจิสติกส์แบบหลายคลาสใช้เพื่อคาดการณ์ค่าที่เป็นไปได้หลายแบบ เช่น การพิจารณาว่าลูกค้ามี "มูลค่าต่ำ" "คุณค่าปานกลาง" หรือ "มูลค่าสูง"

ทั้งการถดถอยแบบเชิงเส้นและแบบโลจิสติกจะเรียนรู้จากข้อมูลการฝึก (ในกรณีนี้คือข้อมูลการโฆษณาของคุณ) ซึ่งช่วยให้คุณมีโมเดลการคาดการณ์เพื่อใช้ตัดสินใจเกี่ยวกับการโฆษณา โดยทั่วไป การให้ข้อมูลเพิ่มเติมและการตรวจสอบว่าข้อมูลที่ระบุมีคุณภาพสูงจะช่วยปรับปรุงความแม่นยำของโมเดลของคุณ โมเดลทั้งสองจะทำงานได้ดีขึ้นเมื่อให้ข้อมูลการฝึกที่มีคลัสเตอร์ใกล้เคียงกัน

Differential Privacy

ทั้งการถดถอยแบบเชิงเส้นและแบบโลจิสติกส์ใช้ Differential Privacy ซึ่งเป็นระบบตรวจสอบความเป็นส่วนตัวที่แตกต่างจากการดําเนินการอื่นๆ ใน Ads Data Hub Differential Privacy รักษาความเป็นส่วนตัวของผู้ใช้ปลายทางด้วยการแทรกสัญญาณรบกวนลงในผลลัพธ์ระหว่างขั้นตอนการฝึก ระดับสัญญาณรบกวนระดับนี้อยู่ในระดับต่ำพอที่ผลลัพธ์สุดท้ายจะยังมีประโยชน์ แต่ก็สูงพอที่จะไม่สามารถระบุผู้ใช้ปลายทางได้ นอกจากนี้ ระดับสัญญาณรบกวนไม่สามารถกำหนดได้ ดังนั้นผลลัพธ์จะมีระดับสัญญาณรบกวนที่ไม่สม่ำเสมอ ทำให้มั่นใจในความเป็นส่วนตัวของผู้ใช้ปลายทางมากขึ้น

การจำกัดการค้นหา

คุณมีคำค้นหาเกี่ยวกับการประมาณการถดถอยแบบเชิงเส้นและลอจิสติกส์ได้สูงสุด 100 คำต่อ "วันข้อมูล" เมื่อใช้ EPSILON_PER_MODEL เริ่มต้น วันของข้อมูลหมายถึงเหตุการณ์ที่สร้างขึ้นในวันที่ระบุ เหตุการณ์เหล่านี้จะตรงกับวันที่เริ่มต้นและวันที่สิ้นสุดที่คุณระบุเมื่อเรียกใช้การค้นหา รวมถึงวันที่เริ่มต้นและวันที่สิ้นสุดที่ใช้เมื่อสร้างตารางที่การค้นหาของคุณใช้ เช่น ตารางชั่วคราวที่ใช้สำหรับการฝึก ซึ่งหมายความว่าข้อมูลจาก 1 วันจะใช้ในรูปแบบได้ไม่เกิน 100 รูปแบบ หากคุณเลือกระบุค่า EPSILON_PER_MODEL มากกว่าค่าเริ่มต้น คุณจะสามารถสร้างโมเดลน้อยลง แต่โมเดลจะมีคุณภาพสูงกว่า และหากเลือก EPSILON_PER_MODEL ค่าเล็กๆ คุณสามารถฝึกโมเดลเพิ่มเติมได้ แต่โมเดลเหล่านั้นจะมีคุณภาพต่ำกว่า

วิธีการทำงาน

เวิร์กโฟลว์จะทำตามขั้นตอนสำคัญเหล่านี้

  1. เตรียมข้อมูลการฝึก
  2. สร้างโมเดล
  3. รวบรวมข้อมูลเชิงลึกจากโมเดล

เตรียมข้อมูลการฝึก

ดังที่กล่าวไว้ข้างต้น โดยทั่วไปแล้ว การใช้ชุดข้อมูลคุณภาพสูงที่ใหญ่กว่าจะให้ผลลัพธ์ที่ดีกว่า นอกจากนี้ เนื่องจากข้อมูลอินพุตมีการปรับขนาดโดยใช้การปรับขนาดต่ำสุด ข้อมูลที่มีการจัดกลุ่มเพียงสั้นๆ หรือข้อมูลที่มีค่าผิดปกติอาจส่งผลเสียต่อโมเดลด้วยการย้ายค่าเฉลี่ย

โดยค่าเริ่มต้น Ads Data Hub จะสุ่มเลือกข้อมูลการฝึก 18% เพื่อใช้สำหรับการตรวจสอบ ตัวเลือก data_split_eval_fraction จะควบคุมเปอร์เซ็นต์ของข้อมูลที่ใช้สำหรับการตรวจสอบได้

สร้างโมเดล

ระบุพารามิเตอร์และข้อมูลอินพุตสำหรับการฝึกโมเดล

แนวทางปฏิบัติแนะนำ

ปัจจัยที่สำคัญที่สุดอย่างหนึ่งในคุณภาพของโมเดลคือขนาดของชุดการฝึก อย่างไรก็ตาม ข้อดีข้อเสียของขนาด/คุณภาพจะแตกต่างกันไปตามปัญหาและปัจจัยที่ระบุไว้ด้านล่าง โปรดแจ้งให้เราทราบถึงประสบการณ์ที่คุณได้รับ

  • เราได้เห็นถึงความถูกต้อง > 0.70 สำหรับโมเดลการถดถอยแบบโลจิสติกที่สร้างขึ้นจากชุดการฝึกที่มีผู้ใช้อย่างน้อย 100,000 คน
  • เราเห็น r-squared > 0.70 สำหรับโมเดลการถดถอยเชิงเส้นที่สร้างขึ้นจากชุดการฝึกที่มีผู้ใช้อย่างน้อย 800,000 คน

มีปัจจัยอื่นๆ ที่อาจทำให้คุณภาพของโมเดลลดลง

  • โมเดลโลจิสติกส์ที่คลาสหนึ่งนำเสนอมากกว่าโมเดลอื่นๆ มาก โดยเฉพาะอย่างยิ่ง เมื่อป้ายกำกับหนึ่งมีผู้ใช้ชุดการฝึกน้อย การมีผู้ใช้ชุดการฝึกจำนวนมากที่มีป้ายกำกับอื่นๆ อาจไม่ช่วยมากนักต่อความแม่นยำของโมเดลในป้ายกำกับขนาดเล็ก ตัวอย่างเช่น 20,000 และ ผู้ใช้ชุดการฝึก 1,000 คนสำหรับป้ายกำกับ 2 ป้ายต่ำกว่า 10,000 คน 2,000 คน
  • ข้อมูลฟีเจอร์ที่ไม่ได้ให้สัญญาณที่ชัดเจนสำหรับป้ายกำกับ
  • ข้อมูลดิบที่จำเป็นต้องมีวิศวกรรมฟีเจอร์ที่ครอบคลุมมากขึ้น ตัวอย่างเช่น บางช่องอาจมีค่าที่เป็นไปได้จำนวนมาก วิธีหนึ่งในการปรับปรุงข้อมูลประเภทนี้คือการแปลงค่าเป็นฟีเจอร์ที่มีหมวดหมู่หรือที่เก็บข้อมูลจํานวนน้อย

รวบรวมข้อมูลเชิงลึก

คุณสามารถเรียกใช้ฟังก์ชันเพื่อประเมินประสิทธิภาพของโมเดลเกี่ยวกับข้อมูลการตรวจสอบ ตรวจสอบฟีเจอร์และข้อมูลเกี่ยวกับการฝึกซ้ำ (เช่น น้ำหนักพื้นฐานที่โมเดลใช้ในระหว่างการคาดการณ์) และคาดการณ์ข้อมูลที่มองไม่เห็น

คำสั่ง CREATE MODEL

คำสั่ง CREATE MODEL จะสร้างโมเดลด้วยชื่อและชุดข้อมูลที่คุณระบุ ถ้ามีชื่อโมเดลอยู่แล้ว CREATE MODEL จะแทนที่โมเดลที่มีอยู่

สร้างไวยากรณ์โมเดล

CREATE MODEL
model_name
OPTIONS
(
  // model_option_list:
  // Required parameter.
  MODEL_TYPE = { 'ADH_LINEAR_REGRESSION' | 'ADH_LOGISTIC_REGRESSION'}

  // Optional tuning parameters.
  [, L1_REG = float64_value ]
  [, L2_REG = float64_value ]
  [, DATA_SPLIT_EVAL_FRACTION = float64_value ]
  [, OPTIMIZE_STRATEGY = { 'AUTO_STRATEGY' | 'BATCH_GRADIENT_DESCENT' |
                           'NORMAL_EQUATION' } ]
  [, MAX_ITERATIONS = int64_value ]
  [, LEARN_RATE_STRATEGY = { 'LINE_SEARCH' | 'CONSTANT' } ]
  [, LEARN_RATE = float64_value ]
  [, EARLY_STOP = { TRUE | FALSE } ]
  [, MIN_REL_PROGRESS = float64_value ]
  [, LS_INIT_LEARN_RATE = float64_value ]
  [, EPSILON_PER_MODEL = float64_value ]
  [, AUTOMATIC_IMPUT_SCALING = bool_value ]
  [, MIN_MAX_SCALED_COLS = [string_value, string_value... ] ]
  [, STANDARD_SCALED_COLS = [string_value, string_value... ] ]
  [, QUANTILE_BUCKETIZED_COLS = [
        STRUCT(string_value AS col_name, int64_value AS num_buckets), 
       STRUCT(string_value AS col_name, int64_value AS num_buckets)... ] ]
)
AS query_statement

model_name

ชื่อที่เป็นตัวอักษรและตัวเลขคละกัน รวมถึงขีดล่างและขีดกลาง ใส่จุดไม่ได้ หากชื่อโมเดลที่คุณระบุมีอยู่แล้ว โมเดลเดิมจะถูกเขียนทับ

query_statement

ระบุการค้นหา SQL มาตรฐานที่ใช้เพื่อสร้างข้อมูลการฝึก หากคุณสร้างโมเดลหลายรายการโดยใช้ข้อมูลการฝึกเดียวกัน ให้สร้างตารางชั่วคราวที่มีข้อมูลการฝึกและอ้างอิงไว้ที่นี่ วิธีนี้ช่วยป้องกันไม่ให้เกิดข้อผิดพลาดในการตรวจสอบความแตกต่างที่อาจเกิดขึ้นเนื่องจากการล้างข้อมูลหรือจดหมายขยะที่ล่าช้า

model_option_list

model_type

(ต้องระบุ) ตัวเลือกเดียวที่จำเป็น อาจเป็น "adh_linear_regression" หรือ "adh_logistic_regression"

l1_reg

(ไม่บังคับ) จำนวนการปรับมาตรฐาน L1 ที่ใช้ การกำหนดมาตรฐาน L1 จะลบน้ำหนักตามสัดส่วนของผลบวกของค่าสัมบูรณ์ของน้ำหนัก อาจเป็นเลขใดก็ได้ที่ไม่เป็นลบ โดยมีค่าเริ่มต้นเป็น 0

l2_reg

(ไม่บังคับ) จำนวนการปรับมาตรฐาน L2 ที่ใช้ การกำหนดมาตรฐาน L2 จะลบน้ำหนักตามสัดส่วนของรากที่ 2 ของผลบวกของค่ากำลังสอง อาจเป็นเลขใดก็ได้ที่ไม่เป็นลบ โดยมีค่าเริ่มต้นเป็น 0

data_split_eval_fraction

(ไม่บังคับ) ต้องอยู่ระหว่าง .01 และ .99 โดยค่าเริ่มต้นคือ .18 ระบุเศษส่วนของข้อมูลที่อยู่ในชุดการประเมิน การดำเนินการนี้จะส่งผลต่อความแม่นยำของโมเดลโดยการลดจำนวนแถวสุดท้ายในโมเดล แต่ยังเพิ่มจำนวนโมเดลที่ผู้ใช้เรียกใช้ได้ นี่คือแผนภูมิของความสัมพันธ์ที่สมมติว่าโมเดลทุกรายการในชุดข้อมูลที่ระบุมีเศษส่วนเดียวกัน

เศษส่วนของการตรวจสอบ การค้นหาที่อนุญาต
0.01 7
0.1 8
0.15 8
0.18 9
0.2 9
0.3 10
0.5 14
0.9 50

optimize_strategy

(ไม่บังคับ) กลยุทธ์ในการฝึกโมเดลการถดถอยเชิงเส้น

อาร์กิวเมนต์

"AUTO_STRATEGY" จะกำหนดกลยุทธ์การฝึกดังนี้

  • หากระบุ l1_reg หรือ warm_start ไว้ ระบบจะใช้กลยุทธ์ batch_gradient_descent
  • หากจำนวนสมาชิกทั้งหมดของฟีเจอร์การฝึกมีมากกว่า 10,000 คน ระบบจะใช้กลยุทธ์ batch_gradient_descent
  • หากเกิดปัญหาที่มากเกินไป (จำนวนตัวอย่างการฝึกน้อยกว่า 10 รายการ • Cardinality ทั้งหมด) ระบบจะใช้กลยุทธ์ batch_gradient_descent
  • มีการใช้กลยุทธ์ NORMAL_EQUATION กับกรณีอื่นๆ ทั้งหมด

"BATCH_GRADIENT_DESCENT" (โลจิสติกเท่านั้น) จะฝึกโมเดลโดยใช้วิธีไล่ระดับสีแบบเป็นชุด ซึ่งจะเพิ่มประสิทธิภาพฟังก์ชันการสูญเสียโดยใช้ฟังก์ชันการไล่ระดับสี

"NORMAL_EQUATION" (เชิงเส้นเท่านั้น) จะคำนวณผลเฉลยกำลังสองที่น้อยที่สุดของโจทย์การถดถอยเชิงเส้นด้วยสูตรการวิเคราะห์ ไม่สามารถใช้สมการปกติในกรณีต่อไปนี้

  • ระบุ l1_reg แล้ว
  • ระบุ warm_start แล้ว
  • จำนวนสมาชิกในเซ็ตทั้งหมดของฟีเจอร์การฝึกมีมากกว่า 10,000
  • ค่าเริ่มต้นคือ "AUTO_STRATEGY"

max_iterations

(ไม่บังคับ) จำนวนการทำซ้ำหรือขั้นตอนการฝึก เนื่องจากการค้นหานี้จะสร้างแผนผัง 1 ต้นสำหรับการทำซ้ำแต่ละครั้ง นี่จึงเป็นจำนวนต้นไม้ด้วย ต้องเป็นจำนวนเต็มที่มากกว่า 1 ค่าเริ่มต้นคือ 20

learn_rate_strategy

(ไม่บังคับ โลจิสติกส์เท่านั้น) กลยุทธ์สำหรับการระบุอัตราการเรียนรู้ระหว่างการฝึก

อาร์กิวเมนต์

"LINE_SEARCH" จะใช้วิธีค้นหาบรรทัดเพื่อคำนวณอัตราการเรียนรู้ อัตราการเรียนรู้เริ่มต้นของการค้นหาบรรทัดคือค่าที่ระบุสำหรับ LS_INIT_LEARN_RATE

  • การค้นหาบรรทัดจะชะลอการฝึกและเพิ่มจำนวนไบต์ที่ประมวลผล แต่โดยทั่วไปจะบรรจบกันแม้ว่าจะมีอัตราการเรียนรู้ที่ระบุเบื้องต้นมากกว่า

"CONSTANT" กำหนดอัตราการเรียนรู้เป็นค่าที่ระบุสำหรับ LEARN_RATE

ค่าเริ่มต้นคือ "LINE_SEARCH"

learn_rate

(ไม่บังคับ สำหรับโลจิสติกเท่านั้น) อัตราการเรียนรู้สำหรับการไล่ระดับสีเมื่อตั้งค่า LEARN_RATE_STRATEGY เป็น CONSTANT หากตั้งค่า LEARN_RATE_STRATEGY เป็น "LINE_SEARCH" ระบบจะแสดงข้อผิดพลาด

อาร์กิวเมนต์

float64_value อาจเป็นเลขทศนิยมใดก็ได้ 64 บิต ค่าเริ่มต้นคือ 0.1 (10%)

early_stop

(ไม่บังคับ) การฝึกควรหยุดหลังจากการทำซ้ำครั้งแรกซึ่งมีการปรับปรุงการสูญเสียแบบสัมพัทธ์น้อยกว่าค่าที่ระบุสำหรับ MIN_REL_PROGRESS หรือไม่

อาร์กิวเมนต์

TRUE สำหรับ "ใช่", FALSE สำหรับ "ไม่" ค่าเริ่มต้นคือ TRUE

min_rel_progress

(ไม่บังคับ) การปรับปรุงการสูญเสียสัมพัทธ์ขั้นต่ำที่จำเป็นต่อการฝึกต่อไปเมื่อตั้งค่า EARLY_STOP เป็น "จริง" เช่น ค่า 0.01 ระบุว่าการทำซ้ำแต่ละครั้งต้องลดการสูญเสียลง 1% เพื่อให้การฝึกดำเนินการต่อ

อาร์กิวเมนต์

float64_value อาจเป็นเลขทศนิยมใดก็ได้ 64 บิต ค่าเริ่มต้นคือ 0.1 (10%)

ls_init_learn_rate

(ไม่บังคับ) ตั้งค่าอัตราการเรียนรู้เริ่มต้นที่ LEARN_RATE_STRATEGY='LINE_SEARCH' ใช้ ตัวเลือกนี้จะใช้ได้เฉพาะเมื่อระบุ LINE_SEARCH ไว้เท่านั้น

หาก LEARN_RATE ของโมเดลเพิ่มเป็น 2 เท่าของการทำซ้ำทุกครั้งตามที่ ML.TRAINING_INFO ระบุไว้ ให้ลองตั้งค่า LS_INIT_LEARN_RATE เป็นอัตราการเรียนรู้ที่เพิ่มขึ้นเป็น 2 เท่าล่าสุด อัตราการเรียนรู้เริ่มต้นที่เหมาะสมจะแตกต่างกันไปในแต่ละโมเดล อัตราการเรียนรู้เบื้องต้นที่ดีสำหรับโมเดลหนึ่งอาจไม่ใช่อัตราการเรียนรู้เริ่มต้นที่ดีของอีกโมเดลหนึ่ง

อาร์กิวเมนต์

float64_value อาจเป็นเลขทศนิยมใดก็ได้ 64 บิต

epsilon_per_model

(ไม่บังคับ) ระบุจำนวนงบประมาณความเป็นส่วนตัวที่จะใช้ในการฝึกโมเดลนี้ ลูกค้าข้อมูลโฆษณาแต่ละรายจะได้รับงบประมาณความเป็นส่วนตัวที่ 10.0 ต่อวัน โมเดลที่ได้รับการฝึกเรียบร้อยแล้วจะใช้งบประมาณ EPSILON_PER_MODEL สำหรับแต่ละวันในช่วงวันที่ที่ระบุเมื่อทำการค้นหา การใช้ค่าเริ่มต้น LN(3)/10 จะทำให้สร้างโมเดลได้ประมาณ 100 รายการ หากใช้ค่าที่สูงกว่า คุณจะสร้างโมเดลได้น้อยลง แต่โมเดลจะมีคุณภาพสูงกว่า หากใช้ค่าที่น้อยกว่า คุณจะสร้างโมเดลอื่นๆ ที่มีคุณภาพต่ำได้

อาร์กิวเมนต์

float64_value จะเป็นเลขทศนิยม 64 บิตใดก็ได้ที่เป็นค่าบวกน้อยกว่า LN(3) ซึ่งประมาณ 1.0986 ค่าเริ่มต้นคือ LN(3)/10

automatic_input_scaling

(ไม่บังคับ) เมื่อ TRUE คอลัมน์ฟีเจอร์ที่เป็นตัวเลขทั้งหมดจะใช้ min_max_scaling โดยอัตโนมัติ เสมือนว่าชื่อคอลัมน์นั้นถูกเรียกอย่างชัดเจนในตัวเลือก min_max_scaled_cols ยกเว้นคอลัมน์ใดๆ ที่มีการเรียกอย่างชัดแจ้งในตัวเลือก standard_scaled_cols หรือ quantile_bucketized_cols

อาร์กิวเมนต์

bool_value เป็น BOOL ค่าเริ่มต้นคือ TRUE

min_max_scaled_cols

(ไม่บังคับ) ปรับขนาดแต่ละคอลัมน์ฟีเจอร์ number_expression ที่ระบุในช่วง 0 ถึง 1 พร้อม MIN และ MAX สูงสุดในทุกแถว ระบบจะใช้ MIN และ MAX เดียวกันในการคาดการณ์โดยอัตโนมัติ หากข้อมูลการคาดการณ์อยู่นอกช่วง MIN, MAX ระบบจะจำกัดขอบเขตเป็น 0 หรือ 1

อาร์กิวเมนต์

อาร์เรย์ของ string_value โดยที่ string_value แต่ละรายการคือ STRING ที่แสดงถึงชื่อคอลัมน์ที่จะเปลี่ยนรูปแบบ

standard_scaled_cols

(ไม่บังคับ) ทำให้คอลัมน์ฟีเจอร์ numerical_expression ที่ระบุเป็นมาตรฐานในทุกแถว ระบบจะใช้ STDDEV และ MEAN ที่คำนวณเพื่อปรับนิพจน์ให้เป็นมาตรฐานในการคาดการณ์โดยอัตโนมัติ

อาร์กิวเมนต์

อาร์เรย์ของ string_value โดยที่ string_value แต่ละรายการคือ STRING ที่แสดงถึงชื่อคอลัมน์ที่จะเปลี่ยนรูปแบบ

quantile_bucketized_cols

จัดกลุ่มคอลัมน์ฟีเจอร์ตัวเลขต่อเนื่องที่ระบุเป็น STRING ที่มีชื่อที่เก็บข้อมูลเป็นค่าที่อิงตามควอนไทล์ ระบบจะใช้ควอนไทล์เดียวกันในการคาดการณ์โดยอัตโนมัติ

อาร์กิวเมนต์

อาร์เรย์ของ STRUCT(string_value AS col_name, int64_value AS num_buckets) โดยที่สตริง_ค่าแต่ละรายการคือ STRING ซึ่งแสดงชื่อคอลัมน์ตัวเลขต่อเนื่องที่จะเปลี่ยนรูปแบบ และ int64_value แต่ละรายการคือจำนวนที่เก็บข้อมูลสำหรับแบ่งค่าตัวเลข

การตรวจสอบความถูกต้อง

  • ข้อมูลแต่ละวันในช่วงวันที่ที่ระบุสำหรับการค้นหานี้ต้องมีงบประมาณความเป็นส่วนตัวเพียงพอ กล่าวคือ มากกว่า EPSILON_PER_MODEL มิฉะนั้นการค้นหาจะดำเนินการไม่สำเร็จ
  • พารามิเตอร์การปรับแต่งที่ไม่บังคับ หากระบุไว้ จะได้รับการตรวจสอบสำหรับช่วงที่แสดงข้างต้น
  • ต้องระบุพารามิเตอร์ model_type ที่จำเป็นเพียง 1 รายการอย่างชัดเจนเท่านั้น
  • คอลัมน์ 1 คอลัมน์ในชุดการฝึกต้องมีชื่อว่า "ป้ายกำกับ" ยังไม่รองรับป้ายกำกับหลายรายการในขณะนี้
  • คอลัมน์ป้ายกำกับต้องไม่มีค่าว่าง หากคอลัมน์ป้ายกำกับมีค่าว่าง การค้นหาจะไม่สำเร็จ
  • ไม่มีคอลัมน์ฟีเจอร์ใดที่ดึงมาจาก user_id
  • แต่ละแถวต้องแสดงถึงผู้ใช้ที่ไม่ซ้ำ 1 รายเท่านั้น แถว 1 แถวไม่สามารถแสดงข้อมูลจากผู้ใช้มากกว่า 1 ราย กรณีนี้อาจเกิดขึ้นกับการผนวกบางอย่าง เช่น การเข้าร่วมการข้ามช่อง
  • ผู้ใช้ไม่สามารถอยู่ใน 2 แถวแยกกันได้
  • เนื่องด้วยเหตุผลด้านความเป็นส่วนตัว จะใช้ได้เฉพาะตัวเลือกที่อธิบายไว้ในส่วนไวยากรณ์เท่านั้น ระบบยังไม่รองรับตัวเลือกอื่นๆ ที่อาจพบในเอกสารการค้นหา BQML CREATE MODEL ในขณะนี้

ฟังก์ชันการประเมิน

ML.EVALUATE

ใช้ฟังก์ชัน ML.EVALUATE เพื่อประเมินเมตริกโมเดล ใช้ฟังก์ชัน ML.EVALUATE กับโมเดลการถดถอยเชิงเส้นหรือการถดถอยแบบโลจิสติกได้

SELECT
  *
FROM ML.EVALUATE(MODEL `linear_model_test`);

ML.ROC_CURVE

ใช้ฟังก์ชัน ML.ROC_CURVE เพื่อประเมินเมตริกการถดถอยแบบโลจิสติกส์ ML.ROC_CURVE ประเมินเฉพาะโมเดลการถดถอยแบบโลจิสติกส์เท่านั้น

SELECT
  *
FROM ML.ROC_CURVE(MODEL `logistic_model_test`);

ฟังก์ชันการคาดการณ์

ML.PREDICT

ใช้ฟังก์ชัน ML.PREDICT เพื่อคาดการณ์ผลลัพธ์โดยใช้โมเดลได้ ผลลัพธ์ที่ได้รับโดยใช้ ML.PREDICT จะได้รับการตรวจสอบด้านความเป็นส่วนตัวเช่นเดียวกับผลการค้นหาอื่นๆ ใน Ads Data Hub ดูข้อมูลเพิ่มเติมเกี่ยวกับการตรวจสอบด้านความเป็นส่วนตัว

การถดถอยเชิงเส้น

/* This example outputs the average value for labels that the model predicted */
SELECT
  AVG(predicted_label) AS average_predicted_label
FROM
  ML.PREDICT(MODEL `linear_model_test`, TABLE tmp.linear_training_set);

การถดถอยแบบโลจิสติก

/* This example outputs the model's prediction and probabilities for said prediction over individual users. It groups by label and prediction, counting the number of users in each prediction */
SELECT
  label,
  predicted_label, /* one of the two input labels, depending on which label has the higher predicted probability */
  COUNT(*) AS num /* a tally of users */
FROM
  ML.PREDICT(MODEL `logistic_model_test`, TABLE tmp.logistic_training_set)
GROUP BY 1, 2;

ฟังก์ชันการตรวจสอบโมเดลและฟีเจอร์

ML.TRAINING_INFO

ฟังก์ชัน ML.TRAINING_INFO ให้คุณดูข้อมูลเกี่ยวกับการทำซ้ำการฝึกของโมเดล

SELECT
  *
FROM ML.TRAINING_INFO(MODEL `logistic_model_test`);

ML.FEATURE_INFO

ฟังก์ชัน ML.FEATURE_INFO ช่วยให้คุณดูข้อมูลเกี่ยวกับฟีเจอร์อินพุตที่ใช้ในการฝึกโมเดล

SELECT
  *
FROM ML.FEATURE_INFO(MODEL `logistic_model_test`);

ML.WEIGHTS

ฟังก์ชัน ML.WEIGHTS ให้คุณดูน้ำหนักพื้นฐานที่โมเดลหนึ่งใช้ในระหว่างการคาดการณ์

SELECT
  *
FROM ML.WEIGHTS(MODEL `linear_model_test`);

ตัวอย่าง

สร้างโมเดล

ตัวอย่างต่อไปนี้ทั้งหมดใช้ตารางตัวอย่าง natality เพื่อสาธิตวิธีการสร้างโมเดล

ข้อมูลการฝึกในการเลือกภายใน (เชิงเส้น)

ตัวอย่างต่อไปนี้ใช้น้ำหนักแรกเกิด เพศ สัปดาห์การตั้งครรภ์ อายุของแม่ และเชื้อชาติของแม่ เพื่อคาดการณ์น้ำหนักแรกเกิดของเด็ก

CREATE MODEL `natality_model`
OPTIONS
  (model_type='adh_linear_regression') AS
SELECT
  weight_pounds as label,
  is_male,
  gestation_weeks,
  mother_age,
  CAST(mother_race AS string) AS mother_race
FROM
  `bigquery-public-data.samples.natality`
WHERE
  weight_pounds IS NOT NULL

ข้อมูลการฝึกในการเลือกภายใน (โลจิสติก)

ตัวอย่างต่อไปนี้ใช้น้ำหนักแรกเกิด เพศ สัปดาห์การตั้งครรภ์ อายุของแม่ และเชื้อชาติของแม่ในการคาดการณ์เพศของเด็ก

CREATE MODEL `natality_model`
OPTIONS
  (model_type='adh_logistic_regression') AS
SELECT
  weight_pounds,
  is_male as label,
  gestation_weeks,
  mother_age,
  CAST(mother_race AS string) AS mother_race
FROM
  `bigquery-public-data.samples.natality`
WHERE
  weight_pounds IS NOT NULL