الانتقال إلى المحتوى الرئيسي

stochasticLinearRegression

أُضيفت في: v20.1.0 تُنفِّذ هذه الدالة الانحدار الخطي العشوائي. وتدعم معلمات مخصّصة لما يلي:
  • معدل التعلّم
  • معامل الانتظام L2
  • حجم الدفعة المصغّرة
كما توفّر عدة طرائق لتحديث الأوزان:
  • Adam (المستخدم افتراضيًا)
  • SGD بسيط
  • Momentum
  • Nesterov
الاستخدام تُستخدم هذه الدالة على خطوتين: ملاءمة النموذج والتنبؤ ببيانات جديدة.
  1. الملاءمة
لإجراء الملاءمة، يمكن استخدام استعلام مثل هذا:
CREATE TABLE IF NOT EXISTS train_data
(
    param1 Float64,
    param2 Float64,
    target Float64
) ENGINE = Memory;

CREATE TABLE your_model ENGINE = Memory AS SELECT
stochasticLinearRegressionState(0.1, 0.0, 5, 'SGD')(target, x1, x2)
AS state FROM train_data;
هنا، نحتاج أيضًا إلى إدراج البيانات في الجدول train_data. عدد المَعلمات ليس ثابتًا؛ إذ يعتمد فقط على عدد الوسائط المُمرَّرة إلى linearRegressionState. ويجب أن تكون جميعها قيمًا رقمية. لاحظ أن العمود الذي يحتوي على القيمة المستهدفة (التي نريد أن يتعلّم التنبؤ بها) يُدرَج باعتباره الوسيطة الأولى.
  1. التنبؤ
بعد حفظ حالة في الجدول، يمكننا استخدامها عدة مرات للتنبؤ، أو حتى دمجها مع حالات أخرى وإنشاء نماذج جديدة أفضل.
WITH (SELECT state FROM your_model) AS model SELECT
evalMLMethod(model, x1, x2) FROM test_data
سيُرجع الاستعلام عمودًا من القيم المتوقعة. لاحظ أن الوسيط الأول في evalMLMethod هو كائن AggregateFunctionState، تليه أعمدة السمات. test_data هو جدول مثل train_data، لكنه قد لا يحتوي على القيمة المستهدفة. ملاحظات
  1. لدمج نموذجين، يمكن للمستخدم إنشاء استعلام مثل هذا:
SELECT state1 + state2 FROM your_models
حيث يحتوي جدول your_models على كلا النموذجين. سيُرجع هذا الاستعلام كائن AggregateFunctionState جديدًا.
  1. يمكنك جلب أوزان النموذج المُنشأ لاستخدامها لأغراضك الخاصة من دون حفظ النموذج إذا لم يُستخدم المركِّب -State.
SELECT stochasticLinearRegression(0.01)(target, param1, param2)
FROM train_data
سيُدرِّب استعلام كهذا النموذج ويُرجع أوزانه: القيم الأولى هي الأوزان التي تقابل معاملات النموذج، أما الأخيرة فهي الانحياز. لذا، في المثال أعلاه، سيُرجع الاستعلام عمودًا يحتوي على 3 قيم. البنية
stochasticLinearRegression([learning_rate, l2_regularization_coef, mini_batch_size, method])(target, x1, x2, ...)
الوسيطات
  • learning_rate — المعامل المرتبط بطول الخطوة عند تنفيذ خطوة من الانحدار المتدرج. قد يؤدي معدّل تعلّم كبير جدًا إلى أوزان لا نهائية للنموذج. القيمة الافتراضية هي 0.00001. Float64
  • l2_regularization_coef — معامل الانتظام L2، وقد يساعد في منع فرط التكيّف. القيمة الافتراضية هي 0.1. Float64
  • mini_batch_size — يحدّد عدد العناصر التي تُحسب تدرجاتها وتُجمع لتنفيذ خطوة واحدة من الانحدار المتدرج. يستخدم الانحدار العشوائي البحت عنصرًا واحدًا، لكن استخدام دفعات صغيرة (حوالي 10 عناصر) يجعل خطوات التدرج أكثر استقرارًا. القيمة الافتراضية هي 15. UInt64
  • method — طريقة تحديث الأوزان: Adam (افتراضيًا)، SGD، Momentum، Nesterov. يتطلب Momentum وNesterov قدرًا أكبر قليلًا من العمليات الحسابية والذاكرة، لكنهما مفيدان من حيث سرعة التقارب واستقرار أساليب الانحدار المتدرج العشوائي. const String
  • target — القيمة المستهدفة (المتغير التابع) المطلوب تعلّم التنبؤ بها. يجب أن تكون رقمية. Float*
  • x1, x2, ... — قيم السمات (المتغيرات المستقلة). يجب أن تكون جميعها رقمية. Float*
القيمة المعادة يعيد أوزان نموذج الانحدار الخطي المدرَّب. تمثل القيم الأولى معاملات النموذج، أما الأخيرة فهي الانحياز. استخدم evalMLMethod لإجراء التنبؤات. Array(Float64) أمثلة تدريب نموذج
Query
CREATE TABLE your_model
ENGINE = Memory
AS SELECT
stochasticLinearRegressionState(0.1, 0.0, 5, 'SGD')(target, x1, x2)
AS state FROM train_data
Response
Saves trained model state to table
إجراء التنبؤات
Query
WITH (SELECT state FROM your_model) AS model SELECT
evalMLMethod(model, x1, x2) FROM test_data
Response
Returns predicted values for test data
استخراج أوزان النموذج
Query
SELECT stochasticLinearRegression(0.01)(target, x1, x2) FROM train_data
Response
Returns model weights without saving state
انظر أيضًا
آخر تعديل في ٢٥ يونيو ٢٠٢٦