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

stochasticLogisticRegression

أُضيفت في: v20.1.0 تُنفِّذ هذه الدالة الانحدار اللوجستي العشوائي. يمكن استخدامها في مسائل التصنيف الثنائي، وتدعم المعلمات المخصّصة نفسها مثل stochasticLinearRegression وتعمل بالطريقة نفسها. الاستخدام تُستخدم هذه الدالة على خطوتين:
  1. التدريب
للتدريب، يمكن استخدام استعلام مثل هذا:
CREATE TABLE IF NOT EXISTS train_data
(
    param1 Float64,
    param2 Float64,
    target Float64
) ENGINE = Memory;

CREATE TABLE your_model ENGINE = Memory AS SELECT
stochasticLogisticRegression(0.1, 0.0, 5, 'SGD')(target, x1, x2)
AS state FROM train_data;
هنا، نحتاج أيضًا إلى إدراج البيانات في جدول train_data. عدد المعاملات غير ثابت، إذ يعتمد فقط على عدد الوسيطات المُمرَّرة إلى logisticRegressionState. ويجب أن تكون جميعها قيمًا رقمية. لاحظ أن العمود الذي يحتوي على القيمة المستهدفة (التي نريد أن يتعلم النموذج التنبؤ بها) يُدرَج باعتباره الوسيطة الأولى. يجب أن تكون التسميات المتوقعة ضمن المجال [-1, 1].
  1. التنبؤ
باستخدام الحالة المحفوظة، يمكننا التنبؤ باحتمال أن يحمل كائنٌ ما التسمية 1.
WITH (SELECT state FROM your_model) AS model SELECT
evalMLMethod(model, param1, param2) FROM test_data
سيُرجع الاستعلام عمودًا من الاحتمالات. لاحظ أن الوسيط الأول للدالة evalMLMethod هو كائن AggregateFunctionState، تليه أعمدة السمات. يمكننا أيضًا تعيين حدٍّ للاحتمال، مما يُصنِّف العناصر ضمن فئات مختلفة.
SELECT result < 1.1 AND result > 0.5 FROM
(WITH (SELECT state FROM your_model) AS model SELECT
evalMLMethod(model, param1, param2) AS result FROM test_data)
حينئذٍ ستكون النتيجة هي التسميات. test_data هو جدول مثل train_data، لكنه قد لا يحتوي على القيمة المستهدفة. الصيغة
stochasticLogisticRegression([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 قدرًا أكبر قليلًا من العمليات الحسابية والذاكرة، لكنهما مفيدان من حيث سرعة التقارب واستقرار أساليب الانحدار المتدرج العشوائي. String
  • target — تسميات التصنيف الثنائي المستهدفة. يجب أن تكون ضمن المجال [-1, 1]. Float
  • x1, x2, ... — قيم السمات (المتغيرات المستقلة). يجب أن تكون جميعها عددية. Float
القيمة المعادة تعيد أوزان نموذج الانحدار اللوجستي المدرَّب. استخدم evalMLMethod لإجراء التنبؤات، إذ يعيد احتمالات انتماء الكائن إلى الفئة ذات التسمية 1. Array(Float64) أمثلة تدريب نموذج
Query
CREATE TABLE your_model
ENGINE = MergeTree
ORDER BY tuple()
AS SELECT
stochasticLogisticRegressionState(1.0, 1.0, 10, '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 probability values for test data
التصنيف بالعتبة
Query
SELECT result < 1.1 AND result > 0.5
FROM (
WITH (SELECT state FROM your_model) AS model SELECT
evalMLMethod(model, x1, x2) AS result FROM test_data)
Response
Returns binary classification labels using probability threshold
انظر أيضًا
آخر تعديل في ٢٥ يونيو ٢٠٢٦