סיווג היברידי קוונטי-מוגבר עם אנסמבלים (תהליך עבודה ליציבות רשת חשמל)
הערכת שימוש: 20 דקות בזמן QPU עבור כל עבודה על מעבד Eagle r3. (הערה: זו הערכה בלבד. זמן הריצה שלך עשוי להשתנות.)
רקע
מדריך זה מדגים תהליך עבודה היברידי קוונטי-קלאסי המשפר אנסמבל קלאסי באמצעות שלב אופטימיזציה קוונטי. באמצעות "Singularity Machine Learning – Classification" של Multiverse Computing (פונקציית Qiskit), אנו מאמנים מאגר של לומדים קונבנציונליים (לדוגמה, עצי החלטה, k-NN, רגרסיה לוגיסטית) ולאחר מכן משכללים את המאגר עם שכבה קוונטית כדי לשפר גיוון והכללה. המטרה היא מעשית: במשימת ניבוי יציבות רשת חשמל אמיתית, אנו משווים בסיס קלאסי חזק עם חלופה מאופטמת קוונטית תחת אותן חלוקות נתונים, כך שתוכלו לראות היכן השלב הקוונטי עוזר ומה המחיר שלו.
מדוע זה חשוב: בחירת תת-קבוצה טובה ממספר רב של לומדים חלשים היא בעיה קומבינטורית שגדלה במהירות עם גודל האנסמבל. היוריסטיקות קלאסיות כמו boosting, bagging ו-stacking מתפקדות היטב בסקאלות בינוניות אך יכולות להתקשות לחקור באופן יעיל ספריות גדולות ומיותרות של מודלים. הפונקציה משלבת אלגוריתמים קוונטיים - במיוחד QAOA (ובאופן אופציונלי VQE בתצורות אחרות) - כדי לחפש במרחב זה בצורה יעילה יותר לאחר שהלומדים הקלאסיים אומנו, מה שמגביר את הסיכוי למצוא תת-קבוצה קומפקטית ומגוונת שמכללה טוב יותר.
חשוב לציין, סקאלת הנתונים אינה מוגבלת על ידי qubits. העבודה הכבדה על הנתונים - עיבוד מקדים, אימון מאגר הלומדים והערכה - נשארת קלאסית ויכולה לטפל במיליוני דוגמאות. Qubits רק קובעים את גודל האנסמבל המשמש בשלב הבחירה הקוונטי. הפרדה זו היא מה שהופך את הגישה לישימה על חומרה של היום: אתם שומרים על תהליכי עבודה מוכרים של scikit-learn עבור נתונים ואימון מודלים תוך קריאה לשלב הקוונטי דרך ממשק פעולה נקי ב-Qiskit Functions.
בפועל, בעוד שניתן לספק לאנסמבל סוגי לומדים שונים (לדוגמה, עצי החלטה, רגרסיה לוגיסטית או k-NN), עצי החלטה נוטים להציג ביצועים הטובים ביותר. האופטימייזר מעדיף באופן עקבי חברי אנסמבל חזקים יותר - כאשר לומדים הטרוגניים מסופקים, מודלים חלשים יותר כמו רגרסורים ליניאריים בדרך כלל נגזמים לטובת כאלה אקספרסיביים יותר כמו עצי החלטה.
מה תעשו כאן: הכנה ואיזון של מערך נתוני יציבות רשת חשמל; הקמת בסיס AdaBoost קלאסי; הרצת מספר תצורות קוונטיות שמשנות את רוחב האנסמבל והרגולריזציה; הרצה על סימולטורים של IBM® או QPUs דרך Qiskit Serverless; והשוואת דיוק, precision, recall ו-F1 בכל הרצות. לאורך הדרך, תשתמשו בדפוס הפעולה של הפונקציה (create, fit, predict, fit_predict, create_fit_predict) ובקרות מפתח:
- סוגי regularization:
onsite(λ) לדלילות ישירה ו-alphaלטרייד-אוף מבוסס יחס בין תנאי אינטראקציה ו-onsite - Auto-regularization: הגדרת
regularization="auto"עם יחס בחירה יעד כדי להתאים דלילות אוטומטית - אפשרויות אופטימייזר: סימולטור מול QPU, חזרות, אופטימייזר קלאסי והאפשרויות שלו, עומק טרנספילציה והגדרות sampler/estimator של runtime
ביצועי ייחוס בתיעוד מראים שהדיוק משתפר כאשר מספר הלומדים (qubits) עולה בבעיות מאתגרות, כאשר המסווג הקוונטי משתווה או עולה על אנסמבל קלאסי דומה. במדריך זה, תשחזרו את תהליך העבודה מקצה לקצה ותבחנו מתי הגדלת רוחב האנסמבל או מעבר ל-regularization אדפטיבי מניבים F1 טוב יותר בשימוש סביר במשאבים. התוצאה היא תצוגה מבוססת של איך שלב אופטימיזציה קוונטי יכול להשלים, במקום להחליף, למידת אנסמבל קלאסית ביישומים אמיתיים.
דרישות
לפני תחילת מדריך זה, ודאו שהחבילות הבאות מותקנות בסביבת Python שלכם:
qiskit[visualization]~=2.1.0qiskit-serverless~=0.24.0qiskit-ibm-runtime v0.40.1qiskit-ibm-catalog~=0.8.0scikit-learn==1.5.2pandas>=2.0.0,<3.0.0imbalanced-learn~=0.12.3
הגדרה
בסעיף זה, אנו מאתחלים את לקוח Qiskit Serverless וטוענים את פונקציית Singularity Machine Learning – Classification שמסופקת על ידי Multiverse Computing. עם Qiskit Serverless, אתם יכולים להריץ תהליכי עבודה היברידיים קוונטיים-קלאסיים על תשתית ענן מנוהלת של IBM מבלי לדאוג לניהול משאבים. תזדקקו למפתח API של IBM Quantum Platform ושם משאב הענן שלכם (CRN) כדי לאמת ולגשת ל-Qiskit Functions.
הורדת מערך הנתונים
כדי להריץ מדריך זה, אנו משתמשים במערך נתוני סיווג יציבות רשת חשמל מעובד המכיל קריאות חיישני מערכת חשמל מתויגות.
התא הבא יוצר אוטומטית את מבנה התיקיות הנדרש ומוריד את קבצי האימון והמבחן ישירות לסביבה שלכם באמצעות wget.
אם יש לכם את הקבצים האלה מקומית כבר, שלב זה ידרוס אותם בבטחה כדי להבטיח עקביות גרסה.
# Added by doQumentation — required packages for this notebook
!pip install -q imbalanced-learn matplotlib numpy pandas qiskit-ibm-catalog qiskit-ibm-runtime scikit-learn
## Download dataset for Grid Stability Classification
# Create data directory if it doesn't exist
!mkdir -p data_tutorial/grid_stability
# Download the training and test sets from the official Qiskit documentation repo
!wget -q --show-progress -O data_tutorial/grid_stability/train.csv \
https://raw.githubusercontent.com/Qiskit/documentation/main/datasets/tutorials/grid_stability/train.csv
!wget -q --show-progress -O data_tutorial/grid_stability/test.csv \
https://raw.githubusercontent.com/Qiskit/documentation/main/datasets/tutorials/grid_stability/test.csv
# Check the files have been downloaded
!echo "Dataset files downloaded:"
!ls -lh data_tutorial/grid_stability/*.csv
data_tutorial/grid_ 100%[===================>] 612.94K --.-KB/s in 0.01s
data_tutorial/grid_ 100%[===================>] 108.19K --.-KB/s in 0.006s
Dataset files downloaded:
-rw-r--r-- 1 coder coder 109K Nov 8 18:50 data_tutorial/grid_stability/test.csv
-rw-r--r-- 1 coder coder 613K Nov 8 18:50 data_tutorial/grid_stability/train.csv
ייבוא חבילות נדרשות
בסעיף זה, אנו מייבאים את כל חבילות Python ומודולי Qiskit המשמשים לאורך המדריך.
אלה כוללים ספריות מדעיות ליבה לטיפול בנתונים והערכת מודלים - כמו NumPy, pandas ו-scikit-learn - יחד עם כלי ויזואליזציה ורכיבי Qiskit להרצת המודל המוגבר קוונטית.
אנו גם מייבאים את QiskitRuntimeService ו-QiskitFunctionsCatalog כדי להתחבר עם שירותי IBM Quantum® ולגשת לפונקציית Singularity Machine Learning.
from typing import Tuple
import warnings
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from imblearn.over_sampling import RandomOverSampler
from qiskit_ibm_catalog import QiskitFunctionsCatalog
from qiskit_ibm_runtime import QiskitRuntimeService
from sklearn.ensemble import AdaBoostClassifier
from sklearn.metrics import (
accuracy_score,
f1_score,
precision_score,
recall_score,
)
from sklearn.model_selection import train_test_split
warnings.filterwarnings("ignore")