Skip to main content

evalMLMethod

لإجراء التنبؤ باستخدام نماذج الانحدار المُقدَّرة، تُستخدَم الدالة evalMLMethod. راجع الرابط ضمن linearRegression.

stochasticLinearRegression

تُنفِّذ دالة التجميع stochasticLinearRegression أسلوب الانحدار المتدرّج العشوائي باستخدام نموذج خطي ودالة خسارة MSE. وتستخدم evalMLMethod للتنبؤ بالبيانات الجديدة.

stochasticLogisticRegression

تُنفِّذ دالة التجميع stochasticLogisticRegression أسلوب الهبوط التدريجي العشوائي لمشكلة التصنيف الثنائي. وتستخدم evalMLMethod للتنبؤ بالبيانات الجديدة.

naiveBayesClassifier

يُصنّف النص المُدخل باستخدام نموذج Naive Bayes مع n-grams وتنعيم لابلاس. يجب تهيئة النموذج في ClickHouse قبل استخدامه. البنية
الوسائط
  • model_name — اسم النموذج المُعَدّ مسبقًا. String يجب أن يكون النموذج معرّفًا في ملفات تكوين ClickHouse (انظر أدناه).
  • input_text — النص المراد تصنيفه. String تُعالَج المدخلات تمامًا كما أُدخِلت (مع الحفاظ على حالة الأحرف وعلامات الترقيم).
القيمة المعادة
  • معرّف الفئة المتوقعة على هيئة عدد صحيح غير موقّع. UInt32 تتوافق معرّفات الفئات مع التصنيفات المحددة أثناء إنشاء النموذج.
مثال صنّف نصًا باستخدام نموذج لاكتشاف اللغة:
قد تمثل النتيجة 0 اللغة الإنجليزية، بينما قد تشير 1 إلى الفرنسية — إذ تعتمد دلالات الفئات على بيانات التدريب لديك.

تفاصيل التنفيذ

الخوارزمية تستخدم خوارزمية التصنيف Naive Bayes مع تنعيم لابلاس للتعامل مع تسلسلات n-gram غير المرصودة، وذلك بالاستناد إلى احتمالات n-gram كما هو موضح هنا. الميزات الرئيسية
  • تدعم تسلسلات n-gram بأي طول
  • ثلاثة أوضاع للتقسيم إلى رموز:
    • byte: يعمل على البايتات الخام. كل بايت يُعد رمزًا واحدًا.
    • codepoint: يعمل على القيم القياسية في Unicode المفككة من UTF‑8. كل نقطة ترميز تُعد رمزًا واحدًا.
    • token: يُقسِّم عند تتابعات المسافات البيضاء في Unicode (regex \s+). تكون الرموز سلاسل فرعية غير بيضاء؛ وتُعد علامات الترقيم جزءًا من الرمز إذا كانت ملاصقة له (على سبيل المثال، “you?” يُعد رمزًا واحدًا).

إعداد النموذج

يمكنك العثور على شيفرة مصدرية نموذجية لإنشاء نموذج Naive Bayes لاكتشاف اللغة هنا. بالإضافة إلى ذلك، تتوفر نماذج نموذجية وملفات التكوين المرتبطة بها هنا. فيما يلي مثال على إعداد نموذج Naive Bayes في ClickHouse:
معلمات الإعداد دليل تدريب النموذج تنسيق الملف بتنسيق مقروء بشريًا، بالنسبة إلى n=1 ووضع token، قد يبدو النموذج كما يلي:
بالنسبة إلى n=3 ونمط codepoint، فقد يبدو الأمر كما يلي:
لا يستخدم ClickHouse التنسيق المقروء للبشر مباشرةً؛ إذ يجب تحويله إلى التنسيق الثنائي الموضّح أدناه. تفاصيل التنسيق الثنائي يُخزَّن كل n-gram كما يلي:
  1. class_id بحجم 4 بايت (UInt، little-endian)
  2. طول بايتات n-gram بحجم 4 بايت (UInt، little-endian)
  3. بايتات n-gram الخام
  4. count بحجم 4 بايت (UInt، little-endian)
متطلبات المعالجة المسبقة قبل إنشاء النموذج من مجموعة المستندات، يجب إجراء معالجة مسبقة للمستندات لاستخراج n-grams وفقًا للقيمتين المحددتين mode وn. توضّح الخطوات التالية هذه المعالجة المسبقة:
  1. أضف علامات الحدود في بداية كل مستند ونهايته استنادًا إلى وضع تقطيع الرموز:
    • Byte: 0x01 (البداية)، 0xFF (النهاية)
    • نقطة ترميز: U+10FFFE (البداية)، U+10FFFF (النهاية)
    • Token: <s> (البداية)، </s> (النهاية)
    ملاحظة: تُضاف (n - 1) من الرموز في كلٍّ من بداية المستند ونهايته.
  2. Example على n=3 في وضع token:
    • المستند: "ClickHouse is fast"
    • تتم معالجته على النحو التالي: <s> <s> ClickHouse is fast </s> </s>
    • مقاطع trigram المُولَّدة:
      • <s> <s> ClickHouse
      • <s> ClickHouse is
      • ClickHouse is fast
      • is fast </s>
      • fast </s> </s>
لتبسيط إنشاء النموذج لوضعي byte ونقطة ترميز، قد يكون من المناسب أولًا تقسيم المستند إلى رموز (قائمة من قيم byte في وضع byte، وقائمة من قيم نقطة ترميز في وضع نقطة ترميز). بعد ذلك، أضِف n - 1 من رموز البداية في أول المستند وn - 1 من رموز النهاية في آخره. وأخيرًا، أنشئ n-grams واكتبها في الملف المُسلسَل.

evalMLMethod

أُضيفت في: v20.1.0 تُطبِّق نموذج تعلّم آلي مُدرَّبًا على سمات الإدخال لتوليد تنبؤات. الصيغة
المعاملات القيمة المُعادة تُرجِع القيمة المتوقعة استنادًا إلى النموذج المُدرَّب. Float64 أمثلة مثال على الاستخدام
Query
Response

naiveBayesClassifier

أُضيف في: v25.11.0 يُصنّف النص المُدخل باستخدام قاموس NAIVE_BAYES. ويُرجع قيمة الفئة المتوقعة نفسها التي تُرجعها dictGet(dictionary_name, class_attribute, input_text)، حيث إن class_attribute هو اسم سمة تصنيف الفئة المُهيأة في التخطيط الخاصة بالقاموس. وعلى عكس dictGet، يكون نوع النتيجة دائمًا UInt32 بدلًا من النوع المُعلن لسمة الفئة، ويجب أن يكون input_text من النوع String (ولا يُطبَّق أي تحويل لنوع المفتاح).
هذه الدالة غير حتمية: قد تُرجع نتائج مختلفة للوسائط نفسها.
الصياغة
المعاملات
  • dictionary_name — اسم قاموس يستخدم التخطيط NAIVE_BAYES. String
  • input_text — النص المراد تصنيفه. String
القيمة المعادة معرّف الفئة المتوقعة. UInt32 أمثلة تصنيف النص
Query
Response

naiveBayesClassifierWithAllProbs

أُضيفت في: v26.7.0 تُصنِّف نص الإدخال باستخدام قاموس NAIVE_BAYES وتُرجِع جميع الفئات مع احتمالاتها، مرتبة من الأكثر احتمالًا إلى الأقل.
هذه الدالة غير حتمية: قد تُرجِع نتائج مختلفة للوسيطات نفسها.
الصيغة
المعاملات
  • dictionary_name — اسم قاموس ذي تخطيط NAIVE_BAYES. String
  • input_text — النص المراد تصنيفه. String
القيمة المُعادة مصفوفة من عناصر Tuple بالتنسيق (معرّف_الفئة، الاحتمال)، مرتبة من الأعلى احتمالًا إلى الأقل. Array(Tuple(UInt32, Float64)) أمثلة كل احتمالات الفئات
Query
Response

naiveBayesClassifierWithProb

أُضيف في: v26.7.0 يُصنّف النص المُدخل باستخدام قاموس NAIVE_BAYES ويُرجع الفئة المتوقعة مع احتمالها.
هذه الدالة غير حتمية: قد تُرجع نتائج مختلفة للوسيطات نفسها.
البنية
الوسائط
  • dictionary_name — اسم قاموس بتخطيط NAIVE_BAYES. String
  • input_text — النص المراد تصنيفه. String
القيمة المُعادة Tuple يتكوّن من (class_id, probability). Tuple(UInt32, Float64) أمثلة التصنيف مع الاحتمال
Query
Response
آخر تعديل في ٢٣ يوليو ٢٠٢٦