الشرح
في هذه المقالة أريد أن أشارك تجربتي الخاصة مع التعلم الآلي في مستودع بيانات في Vertica.
بصراحة ، أنا لست محللًا خبيرًا قادرًا على وصف بالتفصيل مجموعة كاملة من طرق البحث وخوارزميات التنبؤ بالبيانات. لكن مع ذلك ، بصفتي خبيرًا في Vertica ولدي خبرة أساسية في ML ، سأحاول التحدث عن طرق للعمل مع التحليل التنبئي في Vertica باستخدام وظيفة الخادم المدمجة ولغة R.
آلة التعلم بالمكتبة
بدءًا من الإصدار 7 ، تم توسيع Vertica مع مكتبة Machine Learning ، والتي يمكنك من خلالها:
- قم بإعداد أمثلة البيانات للتعلم الآلي
- تدريب نماذج التعلم الآلي على البيانات المعدة ؛
- إجراء تحليل تنبؤي لبيانات التخزين على نماذج تعلم الآلة المحفوظة.
تأتي المكتبة على الفور مع تثبيت Vertica لجميع الإصدارات ، بما في ذلك المجتمع المجاني. يتم تأطير العمل معها في شكل استدعاء إلى الوظائف من تحت SQL ، والتي تم وصفها بالتفصيل في الوثائق مع أمثلة الاستخدام على البيانات التجريبية المعدة.
مثال على العمل مع ML في Vertica
كمثال بسيط لكيفية عمل ML ، أخذت البيانات التجريبية mtcars التي تعد جزءًا من مثال بيانات ML لـ Vertica. تتضمن هذه البيانات جدولين:
- mtcars_train - البيانات المعدة لنماذج التعلم آلة التدريب
- mtcars - بيانات للتحليل
دعونا نلقي نظرة على البيانات للتدريب:
=>SELECT * FROM mtcars_train;

في مجموعة البيانات على طرازات السيارات ، يتم وصف خصائصها. دعنا نحاول تدريب تعلم الآلة بحيث يمكن وفقًا لخصائص السيارات التنبؤ بنوع صندوق التروس المتضمن في السيارة - صندوق يدوي أو صندوق تروس أوتوماتيكي. للقيام بذلك ، نحتاج إلى بناء نموذج انحدار لوجستي على البيانات المعدة ، وإيجاد اعتماد نوع الصندوق في الحقل "am" وحقول وزن السيارة "وزن" ، وعدد الاسطوانات "cyl" وعدد السرعات في المربع "gear":
=>SELECT LOGISTIC_REG('logistic_reg_mtcars', 'mtcars_train', 'am', 'cyl, wt, gear'); Finished in 19 iterations
حللت الوظيفة المدعوة العلاقة بين am والحقول cyl ، wt ، gear ، وكشفت عن صيغة الاعتماد وكتبت نتيجة محاكاة الاعتماد في قاعدة بيانات Vertica في نموذج "logistic_reg_mtcars". باستخدام هذا النموذج المحفوظ ، يمكنك الآن تحليل البيانات على السيارات والتنبؤ بتوافر علب التروس الأوتوماتيكية.
يمكن الاطلاع على المعلومات المتعلقة بالنموذج:
=>SELECT GET_MODEL_SUMMARY(USING PARAMETERS model_name='logistic_reg_mtcars');

الآن نستخدم النموذج على البيانات للسيارات ، مع توفير النتيجة في جدول جديد:
=>CREATE TABLE mtcars_predict_results AS ( SELECT car_model, am, PREDICT_LOGISTIC_REG(cyl, wt, gear USING PARAMETERS model_name='logistic_reg_mtcars') AS prediction FROM mtcars );
ومقارنة القيم الحقيقية لـ am بتلك التي تم الحصول عليها في التنبؤ بالتنبؤ:
=>SELECT * FROM mtcars_predict_results;

في هذه الحالة ، تزامنت التوقعات بنسبة 100 ٪ مع النوع الحقيقي للمربع في النماذج المعروضة. في حالة إعداد بيانات جديدة للتدريب ، ستحتاج إلى حذف النموذج وإعادة حفظه.
وظيفة ML في Vertica
تدعم مكتبة Vertica ML الأنواع التالية من التحليل التنبئي:
- التنبؤ:
- الانحدار الخطي
- غابة عشوائية للانحدار
- SVM (دعم ناقل الجهاز) للانحدار
- التصنيف:
- الانحدار اللوجستي
- ساذج بايز
- غابة عشوائية للتصنيف
- SVM (دعم ناقل الجهاز) للتصنيف
- التجميع:
لإعداد البيانات للتدريب ، يتم تقديم الوظيفة التالية:
- موازنة البيانات
- تنظيف الانبعاثات
- ترميز قيم الأعمدة الفئوية (النصية)
- استبدال البيانات المفقودة
- تطبيع البيانات
- تحليل المكون الرئيسي
- أخذ عينات البيانات
- تحلل القيمة المفرد
بالنظر إلى وظيفة ML في Vertica ، يمكننا القول أن المكتبة المدمجة تسمح لنا بحل مجموعة واسعة من المشكلات إلى حد ما ، ولكن ليس لديها تراكم لدراسة الأنماط والتبعيات في البيانات. هناك وظائف لإعداد البيانات للتعلم الآلي ، ولكن بدون تصور توزيع البيانات في شكل رسوم بيانية ، لا يمكن إلا لمعلمي التحليل الذين لديهم معرفة متخصصة بالبيانات التي تم تحليلها "إعداد" هذه البيانات وتدريب نماذج التعلم عليها.
ار ستوديو مع فيرتيكا
للحصول على تحليل تنبؤي أكثر شمولية وتفاعلية ، تعتبر لغة R مناسبة بشكل مثالي ولديها بيئة مرئية للعمل مع بيانات R Studio. تتمثل المزايا الملموسة لاستخدام R مع Vertica فيما يلي:
- تفاعل البيئة مع القدرة على حفظ الحالة لمزيد من التحليل بعد التشغيل التالي ؛
- عرض مرئي للبيانات في شكل جداول ورسوم بيانية ؛
- R قوة اللغة للعمل مع مجموعات البيانات ؛
- مجموعة متنوعة من خوارزميات التحليل التنبؤية مماثلة لتلك المعروضة في Vertica ML.
تتمثل عيوب العمل مع R مع البيانات الضخمة في متطلبات ذاكرة الوصول العشوائي ، وسرعة العمل مع صفائف البيانات الكبيرة ، والحاجة إلى استيراد وتصدير بيانات Vertica. تتم تغطية أوجه القصور هذه بواسطة القدرة على تضمين وظائف R المكتوبة للتنفيذ المباشر على كتلة في Vertica ، والتي سيتم وصفها أدناه.
مقدمة صغيرة ل R
سنقوم بإعادة إنتاج التوقعات الخاصة بالمربعات التلقائية على بيانات Vertica باستخدام R. حتى لا يخيف المبرمجين غير المألوفين بهذه اللغة ، سأجري دورة قصيرة لمقاتل شاب R.
لذلك ، فإن اللغة R هي نفس اللغة الإجرائية التي تحتوي على كائنات وفئات ووظائف.
يمكن أن يكون الكائن مجموعة بيانات (متجه ، قائمة ، مجموعة بيانات ...) ، قيمة (نص ، رقم ، تاريخ ، وقت ...) أو دالة. بالنسبة للقيم ، يتم دعم أنواع الأرقام والتسلسل والمنطق ووقت التاريخ. بالنسبة إلى مجموعات البيانات ، يبدأ ترقيم الصفيف في 1 ، وليس 0.
بشكل تقليدي ، بدلاً من "=" في R ، يتم استخدام عامل التخصيص "<-". على الرغم من أنه لا يحظر استخدام الواجب إلى الجانب الآخر "->" وحتى المعتاد "=". يتم استخدام عامل التشغيل "=" نفسه عند استدعاء الوظائف لتحديد المعلمات المسماة.
بدلا من "." يتم استخدام "$" للوصول إلى حقول مجموعات البيانات. النقطة ليست كلمة أساسية ويتم استخدامها في أسماء الكائنات لزيادة قابليتها للقراءة. وبالتالي ، سيتم فك تشفير "my.data $ field" كمجموعة من سجلات الحقل "field" من مجموعة البيانات "my.data".
يمكنك استخدام علامات اقتباس مفردة أو مزدوجة لتأطير النصوص.
الأهم من ذلك: R موجهة نحو العمل مع مجموعات البيانات. حتى لو كانت الشفرة "a <-1" ، فتأكد من أن R بداخلها تعتقد أن "a" عبارة عن صفيف مكون من عنصر واحد. يتيح لك تصميم اللغة العمل مع مجموعات البيانات كما هو الحال مع المتغيرات العادية: الجمع والطرح والاتصال وقطع الاتصال والتصفية حسب القياسات. أسهل طريقة لإنشاء صفيف تسرد عناصره هي استدعاء الدالة "c (عناصر الصفيف مفصولة بفواصل)". يبدو أن الاسم "c" هو اختصار قصير للمجموعة ، لكنني لن أقول ذلك بالتأكيد.
تحميل البيانات من DBMS إلى R
لاستخدام RDBMS عبر ODBC لـ R ، يجب عليك تثبيت حزمة RODBC. يمكن تثبيته في R Studio في علامة تبويب الحزم أو باستخدام الأمر R:
install.packages('RODBC') library('RODBC')
الآن يمكننا العمل مع Vertica. نقوم بإنشاء اسم مستعار ODBC للخادم والحصول على بيانات الاختبار ومجموعة كاملة من البيانات للسيارة:
# Vertica con <- odbcConnect(dsn='VerticaDSN') # mtcars_train mtcars.train <- sqlQuery(con, "SELECT * FROM public.mtcars_train") # mtcars</b> mtcars.data <- sqlQuery(con, "SELECT * FROM public.mtcars") # odbcClose(con)
عند تحميل البيانات من المصادر R لحقول أنواع النص ووقت التاريخ ، يتم تحديد انتمائها إلى العوامل تلقائيًا. حقل "am" من النوع العددي ويُنظر إلى R كمؤشر رقمي ، وليس عاملاً ، والذي لن يسمح بانحدار لوجستي. لذلك ، نقوم بتحويل هذا الحقل إلى عامل رقمي:
mtcars.data$am = factor(mtcars.data$am) mtcars.train$am = factor(mtcars.train$am)
في R Studio ، من المريح مشاهدة البيانات بشكل تفاعلي ، وإنشاء رسوم بيانية للتحليل التنبئي وكتابة التعليمات البرمجية في R مع نصائح:

بناء نموذج في R
سنبني نموذجًا للانحدار اللوجستي على مجموعة البيانات المعدة لنفس الأبعاد كما في Vertica:
mtcars.model <- glm(formula = am ~ cyl + wt + gear, family = binomial(), data = mtcars.train)
Explanation: في لغة R ، يشار الى صيغة التحليل التنبؤية على النحو التالي:
< >~< >
تحليل البيانات النموذجية في R
نحن نهيئة مجموعة البيانات الناتجة ، مع الأخذ من mtcars جميع السجلات للحقول المطلوبة:
mtcars.result <- data.frame(car_model = mtcars.data$car_model, am = mtcars.data$am, predict = 0)
الآن ، استنادًا إلى النموذج الذي تم إنشاؤه ، يمكنك إجراء تحليل للبيانات نفسها:
mtcars.result$predict <- predict.glm(mtcars.model, newdata = subset(mtcars.data, select = c('cyl', 'wt', 'gear')), type = 'response' )
يتم إرجاع نتيجة التحليل إلى مجال التنبؤ كنسبة مئوية من احتمال التنبؤ. تبسيط القياس عن طريق القياس مع Vertica للقيم 0 أو 1 ، مع مراعاة التوقع الإيجابي مع احتمال أكثر من 50٪:
mtcars.result$predict <- ifelse(mtcars.result$predict > 0.5, 1, 0)
نحسب إجمالي عدد السجلات التي لم يتطابق معها حقل التنبؤ المتوقع مع القيمة الحقيقية في am:
nrow(mtcars[mtcars.result$am != mtcars.result$predict, ])
عاد R صفر. وهكذا ، تقاربت التوقعات على جميع طرازات السيارات ، كما في Vertica’s ML.
يرجى ملاحظة: تم إرجاع السجلات من mtcars بواسطة عامل التصفية (المعلمة الأولى بين قوسين مربعين) مع جميع الأعمدة (تم حذف المعلمة الثانية بعد الفاصلة بين قوسين مربعين).
حفظ وتحميل البيانات محليا في R
عند الخروج من R ، يعرض الاستوديو حفظ حالة جميع الكائنات من أجل مواصلة العمل بعد إعادة التشغيل. إذا كنت بحاجة لسبب ما لحفظ وحفظ حالة الكائنات الفردية ، فسيتم توفير هذه الوظائف الخاصة في R:
# save(mtcars.model, file = 'mtcars.model') # load('mtcars.model')
حفظ البيانات من R إلى Vertica
إذا تم استخدام R Studio لإعداد البيانات لتدريب نماذج ML Vertica ، أو إذا كان التحليل قد تم إجراؤه مباشرةً ، ثم يتم استخدامه في قاعدة بيانات Vertica ، يمكن كتابة مجموعات بيانات R إلى جدول Vertica.
نظرًا لأن مكتبة ODBC لـ R مصممة لـ OLTP RDBMSs ، لا يمكنها إنشاء استعلامات إنشاء جدول بشكل صحيح لـ Vertica. لذلك ، لتسجيل البيانات بنجاح ، ستحتاج إلى إنشاء الجدول الضروري يدويًا في Vertica باستخدام SQL ، وتتزامن مجموعة الحقول وأنواعها مع مجموعة البيانات القابلة للتسجيل R.
علاوة على ذلك ، تبدو عملية التسجيل نفسها بسيطة (لا تنس أن تفتح ثم تغلق اتصال الاشتراك):
sqlSave(con, mtcars.result, tablename = 'public.mtcars_result', append = TRUE, rownames = FALSE, colnames = FALSE)
باستخدام Vertica مع R
العمل التفاعلي مع البيانات في R Studio مناسب تمامًا لوضع البحث وإعداد البيانات. لكنه غير مناسب تمامًا لتحليل تدفقات البيانات والصفائف الكبيرة في الوضع التلقائي. أحد الخيارات لنظام التحليل التنبئي الهجين R مع Vertica هو إعداد البيانات للتعلم على R وتحديد التبعيات لنماذج البناء. ثم ، باستخدام وظائف ML المدمجة في Vertica ، يتم تدريب نماذج التنبؤ للبيانات المعدة على R مع مراعاة التبعيات المحددة للمتغيرات.
هناك خيار أكثر مرونة عندما يتم استخدام كل قوة لغة R مباشرة من أسفل Vertica. لهذا الغرض ، طور Vertica توزيع R في شكل مكتبة المكونات التي تتيح لك استخدام وظائف التحويل المكتوبة مباشرة في لغة R في استعلامات SQL ، وتصف الوثائق بالتفصيل تثبيت دعم R لـ Vertica وحزم R الإضافية المطلوبة للتشغيل ، إن وجدت.
إنقاذ نموذج R في Vertica
لاستخدام نموذج التحليل الذي سبق إعداده بواسطة R Studio في وظائف R التي تعمل تحت Vertica ، تحتاج إلى حفظها على خوادم Vertica. لا يعد الحفظ محليًا على كل خادم في الكتلة مع ملف مناسبًا ولا يمكن الاعتماد عليه ، ويمكن إضافة خوادم جديدة إلى الكتلة ، وعند تغيير النموذج ، ستحتاج إلى تذكر إعادة كتابة جميع الملفات مرة أخرى.
الطريقة الأكثر ملاءمة هي إجراء تسلسل لنموذج R في نص وحفظ وظيفة Vertica كـ UDF ، والتي ستعيد هذا النص بثبات (لا تنس أن تفتح ثم تغلق اتصال con):
# mtcars.model.text <- rawToChar( serialize(mtcars.model, connection = NULL, ascii = TRUE)) # Vertica # ( ) mtcars.func <- paste0( "CREATE OR REPLACE FUNCTION public.MtCarsAnalizeModel() RETURN varchar(65000) AS BEGIN RETURN '", gsub("'", "''", mtcars.model.text), "'; END; GRANT EXECUTE ON FUNCTION public.MtCarsAnalizeModel() TO public;" ) # Vertica sqlQuery(con, mtcars.func)
تسمح الطريقة المقترحة بالتحايل على تقييد Vertica على المعلمات المرسلة في وظيفة التحويل ، حيث يتطلب الأمر فقط نقل الثوابت أو التعبيرات من الثوابت. لا يقوم Vertica UDF SQL بتجميع كوظائف ، ولكن كتعبيرات محسوبة ، أي عند تمرير معلمة ، بدلاً من استدعاء الوظيفة ، سيتم نقل نصها (في هذه الحالة ثابت) ، والذي تم حفظه في الكود أعلاه.
إذا قمت بتغيير النموذج ، فستحتاج إلى إعادة إنشاء وظيفته في Vertica. من المنطقي لف هذا الرمز في وظيفة عالمية تنشئ دالة في Vertica بالاسم المحدد من النموذج الذي تم تمريره.
وظائف R ل Vertica
لتوصيل وظائف R بـ Vertica ، تحتاج إلى كتابة وظائف تحليل البيانات والتسجيل في Vertica.
يجب أن تحتوي وظيفة العمل مع البيانات من أسفل Vertica نفسها على معلمتين: مجموعة البيانات الناتجة (مثل data.frame) ومعلمات العمل (مثل قائمة):
MtCarsAnalize <- function(data, parameters) { if ( is.null(parameters[['model']]) ) { stop("NULL value for model! Model cannot be NULL.") } else { model <- unserialize(charToRaw(parameters[['model']])) } names(data) <- c('car_model', 'cyl', 'wt', 'gear') result <- data.frame(car_model = data$car_model, predict = 0) result$predict <- predict.glm(model, newdata = subset(data, select = c('cyl', 'wt', 'gear')), type = 'response' ) result$predict <- ifelse(result$predict > 0.5, TRUE, FALSE) return(result) }
في نص الدالة ، يتم التحقق من تمرير معلمة النموذج ، والتي يتم ترجمة نصها إلى شكل ثنائي وإزالتها إلى كائن نموذج التحليل. نظرًا لأن Vertica تنقل أسماء الحقول الخاصة بها إلى مجموعة البيانات للدالة ، يتم تعيين أسماء الحقول الصريحة على مجموعة البيانات. استنادًا إلى البيانات التي تم الحصول عليها ، يتم إنشاء مجموعة النتائج باسم طراز الماكينة ويتوقع صفر. بعد ذلك ، يتم إنشاء التنبؤ باستخدام الحقول الضرورية فقط للتحليل من مجموعة البيانات التي تم الحصول عليها. يتم تعيين مجال التنبؤ لمجموعة النتائج على قيم منطقية (للتغيير بدلاً من القيم الرقمية) ويتم إرجاع النتيجة من الوظيفة.
الآن يبقى وصف تسجيل هذه الوظيفة في Vertica:
MtCarsAnalizeFactory <- function() { list(name = MtCarsAnalize, udxtype = c("transform"), intype = c("varchar", "int", "float", "int"), outtype = c("varchar", "boolean"), outnames = c("car_model", "predict"), parametertypecallback=MtCarsAnalizeParameters) } MtCarsAnalizeParameters <- function() { parameters <- list(datatype = c("varchar"), length = 65000, scale = c("NA"), name = c("model")) return(parameters) }
تصف وظيفة MtCarsAnalizeFactory اسم الوظيفة المستخدمة للعملية ، وحقل مجموعة البيانات الواردة والصادرة ، وتصف الوظيفة الثانية المعلمة التي تم تمريرها "نموذج". أنواع الحقول هي أنواع بيانات Vertica. عند نقل البيانات وإعادتها ، يقوم Vertica تلقائيًا بتحويل القيم إلى أنواع البيانات المطلوبة للغة R. يمكنك رؤية جدول توافق الكتابة في وثائق Vertica.
يمكنك اختبار تشغيل الوظيفة المكتوبة لـ Vertica على البيانات التي تم تحميلها إلى R studio:
test.data = subset(mtcars.data, select = c('car_model', 'cyl', 'wt', 'gear')) test.params = list(model = mtcars.model.text) test.result = MtCarsAnalize(test.data, test.params)
قم بتوصيل مكتبة الميزات بـ Vertica
نحفظ جميع الوظائف المذكورة أعلاه في ملف واحد "mtcars_func.r" ونحمّل هذا الملف على أحد الخوادم من مجموعة Vertica في "/ home / dbadmin".
نقطة مهمة: في R Studio ، تحتاج إلى تعيين خيار حفظ ترجمة الأسطر في الملفات في وضع Posix (LF). يمكن القيام بذلك في الخيارات العالمية ، قسم الكود ، علامة التبويب حفظ. إذا كنت تعمل على نظام تشغيل Windows ، فسيتم حفظ الملف افتراضيًا بعودة النقل ولن يكون بالإمكان تحميله إلى Vertica.
نقوم بالاتصال بالخادم من نظام Vertica ، حيث قمنا بحفظ الملف وتحميل المكتبة:
CREATE LIBRARY MtCarsLibs AS '/home/dbadmin/mtcars_func.r' LANGUAGE 'R';
الآن من هذه المكتبة يمكنك تسجيل وظيفة R:
CREATE TRANSFORM FUNCTION public.MtCarsAnalize AS LANGUAGE 'R' NAME 'MtCarsAnalizeFactory' LIBRARY MtCarsLibs; GRANT EXECUTE ON TRANSFORM FUNCTION public.MtCarsAnalize(varchar, int, float, int) TO public;
استدعاء وظائف R في Vertica
نسميها الدالة R ، لتمريرها نص النموذج ، الذي تم حفظه مسبقًا كدالة UDF:
SELECT MtCarsAnalize(car_model, cyl, wt, gear USING PARAMETERS model = public.MtCarsAnalizeModel()) OVER() FROM public.mtcars;

يمكن التحقق من أن التوقعات ، كما في الحالات السابقة ، متوافقة بنسبة 100٪ مع الواقع الفعلي:
SELECT c.*, p.predict, p.predict = c.am::int AS valid FROM public.mtcars c INNER JOIN ( SELECT MtCarsAnalize(car_model, cyl, wt, gear USING PARAMETERS model = public.MtCarsAnalizeModel()) OVER() FROM public.mtcars ) p ON c.car_model = p.car_model
يرجى ملاحظة: تقوم وظائف التحويل في Vertica بإرجاع مجموعة البيانات الخاصة بها من الحقول والسجلات المحددة في الوظائف ، ومع ذلك يمكن استخدامها في الاستعلامات إذا كانت ملفوفة في استعلام فرعي.
عند توصيل وظائف R ، تقوم Vertica بنسخ الكود المصدري إلى تثبيته ، والذي يتم تجميعه في كود الآلة. ملف المصدر R الذي تم تحميله على الخادم بعد الاتصال بالمكتبة ليس مطلوبًا لمزيد من العمل. سرعة الوظائف التي تأخذ في الحسبان عملية التجميع الثنائي عالية بما يكفي للعمل مع صفائف البيانات الكبيرة ، ومع ذلك ، تجدر الإشارة إلى أن جميع عمليات البحث يتم تنفيذها في الذاكرة وهناك خطر من إجراء المقايضة إذا كان هناك نقص في ذاكرة نظام التشغيل لتلبية احتياجات Vertica و R للعمل معًا .
إذا كانت الوظيفة تسمى قسم البيانات المحدد في PARTITION BY لـ OVER ، فإن Vertica تقوم بموازاة تنفيذ كل قسم على خوادم الكتلة. وبالتالي ، إذا كانت الشركة المصنعة لا تزال موجودة في مجموعة البيانات بالإضافة إلى طراز الجهاز ، فيمكنك تحديد ذلك في PARTITION BY وموازنة التحليل لكل مصنع.
فرص أخرى لتعلم آلة Vertica
بالإضافة إلى R ، بإمكان Vertica تطوير وظائف التحويل الخاصة به في C و Java و Python. كل لغة لها الفروق الدقيقة وميزات الكتابة والاتصال بـ Vertica. جنبًا إلى جنب مع ML الخاص به ، يمنح كل ذلك Vertica احتياطيًا جيدًا لتحليل البيانات التنبؤية.
شكرا وروابط
أود أن أشكر بصدق صديقي وزميلي فلاد مالوفيف من بيرم ، الذي قدم لي إلى آر وساعدني في معرفة ذلك في أحد مشاريعنا المشتركة.
في البداية ، في مشروع تم فيه وضع توقعات بشأن الظروف الصعبة للمستقبل باستخدام بيانات العام الماضي ، حاول المطورون استخدام SQL و Java. تسبب هذا في صعوبات كبيرة مع الأخذ في الاعتبار نوعية هذه المصادر وأبطأ كثيرا من تطوير المشروع. لقد أتى فلاد بالمشروع مع R ، وقمنا بتوصيل R بـ Vertica ، وقاد البيانات إلى الاستوديو وكل شيء تدور وتحول بشكل جميل على الفور. حرفيًا في غضون أسابيع ، كان كل شيء يدوم لعدة أشهر قد هلك ، مما أدى إلى إنقاذ المشروع من التعليمات البرمجية المعقدة.
يمكن تنزيل مثال البيانات مع السيارات من مستودع GIT:
git clone https://github.com/vertica/Machine-Learning-Examples
وتحميلها إلى Vertica:
/opt/vertica/bin/vsql -d <name of your database> -f load_ml_data.sql
إذا كنت ترغب في التعمق أكثر في ML ومعرفة كيفية العمل مع R ، فإنني أوصي بكتاب باللغة الروسية
"R قيد التنفيذ". تحليل وتصور البيانات في لغة البحث " . إنه مكتوب بلغة إنسانية بسيطة ويمكن الوصول إليها وهو مناسب للمبتدئين الذين لم يواجهوا التعلم الآلي من قبل.
هنا يمكنك الاطلاع على معلومات حول توصيل مكتبة R بـ Vertica.
بالنسبة لأولئك الذين بدأوا بالفعل في تعلم واستخدام ML في Python ، يجدر الانتباه إلى IDE Rodeo ، وهذا هو التناظرية من R Studio ، لأنه بدون تحليل الجودة التفاعلية المستحيل. أعتقد أنه يمكن تطوير كل شيء تم وصفه في هذه المقالة تحت R بطريقة مماثلة في Python ، بما في ذلك حفظ النموذج في وظائف UDF وتطوير وظائف التحليل لـ Vertica. إذا قمت بالتدقيق ، لا تنسَ إلغاء الاشتراك في النتائج الواردة في التعليقات ، سأكون ممتنًا للمعلومات.
شكرا لك على وقتك وآمل أن أتمكن من إظهار بساطة وقدرات لا تصدق من التعايش بين R و Vertica.