การคาดการณ์อนุกรมเวลาใน Snowflake โดยใช้ SQL

Nov 25 2022
การพยากรณ์ความต้องการ การจัดการห่วงโซ่อุปทานและสินค้าคงคลัง การวางแผนทางการเงินมีความสำคัญต่อการดำเนินธุรกิจ Modelstar ให้คุณทำเช่นนั้นใน Snowflake ด้วย SQL เพียง 1 บรรทัด

การพยากรณ์ความต้องการ การจัดการห่วงโซ่อุปทานและสินค้าคงคลัง การวางแผนทางการเงินมีความสำคัญต่อการดำเนินธุรกิจ Modelstar ให้คุณทำเช่นนั้นใน Snowflake ด้วย SQL เพียง 1 บรรทัด

ภาพรวมผลลัพธ์ของบล็อก ภาพโดยผู้เขียน

Time Series Forecasting และกรณีการใช้งานคืออะไร?

การคาดการณ์อนุกรมเวลาเป็นเทคนิคในการทำนายค่าตามข้อมูลตัวอย่างเวลาในอดีต

การพยากรณ์เป็นพื้นฐานสำหรับ การจัดการ

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

ความท้าทายทางเทคนิคสำหรับการพยากรณ์

การพยากรณ์เป็นการประยุกต์ใช้การวิเคราะห์อนุกรมเวลา มีองค์ประกอบหลายประการที่ต้องพิจารณา:

  • ฤดูกาล: การเปลี่ยนแปลงเป็นระยะเมื่อเวลาผ่านไป ตัวอย่าง: วันหยุดฤดูร้อนและฤดูหนาวเป็นประจำทุกปี หรือมีการบริโภคกาแฟในตอนเช้ามากขึ้นทุกวัน
  • แนวโน้ม: การเปลี่ยนแปลงที่ไม่ใช่เป็นระยะอย่างต่อเนื่อง ตัวอย่าง: การเติบโตของยอดขายของบริษัทในช่วง 5 ปีที่ผ่านมา
  • เหตุการณ์ก่อกวน: การเปลี่ยนแปลงอย่างกะทันหัน อาจเกิดจากปัจจัยที่คาดการณ์ได้ เช่น วันหยุดหรือการบำรุงรักษาบริการ และปัญหาที่คาดเดาไม่ได้ เช่น ข้อผิดพลาดแบบสุ่มหรือจุดบกพร่อง

ความท้าทายทางเทคนิคของการนำไปใช้งาน

Python มีระบบนิเวศที่สมบูรณ์เพื่อใช้การเรียนรู้ของเครื่องและอัลกอริทึมการพยากรณ์ ความสามารถใหม่ของ Snowpark ของ Snowflake ที่นำ Python มาสู่คลังข้อมูลของคุณ การใช้ UDF เพื่อเรียกใช้ Python ใน SQL เป็นตัวเปลี่ยนเกมในการแปลงที่คุณสามารถทำได้กับข้อมูลของคุณ อย่างไรก็ตาม อาจเป็นเรื่องที่น่ากังวลและใช้เวลานาน หากคุณต้องการใช้โซลูชันปลายทางเพื่อทำการคาดการณ์ Modelstarแก้ปัญหานี้โดยการจัดหาโซลูชันที่มีประสิทธิภาพเพื่อนำพลังพิเศษของ Python มาสู่ SQL

Modelstarเป็นโครงการโอเพ่นซอร์สและสร้างขึ้นจากคุณสมบัติที่เพิ่งเปิดตัวจาก Snowflake เช่น Snowpark โดยจะจัดการการขึ้นต่อกัน การสร้างแบบจำลอง และไฟล์ I/O ในการคำนวณ Snowflake โดยอัตโนมัติ

SQL 1-liner สำหรับ การคาดการณ์

Modelstarช่วยให้คุณจัดส่งและจัดการแบบจำลองการคาดการณ์และแสดงภาพผลลัพธ์การสร้างแบบจำลองด้วย SQL 1 บรรทัดภายใน Snowflake ภายใต้ประทุน Modelstar ให้อัลกอริทึมการคาดการณ์ที่สร้างไว้ล่วงหน้า และแสดงเป็นขั้นตอนการจัดเก็บ SQL ในฐานข้อมูลของคุณ ในตัวอย่างนี้ เราจะใช้univariate_time_series_forecast( API doc ) API นี้อ้างอิงจากไลบรารีโอเพ่นซอร์สProphetซึ่งเป็นหนึ่งในอัลกอริทึมการคาดการณ์ที่ใช้กันอย่างแพร่หลายในอุตสาหกรรม

บทช่วยสอนนี้มีขั้นตอนในการสร้างแบบจำลองการคาดการณ์อนุกรมเวลาและรายงาน มันครอบคลุม:

  • แนวคิดพื้นฐาน: เกี่ยวกับกรณีการใช้งานและเทคโนโลยีการคาดการณ์ยอดขาย
  • เครื่องมือ Modelstar CLI: คู่มือการติดตั้ง Modelstar
  • univariate_time_series_forecastไวยากรณ์ SQL: SQL 1-liner เพื่อทำการพยากรณ์
  • รายงานการคาดการณ์: ผลลัพธ์การคาดการณ์พร้อมให้ทีมธุรกิจใช้
รายงานของเรา ภาพโดยผู้เขียน

การเตรียมการสำหรับการ เดินทาง

นี่คือคู่มือการเริ่มต้นอย่างรวดเร็วเพื่อตั้งค่า Modelstar หากคุณเป็นผู้ใช้ Modelstar เป็นครั้งแรก

ขั้นตอนที่ 1: ติดตั้ง Modelstar

$ pip install modelstar

ตรวจสอบการติดตั้งด้วยการตรวจสอบเวอร์ชันอย่างรวดเร็ว:

$ modelstar --version

ขั้นตอนที่ #2: เริ่มต้น โครงการ

$ modelstar init forecast_project

ตอนนี้คุณจะเห็นforecast_projectโฟลเดอร์ที่สร้างขึ้นในไดเร็กทอรีการทำงานของคุณ

ขั้นตอนที่ #3: กำหนดค่า เซสชัน

ภายในforecast_projectโฟลเดอร์ ค้นหาไฟล์modelstar.config.yamlและเปิดด้วยตัวแก้ไขที่คุณชื่นชอบ เพิ่มข้อมูลบัญชี Snowflake และข้อมูลรับรองของคุณ รู้สึกอิสระที่จะตั้งชื่อเซสชันด้วยชื่อใดก็ได้ ในตัวอย่างนี้ เราใช้snowflake-test. ข้อมูลประจำตัวในไฟล์นี้ใช้เพื่อเชื่อมต่อกับคลังข้อมูล Snowflake ของคุณ (หมายเหตุ: อย่าคอมมิตไฟล์ modelstar.config.yaml ใน CI/CD การควบคุมเวอร์ชันของคุณ)

# ./modelstar.config.yaml
# MODELSTAR CONFIGURATION FILE
---
sessions:
    - name: snowflake-test
      connector: snowflake
      config:
          account: WQA*****
          username: <username>
          password: <password>
          database: MODELSTAR_TEST
          schema: PUBLIC
          stage: test
          warehouse: COMPUTE_WH

ขั้นตอนที่ #4: ปิง เกล็ดหิมะ

ขณะนี้เราสามารถเริ่มเซสชัน Modelstar จากเทอร์มินัลของคุณ ภายในไดเร็กทอรีของโครงการ Modelstar ที่สร้างขึ้นใหม่ (ในตัวอย่างของเราคือ./forecast_project/) ให้เรียกใช้สิ่งนี้:

$ modelstar use snowflake-test

ping ที่ประสบความสำเร็จควรนำไปสู่สิ่งนี้:

เอาต์พุตคอนโซล ภาพโดยผู้เขียน

ขั้นตอนที่ #5: ลงทะเบียนอัลกอริทึมการคาดการณ์กับ Snowflake

Modelstar ให้อัลกอริทึมการคาดการณ์ที่พร้อมใช้งานทันทีและจัดการการอ้างอิงสำหรับอัลกอริทึมนี้ ดังนั้นคุณไม่จำเป็นต้องทำ ในการทำให้สิ่งนี้พร้อมใช้งานในคลังสินค้า Snowflake ให้รันคำสั่งต่อไปนี้:

$ modelstar register forecast:univariate_time_series_forecast

เอาต์พุตคอนโซล ภาพโดยผู้เขียน

ขั้นตอนที่ #6: อัปโหลดข้อมูลการขายตัวอย่างไปยัง Snowflake (ไม่บังคับ หากคุณใช้ชุดข้อมูลของคุณเอง )

หากคุณต้องการลองใช้อัลกอริทึมการคาดการณ์ในชุดข้อมูลการขายตัวอย่าง ให้รันคำสั่งนี้เพื่อสร้างตารางข้อมูลในคลังข้อมูลของคุณ คุณสามารถข้ามขั้นตอนนี้ได้หากต้องการใช้ข้อมูลของคุณเอง

$ modelstar create table sample_data/time_series_data.csv:TS_DATA_TABLE

สร้างแบบจำลองการคาดการณ์โดยใช้ SQL 1- linear

เรียกใช้สคริปต์นี้ใน Snowflake Worksheet

ใช้คำสั่งต่อไปนี้ใน Snowflake เพื่อสร้างแบบจำลองการคาดการณ์ (ตัวอย่างด้านล่างใช้ข้อมูลตัวอย่างที่อัปโหลดในขั้นตอนที่ #6):

CALL UNIVARIATE_TIME_SERIES_FORECAST('TS_DATA_TABLE', 'DS', 'Y', 40, 'M');

เกล็ดหิมะ Snowsight ภาพโดยผู้เขียน

เพื่อเรียกใช้อัลกอริทึมการคาดการณ์กับ ข้อมูล

ภายใต้ประทุน อัลกอริทึมการคาดการณ์จะทำงานภายใน Snowflake เป็นขั้นตอนการจัดเก็บ ใช้พารามิเตอร์ต่อไปนี้:

หากต้องการกำหนดค่าระยะเวลาการคาดการณ์ของคุณเอง ให้ตรวจสอบเอกสาร API นี้เพื่อดูรายการนามแฝงของหน่วยทั้งหมด

ตรวจสอบ ผลลัพธ์

หลังจากการฝึกโมเดลเสร็จสิ้น ในหน้าต่าง Snowflake Results การรันที่สำเร็จควรแสดงสตริง json ที่คล้ายกับสิ่งนี้:

{
    "return_table": "RESULT_UNIVARIATE_TIME_SERIES_FORECAST",
    "run_id": "3NvQXnHQqUdYG4Fu"
}

ตรวจสอบ ตาราง

ตรวจสอบตารางผลลัพธ์จากการเรียกใช้โดยใช้:

SELECT * FROM RESULT_UNIVARIATE_TIME_SERIES_FORECAST;

  • DS( datetime): วันที่และเวลา
  • Y_FORECAST, YHAT_LOWER, YHAT_UPPER(ลอย): ค่าเฉลี่ย พันธะล่างและบนของค่าที่ทำนายไว้ (ดูUncertainty Intervalsความหมายในส่วนอภิธานศัพท์)
  • เกล็ดหิมะ Snowsight ภาพโดยผู้เขียน

รายงานที่บันทึกข้อมูลเกี่ยวกับการรันด้วยอาร์ติแฟกต์แมชชีนเลิร์นนิงจะสร้างขึ้นโดยอัตโนมัติด้วย Modelstar หากต้องการตรวจสอบรายงาน เพียงเรียกใช้คำสั่งนี้ในเครื่องคอมพิวเตอร์ของคุณ:

$ modelstar check <run_id>

รายงานจะแสดงในเบราว์เซอร์ของคุณ:

รายงานนางแบบ ภาพโดยผู้เขียน

มีอะไรอยู่ใน รายงาน

รายงานประกอบด้วย 3 ส่วน:

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

การคาดการณ์ในตัวอย่างและนอกตัวอย่าง:จากการคาดการณ์ในตัวอย่าง คุณสามารถตรวจสอบได้ว่าแบบจำลองการคาดการณ์เหมาะสมกับข้อมูลจริงเพียงใด การคาดการณ์นอกตัวอย่างแสดงการทำนายอนาคต

ช่วงความไม่แน่นอน:แถบระหว่างขอบเขตบนและล่าง หมายความว่ามีความเป็นไปได้ 80% ที่ค่าจริงจะอยู่ในช่วงนั้น ความต้องการความแน่นอนที่สูงขึ้นจะนำไปสู่วงกว้าง (ดูบทความของ Bartosz ) ความไม่แน่นอนก็เพิ่มขึ้นเช่นกันเมื่อเราก้าวต่อไปในอนาคต ซึ่งนำไปสู่ขอบเขตที่กว้างขึ้นตามหน้าที่ของเวลา

บทสรุป

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

ตรวจสอบ พื้นที่เก็บข้อมูล GitHubของ Modelstar : ที่นี่ ติดดาวเพื่อรับการอัปเดตล่าสุด ในกรณีที่มีข้อบกพร่อง ปัญหา หรือคำขอคุณสมบัติสำหรับกรณีการใช้งานของคุณ โปรดติดต่อGithubหรือเปิดปัญหาบนGitHub

  • ที่เก็บ GitHub:https://github.com/modelstar-labs/modelstar
  • เอกสาร:https://modelstar.io/docs/quickstart/