حدود القرار لنماذج التعلم الآلي المختلفة (مع رمز)

المؤلف: ماثيو سميث

ترجمة: تشانغ Ruonan

التدقيق اللغوي: Wu Jindi

هذا المقال حوالي 6700 كلمة ، فمن المستحسن أن تقرأ 10 دقائق

تستخدم هذه الورقة مجموعة بيانات Iris لتدريب مجموعات متعددة من نماذج التعلم الآلي ، وترسم حدود القرار لكل نموذج من خلال توقع كمية كبيرة من البيانات المجهزة.

التسمية: تعلم الآلة

مقدمة المؤلف

لقد قمت بتدريب سلسلة من نماذج التعلم الآلي باستخدام مجموعة بيانات Iris ، وقمت بتوليف نقاط بيانات جديدة من القيم القصوى في البيانات ، واختبرت العديد من نماذج التعلم الآلي لرسم حدود القرار.يمكن لهذه النماذج وضع تنبؤات في مساحة ثنائية الأبعاد بناءً على هذه الحدود. ، وهو أمر مفيد لتوضيح الغرض وفهم كيفية قيام نماذج التعلم الآلي المختلفة بعمل تنبؤات.

التعلم الآلي المتطور

يمكن لنماذج التعلم الآلي أن تتفوق في الأداء على نماذج الاقتصاد القياسي التقليدية ، وهذا ليس بالأمر الجديد ، ولكن كجزء من البحث ، أريد أن أشرح لماذا وكيف تقدم نماذج معينة تنبؤات التصنيف. أرغب في إظهار حدود القرار التي يعتمد عليها نموذج التصنيف الثنائي الخاص بي ، أي مساحة القسم حيث يتم عرض البيانات للتنبؤ بالتصنيف. يمكن أيضًا تطبيق المشكلة والكود على مشاكل متعددة الفئات بعد بعض التعديلات.

التهيئة

قم أولاً بتحميل سلسلة من الحزم ، ثم قم بإنشاء وظيفة لوجستية جديدة لتحويل احتمالات السجل إلى دالة احتمالية لوجستية لاحقًا.

مكتبة (dplyr) مكتبة (patchwork) مكتبة (ggplot2) مكتبة (knitr) مكتبة (kableExtra) مكتبة (purrr) مكتبة (stringr) مكتبة (tidyr) مكتبة (xgboost) مكتبة (lightgbm) مكتبة (keras) مكتبة (tidyquant) ## ################### حدد مسبقًا بعض الوظائفlogit2prob < وظيفة (لوجيت) {احتمالات < -exp (لوجيت) prob < -odds / (1 + احتمالات) إرجاع (احتمال)}

البيانات

تحتوي مجموعة بيانات قزحية العين التي استخدمتها على معلومات حول 3 متغيرات نباتية مختلفة تم جمعها بواسطة الإحصائي البريطاني رونالد فيشر في عام 1936. تحتوي مجموعة البيانات على خصائص مختلفة لأربعة أنواع نباتية ، والتي يمكن أن تميز 33 نوعًا مختلفًا (سيتوسا وفيرجينيكا وفيرسيكولور). ومع ذلك ، فإن مشكلتي تتطلب مشكلة تصنيف ثنائي ، وليس مشكلة تصنيفات متعددة. في الكود أدناه ، قمت باستيراد بيانات قزحية وحذفت نوعًا نباتيًا ، فيرجينيكا ، لتغييرها من تصنيف متعدد إلى مشكلة تصنيف ثنائي.

بيانات (قزحية) مدافع < -قزحية > مرشح (الأنواع! = "فيرجينيكا") > mutate (Species = + (Species == "versicolor")) str (df) ## 'data.frame': 100 أقدم من 5 متغيرات: ## $ Sepal.Length: الرقم 5.14.94.74.65 5.44.65 4.44.9 ... ## $ عرض سيبال: عدد 3.53 3.23.13.63.93.43.42.93.1 ... ## $ بيتال الطول: عدد 1.41.41.31.51.41.71.41.51.41.5 ... ## $ عرض البتلة: عدد 0.20.20.20.20.20.40.30.20.20.1 ... ## $ الأنواع: دولي 00 00 00 00 00 ...

أستخدم ggplot لأول مرة لرسم البيانات. في كائنات ggplot المخزنة أدناه ، يتم فقط تغيير اختيارات المتغيرات x و y لكل رسم بياني.

PLT1 < -df > ggplot (aes (x = Sepal.Width، y = Sepal.Length، color = factor (Species))) + geom_point (الحجم = 4) + theme_bw (base_size = 15) + theme (legend.position = "none") PLT2 < -df > ggplot (aes (x = Petal.Length ، y = Sepal.Length ، color = factor (Species))) + geom_point (الحجم = 4) + theme_bw (base_size = 15) + theme (legend.position = "none") PLT3 < -df > ggplot (aes (x = Petal.Width، y = Sepal.Length، color = factor (Species))) + geom_point (الحجم = 4) + theme_bw (base_size = 15) + theme (legend.position = "none") PLT3 < -df > ggplot (aes (x = Sepal.Length، y = Sepal.Width، color = factor (Species))) + geom_point (الحجم = 4) + theme_bw (base_size = 15) + theme (legend.position = "none") PLT4 < -df > ggplot (aes (x = Petal.Length ، y = Sepal.Width ، color = factor (Species))) + geom_point (الحجم = 4) + theme_bw (base_size = 15) + theme (legend.position = "none") PLT5 < -df > ggplot (aes (x = Petal.Width، y = Sepal.Width، color = factor (Species))) + geom_point (الحجم = 4) + theme_bw (base_size = 15) + theme (legend.position = "none") PLT6 < -df > ggplot (aes (x = Petal.Width، y = Sepal.Length، color = factor (Species))) + geom_point (الحجم = 4) + theme_bw (base_size = 15) + theme (legend.position = "none")

لقد استخدمت أيضًا حزمة الترقيع الجديدة لتسهيل عرض نتائج ggplot. الكود التالي واضح جدًا لرسم الرسم البياني (1 رسم بياني علوي يأخذ طول مساحة الشبكة ، رسمان بيانيان متوسطان الحجم ، رسم بياني واحد آخر ورسمان بيانيان آخران في الأسفل)

(plt1) / (plt2 + plt3)

أو يمكننا إعادة ترتيب الرسم بأي طريقة نريد ، والرسم بالطرق التالية:

(plt1 + plt2) / (plt5 + plt6)

أعتقد أن هذا يبدو جيدًا.

الأهداف

هدفي هو بناء خوارزمية تصنيف للتمييز بين هذين النوعين من النباتات ومن ثم حساب حدود القرار لفهم أفضل لكيفية قيام النموذج بمثل هذه التوقعات. من أجل إنشاء خريطة حدود القرار لكل مجموعة من المتغيرات ، نحتاج إلى مجموعات مختلفة من المتغيرات في البيانات.

var_combos < -expand.grid (colnames (df)، colnames (df)) > مرشح (! Var1 == Var2) var_combos > رئيس() > kable (عنوان = "مجموعات متغيرة" ، الهروب = F ، أرقام = 2) > kable_styling (bootstrap_options = c ("striped"، "hover"، "condensed"، "response")، font_size = 9، fixed_thead = T، full_width = F) > scroll_box (العرض = "100" ، الارتفاع = "200 بكسل")

بعد ذلك ، سأستخدم مجموعات المتغيرات المختلفة المذكورة أعلاه لإنشاء قائمة (قائمة واحدة لكل مجموعة) ، واستخدام البيانات التركيبية (أو البيانات من الحد الأدنى إلى الحد الأقصى لكل مجموعة متغيرة) لتعيين القيم إلى القائمة. سيكون هذا بمثابة بيانات اختبار تركيبية لعمل تنبؤات وتحديد حدود القرار.

وتجدر الإشارة إلى أن هذه الرسوم البيانية ستكون في النهاية ثنائية الأبعاد ، لذلك نقوم فقط بتدريب نموذج التعلم الآلي على متغيرين ، ولكن لكل مجموعة من هذين المتغيرين ، سيكونان أول متغيرين في إطار بيانات قوائم_الحدود المتغيرات.

قوائم_الحدود < -map2 (.x = var_combos $ Var1، .y = var_combos $ Var2، ~ حدد (df، .x، .y) > تلخيص (minX = min (.، na.rm = TRUE)، maxX = max (.، na.rm = TRUE)، minY = min (.، na.rm = TRUE)، maxY = max (.، na. rm = TRUE))) > map (.، ~ tibble (x = seq (.x $ minX، .x $ maxX، length.out = 200)، y = seq (.x $ minY، .x $ maxY، length.out = 200) ، )) > map (.، ~ tibble (xx = rep (.x $ x، كل منهما = 200)، yy = rep (.x $ y، time = 200))) > map2 (.، asplit (var_combos، 1)، ~ .x > set_names (.y))

يمكننا أن نرى كيف أن الملاحظات الأربع الأولى من أول قائمتين هي:

قوائم_الحدود > map (.، ~ head (.، 4)) > head (2) ## ## # tibble: 4 x 2 ## Sepal.Width Sepal.Length ## سيبال عرض سبال الطول ## < dbl > < dbl > ## 12 4.3 ## 22 4.31 ## 32 4.33 ## 42 4.34 #### ## # سنبلة: 4 2 ## بيتال.الطول سيبال.الطول ## < dbl > < dbl > ## 11 4.3 ## 21 4.31 ## 31 4.33 ## 41 4.34boundary_lists > map (.، ~ head (.، 4)) > tail (2) ## ## # tibble: 4 x 2 ## Sepal.Width Petal.Width ## سيبال عرض بيتال عرض ## < dbl > < dbl > ## 12 0.1 ## 22 0.109 ## 32 0.117 ## 42 0.126 #### ## # سنبلة: 4 2 ## البتلة طول البتلة العرض ## < dbl > < dbl > ## 11 0.1 ## 21 0.109 ## 31 0.117 ## 41 0.126

وقت التدريب

الآن وبعد أن أنشأنا بيانات محاكاة للاختبار ، أريد تدريب النموذج بناءً على الملاحظات الفعلية. سأستخدم كل نقطة بيانات في الشكل أعلاه لتدريب النموذج التالي:

  • نموذج الانحدار اللوجستي
  • دعم آلة ناقلات + نواة خطية
  • دعم آلة المتجهات + نواة كثيرة الحدود
  • دعم ناقل الجهاز + نواة شعاعي
  • دعم آلة ناقلات + جوهر السيني
  • غابة عشوائية
  • نموذج XGBoost مع المعلمات الافتراضية
  • شبكة عصبية Keras أحادية الطبقة (بتكوين خطي)
  • شبكة عصبية أعمق Keras (مع تكوين خطي)
  • شبكة عصبية أعمق من Keras (بتكوين خطي)
  • نموذج LightGBM تحت المعلمات الافتراضية

ملاحظة جانبية: لست خبيرًا في التعلم العميق / Keras / Tensorflow ، لذلك أعتقد أن هناك نماذج أفضل تنتج حدودًا أفضل للقرار ، ولكن من المثير جدًا استخدام purrr وخريطة لتدريب نماذج مختلفة للتعلم الآلي.

############################################## ############################################## ############################################## ################ params_lightGBM < -list (# object = "binary"، # metric = "auc"، # min_data = 1 #) # لتثبيت Light GBM جرب ما يلي في RStudio terinal # git clone --recursive https://github.com/microsoft / LightGBM # cd LightGBM # Rscript build_r.Rmodels_list < -var_combos > mutate (modeln = str_c ('mod'، row_number ())) > pmap (~ {xname = ..1 yname = ..2 modelname = ..3 df > حدد (الأنواع ، xname ، yname) > group_by (grp = 'grp') > عش() > mutate (Models = map (data، ~ {list (# Logistic Model Model_GLM = {glm (Species ~.، data = .x، family = binomial (link = 'logit'))}، # Support Vector Machine (Linear) Model_SVM_Linear = {e1071 :: svm (الأنواع ~. ، البيانات = .x ، النوع = 'تصنيف C' ، kernel = 'خطي')} ، # آلة متجه الدعم (متعددة الحدود) Model_SVM_Polynomial = {e1071 :: svm (الأنواع ~ .، data = .x، type = 'C-rating'، kernel = 'polynomial')}، # Support Vector Machine (sigmoid) Model_SVM_radial = {e1071 :: svm (Species ~.، data = .x، type = ' تصنيف C '، kernel =' sigmoid ')}، # آلة متجه الدعم (شعاعي) Model_SVM_radial_Sigmoid = {e1071 :: svm (Species ~.، data = .x، type =' C-category '، kernel =' radial ' )}، # Random Forest Model_RF = {randomForest :: randomForest (الصيغة = as.factor (الأنواع) ~.، data =.)}، # Extreme Gradient Boosting Model_XGB = {xgboost (target = 'binary: logistic'، Eval_metric = 'auc'، data = as.matrix (.x)، label = as.matrix (.x $ Species)، # nrounds المتغير الثنائي = 10) } ، # Kera Neural Network Model_Keras = {mod < -keras_model_sequential () > layer_dense (الوحدات = 2 ، التنشيط = 'relu' ، input_shape = 2) > layer_dense (الوحدات = 2 ، التنشيط = 'sigmoid') تعديل > compile (الخسارة = 'binary_crossentropy' ، Optizer_sgd (lr = 0.01 ، الزخم = 0.9) ، المقاييس = c ('الدقة')) الملائمة (mod ، x = as.matrix (.x) ، y = to_categorical (.x $ الأنواع ، 2) ، epochs = 5 ، batch_size = 5 ، validation_split = 0) print (modelname) ، تعيين (modelname ، mod)} ، # Kera Neural Network Model_Keras_2 = {mod < -keras_model_sequential () > layer_dense (الوحدات = 2 ، التنشيط = 'relu' ، input_shape = 2) > layer_dense (الوحدات = 2 ، التنشيط = 'الخطي' ، شكل الإدخال = 2) > layer_dense (الوحدات = 2 ، التنشيط = 'sigmoid') تعديل > compile (الخسارة = 'binary_crossentropy' ، Optizer_sgd (lr = 0.01 ، الزخم = 0.9) ، المقاييس = c ('الدقة')) الملائمة (mod ، x = as.matrix (.x) ، y = to_categorical (.x $ الأنواع ، 2) ، epochs = 5 ، batch_size = 5 ، validation_split = 0) print (modelname) ، تعيين (modelname ، mod)} ، # Kera Neural Network Model_Keras_3 = {mod < -keras_model_sequential () > layer_dense (الوحدات = 2 ، التنشيط = 'relu' ، input_shape = 2) > layer_dense (الوحدات = 2 ، التنشيط = 'relu' ، input_shape = 2) > layer_dense (الوحدات = 2 ، التنشيط = 'الخطي' ، شكل الإدخال = 2) > layer_dense (الوحدات = 2 ، التنشيط = 'sigmoid') تعديل > compile (الخسارة = 'binary_crossentropy' ، Optizer_sgd (lr = 0.01 ، الزخم = 0.9) ، المقاييس = c ('الدقة')) الملائمة (mod ، x = as.matrix (.x) ، y = to_categorical (.x $ الأنواع ، 2) ، epochs = 5 ، batch_size = 5 ، Validation_split = 0) print (modelname) ، تعيين (modelname ، mod)} ، # LightGBM model Model_LightGBM = {lgb.train (data = lgb.Dataset (data = as.matrix (.x) ، التسمية = .x $ الأنواع) ، الهدف = 'ثنائي' ، القياس = 'auc' ، min_data = 1 #params = params_lightGBM ، #learning_rate = 0.1)})})))) > map (.، ~ unlist (.، recursive = FALSE))

بيانات المعايرة

الآن بعد أن أصبح لدينا النموذج والتنبؤات المدربة ، يمكننا إعادة هذه التنبؤات إلى البيانات للتخيل باستخدام ggplot ، ثم استخدام حزمة الترقيع للتنضيد.

plot_data < -map2 (.x = قوائم_الحدود ، .y = خريطة (نماذج_توقع ، ~ خريطة (. ، ~ tibble (.))) ، ~ bind_cols (.x ، .y)) أسماء (plot_data) < -map_chr (plot_data، ~ c (لصق (colnames (.)، "and"، colnames (.)، sep = "_")))

الآن بعد أن أصبح لدينا توقعات يمكننا إنشاء ggplots.

قوائم_ ggplot < -الحبكة_بيانات > map (.، ~ select (.، -contains ("Model")) > pivot_longer (cols = يحتوي على ("التنبؤ") ، names_to = "Model" ، values_to = "Prediction")) > map (.x =.، ~ ggplot () + geom_point (aes (x = !! rlang :: sym (colnames (.x))، y = !! rlang :: sym (colnames (.x))، color = عامل (!! rlang :: sym (colnames (.x))))، البيانات = .x) + geom_contour (aes (x = !! rlang :: sym (colnames (.x))، y = !! rlang :: sym (colnames (.x))، z = !! rlang :: sym (colnames (.x)))، data = .x) + geom_point (aes (x = !! rlang :: sym (colnames (. x))، y = !! rlang :: sym (colnames (.x))، color = factor (!! rlang :: sym (colnames (df))) # this is the status variable)، size = 8، data = df) + geom_point (aes (x = !! rlang :: sym (colnames (.x))، y = !! rlang :: sym (colnames (.x)))، size = 8، shape = 1، data = df) + facet_wrap (~ Model) + theme_bw (base_size = 25) + theme (legend.position = "none"))

ارسم كل التركيبات المختلفة لحدود القرار. ملاحظة: سوف يعمل الكود أعلاه بشكل أفضل في وحدة التحكم الخاصة بك. عندما أستخدم الكود لبرمجة منشور المدونة هذا ، تكون الصورة صغيرة جدًا. لذلك ، فقد قدمت مخططات منفصلة لأمثلة على مجموعات النماذج والمتغيرات.

أحتاج أولاً إلى تحديد أول عمودين ، وهما المتغيرات المستهدفة (Petal.Width و Petal.Length و Sepal.Width و Sepal.Length). بعد ذلك ، أرغب في اختيار عينات عشوائية من كل عمود (أي نتائج التنبؤ لنماذج التعلم الآلي المختلفة).

plot_data_sampled < -الحبكة_بيانات > map (.، ~ select (.، -contains ("Model")) > حدد (.، c (1: 2)، عينة (colnames (.)، 2)) > pivot_longer (cols = يحتوي ("Prediction")، names_to = "Model"، values_to = "Prediction"))

بعد ذلك ، يمكنني الرسم عن طريق رسم قائمة عشوائيًا.

مؤامرة_بيانات_عينة > rlist :: list.sample (1) > map (.x =.، ~ ggplot () + geom_point (aes (x = !! rlang :: sym (colnames (.x))، y = !! rlang :: sym (colnames (.x))، color = عامل (!! rlang :: sym (colnames (.x))))، البيانات = .x) + geom_contour (aes (x = !! rlang :: sym (colnames (.x))، y = !! rlang :: sym (colnames (.x))، z = !! rlang :: sym (colnames (.x)))، data = .x) + geom_point (aes (x = !! rlang :: sym (colnames (. x))، y = !! rlang :: sym (colnames (.x))، color = factor (!! rlang :: sym (colnames (df))) # this is the status variable)، size = 3، data = df) + geom_point (aes (x = !! rlang :: sym (colnames (.x))، y = !! rlang :: sym (colnames (.x)))، size = 3، shape = 1، data = df) + facet_wrap (~ Model) + #coord_flip () + theme_tq (base_family = "serif") + السمة (# side.ratio = 1، axis.line.y = element_blank () ، axis.ticks.y = element_blank ()، legend.position = "bottom"، # legend.title = element_text (size = 20)، # legend.text = element_text (size = 10)، axis.title = element_text (size = 20)، axis.text = element_text (size = "15")، strip.text.x = element_text (الحجم = 15)، plot.title = element_tex t (الحجم = 30 ، hjust = 0.5) ، strip.background = element_rect (fill = 'darkred') ، panel.background = element_blank () ، panel.grid.major = element_blank () ، panel.grid.minor = element_blank ( )، # axis.text.x = element_text (زاوية = 90)، axis.text.y = element_text (زاوية = 90، hjust = 0.5)، # axis.title.x = element_blank () legend.title = element_blank () ، legend.text = element_text (size = 20))) ## $ Sepal.Width_and_Petal.Length ## تحذير: يجب أن تكون فهارس الصفوف بين 0 وعدد الصفوف (0). استخدم `NA` كفهرس صف للحصول على صف مليء بقيم `NA`. ## يتم عرض هذا التحذير مرة واحدة في كل جلسة.

بعض النماذج العشوائية الأخرى:

## $ Sepal.Width_and_Sepal.Length

## $ Sepal.Width_and_Sepal.Length ## $ Petal.Length_and_Sepal.Length

## $ البتلة. العرض_و_البيتال. الطول

## $ Petal.Length_and_Petal.Width ## تحذير في grDevices :: contourLines (x = sort (unique (data $ x))، y = ## sort (unique (data $ y)) ،: todos los valores de z son iguales ## تحذير: لا يمكن إنشاء بيانات الكنتور

عادة ما تنتج النماذج الخطية حدود القرار الخطية. يبدو أن نموذج Random Forest سيفوق بعض البيانات ، في حين أن طرازي XGBoost و LightGBM يمكنهما الحصول على حدود قرار أفضل وأكثر عمومية. أداء شبكة Keras العصبية ضعيف لأنه لم يتم تدريبها في مكانها الصحيح.

  • glm = نموذج الانحدار اللوجستي
  • توقع الصيغة svm ... 6 = آلة متجه الدعم + نواة خطية
  • توقع الصيغة svm ... 8 = آلة المتجه الداعمة + النواة متعددة الحدود
  • توقع الصيغة svm ... 12 = آلة ناقلات الدعم + النواة الشعاعية
  • توقع الصيغة svm ... 10 = آلة ناقلات الدعم + النواة السينية
  • randomForest.formula التنبؤ = الغابة العشوائية
  • xgb.Booster Prediction = نموذج XGBoost مع المعلمات الافتراضية
  • keras.engine.sequential.Sequential Prediction ... 18 = شبكة Keras العصبية أحادية الطبقة
  • keras.engine.sequential.Sequential Prediction ... 18 = شبكة Keras العصبية الأعمق
  • keras.engine.sequential.Sequential Prediction ... 22 = شبكة عصبية Keras أعمق
  • lgb.Booster Prediction = نموذج LightGBM في ظل المعلمات الافتراضية

في العديد من التوليفات ، توقع نموذج الشبكة العصبية Keras فقط أن جميع الملاحظات تنتمي إلى فئة معينة (مرة أخرى ، لم أقم بإجراء العديد من التعديلات على النموذج ، وكان للنموذج 100 ملاحظة فقط للتدريب ولكن كان عليه أن يتوقع 40000 نقطة). بمعنى آخر ، يصبغ لون الخلفية بالكامل باللون الأزرق أو الأحمر ، ويقوم بالعديد من التصنيفات الخاطئة. في بعض الرسوم البيانية ، يمكن للشبكات العصبية أن تحقق تصنيفًا مثاليًا ، بينما في الرسوم البيانية الأخرى ، فإن حدود القرار الغريبة هي شبكات عصبية الصنع مثيرة للاهتمام.

بعد إجراء بعض التحليلات الموجزة لهذه الأرقام ، يبدو أننا حصلنا على تصنيف شبه مثالي باستخدام نموذج الانحدار اللوجستي البسيط. ولكن نظرًا لأن العلاقة بين كل متغير قابلة للفصل خطيًا ، فهذا ليس مفاجئًا. لكنني ما زلت أفضل نماذج XGBoost و LightGBM ، لأنهما يستطيعان التعامل مع العلاقات غير الخطية عن طريق إضافة التنظيم إلى وظيفتهما الموضوعية ، وذلك للحصول على حدود قرار أكثر موثوقية. فشل نموذج الغابة العشوائية هنا ، ويبدو أن حدود قرارهم قد تمت بشكل جيد ، ولكن في الواقع هناك بعض الأجزاء الغامضة والحادة.

لكن بالطبع ، مع ظهور المزيد من المتغيرات والأبعاد الأكبر ، ستصبح حدود القرار هذه أكثر تعقيدًا وغير خطية.

لـ (i in 1: length (plot_data)) {print (ggplot_lists )}

خاتمة

لقد كتبت هذا النموذج على مثيل Amazon Ubuntu EC2 ، ولكن عندما جمعت منشور مدونة باستخدام R على نظام Windows ، واجهت بعض المشكلات. ترجع هذه المشكلات بشكل أساسي إلى تثبيت حزمة lightgbm وإصدار الحزمة. استخدم إصدار الحزمة التالي (أي استخدم أحدث إصدار من الحزمة) ، يعمل الرمز بشكل طبيعي.

sessionInfo () ## R الإصدار 3.6.1 (2019-07-05) ## النظام الأساسي: x86_64-w64-mingw32 / x64 (64 بت) ## يعمل تحت: Windows 10 x64 (الإصدار 17763) #### Matrix المنتجات: افتراضي #### locale: ## LC_COLLATE = Spanish_Spain.1252 LC_CTYPE = Spanish_Spain.1252 ## LC_MONETARY = Spanish_Spain.1252 LC_NUMERIC = C ## LC_TIME = Spanish_Spain.1252 #### الحزم الأساسية المرفقة: ## stats Graphics grDevices utils datasets methods base #### الحزم الأخرى المرفقة: ## tidyquant_0.5.7 quantmod_0.4-15 ## TTR_0.23-6 PerformanceAnalytics_1.5.3 ## xts_0.11-2 zoo_1.8-6 ## lubridate_1.7.4 keras_2.2.5.0 ## lightgbm_2.3.2 R6_2.4.1 ## xgboost_0.90.0.1 tidyr_1.0.0 ## stringr_1.4.0 purrr_0.3.2 ## kableExtra_1.1.0.9000 knitr_1.25.4 ## ggplot2_3.2.1 patchwork_1.0.0 # # dplyr_0.8.99.9000 #### محملة عبر مساحة اسم (وغير مرفقة): ## Rcpp_1.0.3 lattice_0.20-38 class_7.3-15 ## utf8_1.1.4 تؤكد أن_0.2.1 zeallot_0.1.0 ## Digest_0. 6.24 e1071_1.7-2 Evaluation_0.14 ## HTR_1.4.1 blogdown_0.15 pillar_1.4.3.9000 ## tfruns_1.4 rlang _0.4.4 lazyeval_0.2.2 ## curl_4.0 rstudioapi_0.10 data.table_1.12.8 ## whisker_0.3-2 Matrix_1.2-17 reticulate_1.14-9001 ## rmarkdown_1.14 lobstr_1.1.1 labeling_0.3 ## webshot_0 .5.1 readr_1.3.1 munsell_0.5.0 ## compiler_3.6.1 xfun_0.8 pkgconfig_2.0.3 ## base64enc_0.1-3 tensorflow_2.0.0 htmltools_0.3.6 ## tidyselect_1.0.0 tibble_2.99.99.9014 bookdown_0.13 ## quadprog_1.5 -7 Rappdirs_0.3.1 grid_3.6.1 Quandl_2.10.0 ## jsonlite_1.6.1 gtable_0.3.0 lifecycle_0.1.0 ## magrittr_1.5 scales_1. 0.0 rlist_0.4.6.1 ## cli_2.0.1 stringi_1.4.3 xml2_1.2.2 ## ellipsis_0.3.0 generics_0.0.2 vctrs_0.2.99.9005 ## tools_3.6.1 Glue_1.3.1 hms_0.5.1 ## yaml_2.2.0 colorpace_1.4- 1 رفيست_0.3.4

العنوان الأصلي:

حدود القرار لسلسلة من نماذج التعلم الآلي

الرابط الأصلي:

https://www.kdnuggets.com/2020/03/decision-boundary-series-machine-learning-models.html

التدقيق اللغوي: لين يلين

ملف المترجم

تشانغ روانان ، تخرج من جامعة UIUC للدراسات العليا ، عالم بيانات في صناعة الإعلام بجنوب كاليفورنيا لقد تدربت في البنوك التجارية المحلية والأجنبية والإنترنت وصناعة التجزئة وشركات المواد الغذائية. وأود أن أتواصل مع تحليل البيانات وحالات التطبيق في مختلف المجالات ، ولدي حماس كبير لتطوير منتجات علوم البيانات.

-إنهاء-

اتبع منصة WeChat العامة الرسمية لمعهد Tsinghua-Qingdao لعلوم البيانات " فطيرة بيانات الذكاء الاصطناعي "ورقم الأخت" فطيرة البيانات THU "احصل على المزيد من مزايا المحاضرات وجودة المحتوى.

تسخين الأنابيب ليست ساخنة، وتسرب المياه ...... المجتمعات "فرقة باركور من" الصيانة لمدة 60 يوما أكثر من ألف مرة

فرع المجلس "فرع خصائص" كيفية تقييم؟ تأتي اللجنة التوجيهية

تشن الجديدة: معركة ووهان في المعركة والفوز مرحلة جديدة

ممن لهم ممن لهم وتش سيتم كشف النقاب عن أول ساعة ذكية في الأسعار، أو على مقربة من 3000 يوان

الحياة تشوتشوانغ | بلدة صغيرة والربيع، اللوحة الضبابية الجنوب المطر

شهدت مراسل CCTV موقع تحطم الطائرة في ايران لمزيد من التفاصيل صدر

ومن المتوقع توريد لحم الخنزير والطلب إلى مستقر بشكل عام خلال مهرجان الربيع: وزارة الزراعة والقروية

يمارس بين الصين وباكستان عسكرية مشتركة حاجز اللغة؟ لا يزال عشر دقائق زي "الإرهابيين"

الأدب الخارجية حيث للبحث؟ ثمانية تحميل مجاني!

وهذا قد يكون أكثر من المنزل هو مخزن للقيمة الأصول؟ بناء الأصول بيانات نموذج تقييم طريقة سبع خطوات

مانينغ بقيادة الله ، نسخة Pyford مفتوحة المصدر من مكتبة NLP ستانزا: تغطي 66 لغة

تسلق الجدران بين العلماء والمهندسين البيانات البيانات