شجرة القرار في R: شجرة التصنيف مع مثال
⚡ ملخص ذكي
تقوم أشجار القرار في لغة R بتقسيم البيانات إلى فروع باستخدام قواعد بسيطة (نعم/لا) حتى تحتوي كل ورقة على فئة سائدة واحدة. يشرح هذا الدليل كيفية بناء شجرة تصنيف rpart، ورسمها، وتقييمها، وضبطها على مجموعة بيانات نجاة ركاب سفينة تايتانيك.
ما هي أشجار القرار؟
أشجار القرار تُعدّ أشجار القرار خوارزمية تعلّم آلي متعددة الاستخدامات، قادرة على أداء مهام التصنيف والانحدار. وهي خوارزميات بالغة القوة، قادرة على التعامل مع مجموعات البيانات المعقدة. إضافةً إلى ذلك، تُشكّل أشجار القرار مكونات أساسية للغابات العشوائية، التي تُعدّ من أقوى خوارزميات التعلّم الآلي المتاحة اليوم.
قبل بناء شجرة في الكود، من المفيد معرفة كيف تحدد الشجرة مكان الانقسام.
كيف تعمل شجرة القرار؟
تحوّل شجرة القرار مجموعة البيانات إلى مخطط انسيابي من أسئلة بنعم أو لا، مبني من ثلاثة أنواع من العقد: جذر يتضمن كل ملاحظة تدريبية، و عقدة داخلية يطرح سؤالاً حول أحد المتغيرات التنبؤية ويقسم البيانات إلى قسمين، و ورق غار يتوقف عن الانقسام ويعيد الفئة الأكثر شيوعاً.
يتبع النمو إجراءً جشعًا يُسمى التقسيم الثنائي المتكرر:
- قم بتقييم كل مرشح على حدة. لكل متغير تنبؤي ونقطة قطع، قم بقياس مدى عدم نقاء المجموعتين الناتجتين.
- احتفظ بالأفضل. يصبح الانقسام الذي يقلل الشوائب إلى أقصى حد هو السؤال المطروح عند تلك العقدة.
- كرر ذلك مع كل طفل إلى أن توقفها قاعدة تحكم: minsplit، minbucket، maxdepth، أو cp.
- تقليم. ثم يقوم برنامج cp بتقليم الفروع التي لا تدر ربحاً، مما يمنع الشجرة من حفظ مجموعة التدريب.
لأن كل سؤال يقارن متغيرًا واحدًا بعتبة معينة، فإن الخوارزمية لا تحتاج أبدًا إلى تغيير الحجم أو الترميز الوهمي.
مؤشر جيني مقابل الإنتروبيا في أشجار القرار
يمكن قياس تلك الشوائب بطريقتين، ويتيح لك برنامج rpart الاختيار بينهما.
| المعايير | مؤشر جيني | الإنتروبيا (كسب المعلومات) |
|---|---|---|
| المعادلة | 1 – مجموع مربعات نسب الفئات | -مجموع p مضروبًا في log2(p) |
| نطاق (صفان) | 0 إلى 0.5 | 0 إلى 1 |
| حساب | أسرع، بدون استخدام اللوغاريتم | أبطأ، ويستخدم اللوغاريتمات |
| إعداد rpart | الترتيب | parms = list(split = “information”) |
fit_entropy <- rpart(survived~., data = data_train, method = 'class', parms = list(split = "information"))
في الواقع العملي، يختار كلا المعيارين نفس التقسيم في معظم الأوقات، لذا فإن مؤشر جيني الافتراضي هو خيار آمن.
مزايا وعيوب أشجار القرار
توضح لك المفاضلات متى تكون الشجرة الواحدة كافية ومتى يجب الانتقال إلى مجموعة من الأشجار.
المزايا
- قابلة للتفسير بالكامل: النموذج المُلائم عبارة عن رسم بياني يمكن لأي صاحب مصلحة قراءته.
- الحد الأدنى من المعالجة المسبقة: لا حاجة إلى تغيير الحجم أو التوحيد، وتعمل العوامل بشكل طبيعي.
- يتولى كلا المهمتين: يُستخدم الخيار method = 'class' لتركيب مصنف، بينما يُستخدم الخيار method = 'anova' لتركيب شجرة انحدار.
- سريع التدريب: يمكن استيعاب مجموعات البيانات الكبيرة في ثوانٍ، لذا فإن الأشجار تشكل أساسًا أوليًا مفيدًا.
عيوب
- تباين عالٍ: يمكن لتغيير بسيط في بيانات التدريب أن ينتج شجرة مختلفة تمامًا.
- عرضة للتخصيص الزائد: تنمو الشجرة غير المقيدة حتى تصبح كل ورقة نقية ما لم يقيدها كل من cp و maxdepth.
- تقسيمات متوازية المحاور فقط: تحتاج الحدود القطرية إلى العديد من القطع على شكل درج.
يكمن الحل للضعفين الأولين في حساب متوسط عدد كبير من الأشجار، وهو ما يفعله غابة عشوائية لا.
كيفية تدريب وتصور شجرة القرار في لغة البرمجة R
لبناء شجرة القرار الأولى في لغة R، ستعمل من خلال سبع خطوات:
- الخطوة 1: استيراد البيانات
- الخطوة 2: تنظيف مجموعة البيانات
- الخطوة 3: إنشاء مجموعة تدريب/اختبار
- الخطوة 4: بناء النموذج
- الخطوة 5: قم بالتنبؤ
- الخطوة 6: قياس الأداء
- الخطوة 7: ضبط المعلمات الفائقة
الخطوة 1) استيراد البيانات
إذا كنت مهتمًا بمصير التايتنك، يمكنك مشاهدة هذا الفيديو على يوتيوب . الغرض من مجموعة البيانات هذه هو التنبؤ بالأشخاص الذين من المرجح أن يبقوا على قيد الحياة بعد الاصطدام بالجبل الجليدي. تحتوي مجموعة البيانات على 13 متغيرًا و1309 ملاحظة. يتم ترتيب مجموعة البيانات بواسطة المتغير X.
set.seed(678) path <- 'https://raw.githubusercontent.com/guru99-edu/R-Programming/master/titanic_data.csv' titanic <-read.csv(path) head(titanic)
الإخراج:
## X pclass survived name sex ## 1 1 1 1 Allen, Miss. Elisabeth Walton female ## 2 2 1 1 Allison, Master. Hudson Trevor male ## 3 3 1 0 Allison, Miss. Helen Loraine female ## 4 4 1 0 Allison, Mr. Hudson Joshua Creighton male ## 5 5 1 0 Allison, Mrs. Hudson J C (Bessie Waldo Daniels) female ## 6 6 1 1 Anderson, Mr. Harry male ## age sibsp parch ticket fare cabin embarked ## 1 29.0000 0 0 24160 211.3375 B5 S ## 2 0.9167 1 2 113781 151.5500 C22 C26 S ## 3 2.0000 1 2 113781 151.5500 C22 C26 S ## 4 30.0000 1 2 113781 151.5500 C22 C26 S ## 5 25.0000 1 2 113781 151.5500 C22 C26 S ## 6 48.0000 0 0 19952 26.5500 E12 S ## home.dest ## 1 St Louis, MO ## 2 Montreal, PQ / Chesterville, ON ## 3 Montreal, PQ / Chesterville, ON ## 4 Montreal, PQ / Chesterville, ON ## 5 Montreal, PQ / Chesterville, ON ## 6 New York, NY
tail(titanic)
الإخراج:
## X pclass survived name sex age sibsp ## 1304 1304 3 0 Yousseff, Mr. Gerious male NA 0 ## 1305 1305 3 0 Zabour, Miss. Hileni female 14.5 1 ## 1306 1306 3 0 Zabour, Miss. Thamine female NA 1 ## 1307 1307 3 0 Zakarian, Mr. Mapriededer male 26.5 0 ## 1308 1308 3 0 Zakarian, Mr. Ortin male 27.0 0 ## 1309 1309 3 0 Zimmerman, Mr. Leo male 29.0 0 ## parch ticket fare cabin embarked home.dest ## 1304 0 2627 14.4583 C ## 1305 0 2665 14.4542 C ## 1306 0 2665 14.4542 C ## 1307 0 2656 7.2250 C ## 1308 0 2670 7.2250 C ## 1309 0 315082 7.8750 S
من مخرجات الرأس والذيل، يمكنك ملاحظة عدم خلط البيانات. هذه قضية كبيرة! عندما تقوم بتقسيم بياناتك بين مجموعة القطار ومجموعة الاختبار، ستختار فقط الراكب من الفئتين 1 و2 (لا يوجد راكب من الفئة 3 ضمن أعلى 80 بالمائة من الملاحظات)، مما يعني أن الخوارزمية لن ترى أبدًا ميزات راكب الفئة 3. سيؤدي هذا الخطأ إلى سوء التنبؤ.
للتغلب على هذه المشكلة، يمكنك استخدام الدالة Sample().
shuffle_index <- sample(1:nrow(titanic)) head(shuffle_index)
شرح رمز شجرة القرار R
- Sample(1:nrow(titanic)): إنشاء قائمة عشوائية من الفهرس من 1 إلى 1309 (أي الحد الأقصى لعدد الصفوف).
الإخراج:
## [1] 288 874 1078 633 887 992
سوف تستخدم هذا الفهرس لخلط مجموعة البيانات العملاقة.
titanic <- titanic[shuffle_index, ]
head(titanic)
الإخراج:
## X pclass survived ## 288 288 1 0 ## 874 874 3 0 ## 1078 1078 3 1 ## 633 633 3 0 ## 887 887 3 1 ## 992 992 3 1 ## name sex age ## 288 Sutton, Mr. Frederick male 61 ## 874 Humblen, Mr. Adolf Mathias Nicolai Olsen male 42 ## 1078 O'Driscoll, Miss. Bridget female NA ## 633 Andersson, Mrs. Anders Johan (Alfrida Konstantia Brogren) female 39 ## 887 Jermyn, Miss. Annie female NA ## 992 Mamee, Mr. Hanna male NA ## sibsp parch ticket fare cabin embarked home.dest## 288 0 0 36963 32.3208 D50 S Haddenfield, NJ ## 874 0 0 348121 7.6500 F G63 S ## 1078 0 0 14311 7.7500 Q ## 633 1 5 347082 31.2750 S Sweden Winnipeg, MN ## 887 0 0 14313 7.7500 Q ## 992 0 0 2677 7.2292 C
الخطوة 2) تنظيف مجموعة البيانات
تحتوي عدة متغيرات على قيم مفقودة (NA). تتم عملية التنظيف على ثلاثة أجزاء:
- قم بحذف المتغيرات home.dest و cabin و name و X و ticket
- إنشاء متغيرات عامل لـ pclass ونجا
- إسقاط NA
library(dplyr) # Drop variables clean_titanic <- titanic %>% select(-c(home.dest, cabin, name, X, ticket)) %>% #Convert to factor level mutate(pclass = factor(pclass, levels = c(1, 2, 3), labels = c('Upper', 'Middle', 'Lower')), survived = factor(survived, levels = c(0, 1), labels = c('No', 'Yes'))) %>% na.omit() glimpse(clean_titanic)
Code تفسير
- حدد(-c(home.dest, Cabin, name, X, Ticket)): قم بإسقاط المتغيرات غير الضرورية
- pclass = factor(pclass, levels = c(1,2,3), labels= c('Upper', 'Middle', 'Lower')): أضف التسمية إلى المتغير pclass. يصبح 1 هو Upper، ويصبح 2 هو Middle، ويصبح 3 هو Lower
- عامل(نجا، المستويات = c(0،1)، التصنيفات = c('لا'، 'نعم')): أضف تصنيفات إلى المتغير نجا. 0 يصبح لا و1 يصبح نعم
- na.omit(): إزالة ملاحظات NA
الإخراج:
## Observations: 1,045 ## Variables: 8 ## $ pclass <fctr> Upper, Lower, Lower, Upper, Middle, Upper, Middle, U... ## $ survived <fctr> No, No, No, Yes, No, Yes, Yes, No, No, No, No, No, Y... ## $ sex <fctr> male, male, female, female, male, male, female, male... ## $ age <dbl> 61.0, 42.0, 39.0, 49.0, 29.0, 37.0, 20.0, 54.0, 2.0, ... ## $ sibsp <int> 0, 0, 1, 0, 0, 1, 0, 0, 4, 0, 0, 1, 1, 0, 0, 0, 1, 1,... ## $ parch <int> 0, 0, 5, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 2, 0, 4, 0,... ## $ fare <dbl> 32.3208, 7.6500, 31.2750, 25.9292, 10.5000, 52.5542, ... ## $ embarked <fctr> S, S, S, S, S, S, S, S, S, C, S, S, S, Q, C, S, S, C...
الخطوة 3) إنشاء مجموعة تدريب/اختبار
قبل تدريب النموذج الخاص بك، تحتاج إلى تنفيذ خطوتين:
- إنشاء قطار ومجموعة اختبار: يمكنك تدريب النموذج على مجموعة القطار واختبار التنبؤ على مجموعة الاختبار (أي البيانات غير المرئية)
- قم بتثبيت rpart.plot من وحدة التحكم
الممارسة الشائعة هي تقسيم البيانات بنسبة 80/20، حيث يعمل 80 بالمائة من البيانات على تدريب النموذج، و20 بالمائة في عمل التنبؤات. تحتاج إلى إنشاء إطارين منفصلين للبيانات. لا تريد لمس مجموعة الاختبار حتى تنتهي من بناء النموذج الخاص بك. يمكنك إنشاء اسم دالة create_train_test() الذي يأخذ ثلاث وسائط.
create_train_test(df, size = 0.8, train = TRUE) arguments: -df: Dataset used to train the model. -size: Size of the split. By default, 0.8. Numerical value -train: If set to `TRUE`, the function creates the train set, otherwise the test set. Default value sets to `TRUE`. Boolean value.You need to add a Boolean parameter because R does not allow to return two data frames simultaneously.
create_train_test <- function(data, size = 0.8, train = TRUE) { n_row = nrow(data) total_row = size * n_row train_sample <- 1: total_row if (train == TRUE) { return (data[train_sample, ]) } else { return (data[-train_sample, ]) } }
Code تفسير
- الوظيفة (البيانات، الحجم = 0.8، القطار = TRUE): أضف الوسائط في الوظيفة
- n_row = nrow(data): حساب عدد الصفوف في مجموعة البيانات
- Total_row = size*n_row: قم بإرجاع الصف n لإنشاء مجموعة القطار
- Train_sample <- 1:total_row: حدد الصف الأول من الصفوف n
- if (train ==TRUE){ } else { }: إذا تم ضبط الشرط على true، قم بإرجاع مجموعة القطار، وإلا قم بإرجاع مجموعة الاختبار.
يمكنك اختبار وظيفتك والتحقق من البعد.
data_train <- create_train_test(clean_titanic, 0.8, train = TRUE) data_test <- create_train_test(clean_titanic, 0.8, train = FALSE) dim(data_train)
الإخراج:
## [1] 836 8
dim(data_test)
الإخراج:
## [1] 209 8
تحتوي مجموعة بيانات التدريب على 836 صفًا و8 أعمدة، بينما تحتوي مجموعة بيانات الاختبار على 209 صفوف ونفس الأعمدة الثمانية.
يمكنك استخدام الدالة Prop.table() مع table() للتحقق من صحة عملية التوزيع العشوائي.
prop.table(table(data_train$survived))
الإخراج:
## ## No Yes ## 0.5944976 0.4055024
prop.table(table(data_test$survived))
الإخراج:
## ## No Yes ## 0.5789474 0.4210526
وفي كلتا مجموعتي البيانات، فإن عدد الناجين هو نفسه، حوالي 40 بالمائة.
قم بتثبيت rpart.plot
rpart.plot غير متوفر من مكتبات conda. يمكنك تثبيته من وحدة التحكم:
install.packages("rpart.plot")
الخطوة 4) بناء النموذج
أنت الآن جاهز لبناء النموذج. صيغة دالة شجرة القرار rpart() هي:
rpart(formula, data=, method='') arguments: - formula: The function to predict - data: Specifies the data frame - method: - "class" for a classification tree - "anova" for a regression tree
يمكنك استخدام طريقة الفصل لأنك تتنبأ بالفصل.
library(rpart) library(rpart.plot) fit <- rpart(survived~., data = data_train, method = 'class') rpart.plot(fit, extra = 106)
Code تفسير
- rpart(): الدالة التي تناسب النموذج. الحجج هي:
- نجا ~.: صيغة أشجار القرار
- البيانات = data_train: مجموعة البيانات
- الطريقة = 'الفئة': تناسب النموذج الثنائي
- rpart.plot(fit, extra= 106): يرسم الشجرة. تم ضبط الوسيط الإضافي على 106، والذي يعرض احتمالية الفئة الثانية بالإضافة إلى النسبة المئوية للملاحظات في كل عقدة. يمكنك الرجوع إلى المقالة القصيرة لمزيد من المعلومات حول الاختيارات الأخرى.
الإخراج:
تبدأ من العقدة الجذرية، في أعلى الرسم البياني، وعلى عمق 0 من 3:
- في الأعلى، هو الاحتمال العام للبقاء على قيد الحياة. ويبين نسبة الركاب الذين نجوا من الحادث. نجا 41 بالمائة من الركاب.
- تستفسر هذه العقدة عما إذا كان الراكب ذكراً. إذا كانت الإجابة بنعم، تنتقل إلى الفرع الأيسر من العقدة الجذرية (العمق 1). 63% من الركاب ذكور، واحتمالية بقائهم على قيد الحياة 21%.
- في العقدة الثانية، تسأل ما إذا كان عمر الراكب الذكر أكبر من 3.5 سنة. إذا كانت الإجابة بنعم، فإن فرصة البقاء على قيد الحياة هي 19 بالمائة.
- عليك أن تستمر على هذا المنوال لفهم الميزات التي تؤثر على احتمالية البقاء على قيد الحياة.
لاحظ أن إحدى الخصائص العديدة لأشجار القرار هي أنها تتطلب القليل جدًا من إعداد البيانات. وعلى وجه الخصوص، فهي لا تتطلب تغيير حجم الميزة أو توسيطها.
تستخدم الدالة rpart() افتراضيًا جيني يُستخدم مقياس عدم التجانس لاختيار كل تقسيم. كلما ارتفعت قيمة جيني، زاد اختلاط الفئات داخل تلك العقدة، لذا تختار الخوارزمية دائمًا التقسيم الذي يُقللها إلى أدنى حد.
الخطوة 5) قم بالتنبؤ
يمكنك التنبؤ بمجموعة بيانات الاختبار الخاصة بك. للقيام بالتنبؤ، يمكنك استخدام وظيفة التنبؤ (). بناء الجملة الأساسي للتنبؤ بشجرة قرار R هو:
predict(fitted_model, df, type = 'class') arguments: - fitted_model: This is the object stored after model estimation. - df: Data frame used to make the prediction - type: Type of prediction - 'class': for classification - 'prob': to compute the probability of each class - 'vector': Predict the mean response at the node level
أنت الآن تتوقع، لكل راكب من الركاب الـ 209 في مجموعة الاختبار، ما إذا كان النموذج يتوقع نجاتهم من الاصطدام.
predict_unseen <-predict(fit, data_test, type = 'class')
Code تفسير
- توقع (fit، data_test، type = 'class'): توقع الفئة (0/1) لمجموعة الاختبار
والآن قارن بين الفئات المتوقعة والنتائج الحقيقية.
table_mat <- table(data_test$survived, predict_unseen)
table_mat
Code تفسير
- table(data_test$survived, predict_unseen): أنشئ جدولًا طوارئًا للفئات المتوقعة مقابل النتيجة الحقيقية
الإخراج:
## predict_unseen ## No Yes ## No 106 15 ## Yes 30 58
تمثل الصفوف القيم الفعلية، بينما تمثل الأعمدة التوقعات. وقد حدد النموذج بشكل صحيح 106 من غير الناجين و58 من الناجين، ولكنه صنف 15 من غير الناجين على أنهم ناجون و30 من الناجين على أنهم متوفون.
الخطوة 6) قياس الأداء
يمكنك حساب مقياس الدقة لمهمة التصنيف باستخدام الارتباك مصفوفة:
استخدم الارتباك مصفوفة هو خيار أفضل لتقييم أداء التصنيف. الفكرة العامة هي حساب عدد المرات التي يتم فيها تصنيف المثيلات الحقيقية على أنها خاطئة.
يمثل كل صف في مصفوفة الارتباك هدفًا فعليًا، بينما يمثل كل عمود هدفًا متوقعًا. ويتناول الصف الأول من هذه المصفوفة الركاب الذين توفوا (الفئة السلبية): تم تصنيف 106 منهم بشكل صحيح على أنهم متوفون (صحيح سلبيبينما تم تصنيف 15 شخصًا بشكل خاطئ على أنهم ناجون (إيجابية كاذبة). أما الصف الثاني فيتناول الناجين: تم التعرف على 58 منهم بشكل صحيح (صحيح إيجابيبينما تم تفويت 30 حالة (سلبي خطأ).
يمكنك حساب اختبار الدقة من مصفوفة الارتباك :
إنها نسبة الإيجابية الحقيقية والسالبة الحقيقية إلى مجموع المصفوفة. باستخدام R، يمكنك البرمجة على النحو التالي:
accuracy_Test <- sum(diag(table_mat)) / sum(table_mat)
Code تفسير
- sum(diag(table_mat)): مجموع القطر
- sum(table_mat): مجموع المصفوفة.
يمكنك طباعة دقة مجموعة الاختبار:
print(paste('Accuracy for test', accuracy_Test))
الإخراج:
## [1] "Accuracy for test 0.784688995215311"
بلغت دقة النموذج على مجموعة الاختبار 0.7847، أي ما يعادل 78.47%. كرر العملية على مجموعة التدريب لمعرفة مدى فرط ملاءمة النموذج.
الخطوة 7) ضبط المعلمات الفائقة
تحتوي شجرة القرار في R على معلمات مختلفة تتحكم في جوانب الملاءمة. في مكتبة شجرة القرار rpart، يمكنك التحكم في المعلمات باستخدام الدالة rpart.control(). في الكود التالي، يمكنك تقديم المعلمات التي ستقوم بضبطها. يمكنك الرجوع إلى المقالة القصيرة لمعلمات أخرى.
rpart.control(minsplit = 20, minbucket = round(minsplit/3), maxdepth = 30) Arguments: -minsplit: Set the minimum number of observations in the node before the algorithm perform a split -minbucket: Set the minimum number of observations in a terminal node, i.e. the leaf -maxdepth: Set the maximum depth of any node of the final tree. The root node is treated as depth 0
سنتصرف على النحو التالي:
- إنشاء وظيفة لإرجاع الدقة
- ضبط الحد الأقصى للعمق
- قم بضبط الحد الأدنى لعدد العينات التي يجب أن تحتوي عليها العقدة قبل أن تتمكن من الانقسام
- ضبط الحد الأدنى لعدد العينة التي يجب أن تحتوي عليها العقدة الورقية
يمكنك كتابة وظيفة لعرض الدقة. يمكنك ببساطة تغليف الكود الذي استخدمته من قبل:
- توقع: توقع_غير مرئي <- توقع (مناسب، data_test، اكتب = 'class')
- إنتاج الجدول: table_mat <- table(data_test$survived,predict_unseen)
- دقة الحساب: اختبار الدقة <- sum(diag(table_mat))/sum(table_mat)
accuracy_tune <- function(fit) { predict_unseen <- predict(fit, data_test, type = 'class') table_mat <- table(data_test$survived, predict_unseen) accuracy_Test <- sum(diag(table_mat)) / sum(table_mat) accuracy_Test }
الآن، اضبط المعايير وجرّب تحسين النموذج الافتراضي. للتذكير، يجب أن تتجاوز دقة النموذج 0.7847.
control <- rpart.control(minsplit = 4,
minbucket = round(5 / 3),
maxdepth = 3,
cp = 0)
tune_fit <- rpart(survived~., data = data_train, method = 'class', control = control)
accuracy_tune(tune_fit)
الإخراج:
## [1] 0.7990431
مع المعلمة التالية:
minsplit = 4
minbucket = round(5/3)
maxdepth = 3
cp = 0
ترتفع الدقة من 0.7847 إلى 0.7990، لذا فإن الشجرة المعدلة تتفوق على التكوين الافتراضي بنحو 1.4 نقطة مئوية.
أشجار القرار في لغة R: مرجع سريع للوظائف
يسرد الجدول أدناه كل دالة مستخدمة في الخطوات السبع المذكورة أعلاه، بالإضافة إلى الحزمة التي توفرها والمعلمات التي تتوقعها. R.
| المكتبة | الهدف | الوظيفة | الفئه | المعاملات | تفاصيل |
|---|---|---|---|---|---|
| rpart | شجرة تصنيف القطارات في R | ربارت () | فئة | الصيغة، مدافع، الطريقة | |
| rpart | تدريب شجرة الانحدار | ربارت () | أنوفا | الصيغة، مدافع، الطريقة | |
| rpart | ارسم الأشجار | rpart.plot() | نموذج مناسب | ||
| قاعدة | تنبأ | تنبؤ() | فئة | النموذج المجهز، النوع | |
| قاعدة | تنبأ | تنبؤ() | غالبا | النموذج المجهز، النوع | |
| قاعدة | تنبأ | تنبؤ() | ناقلات | النموذج المجهز، النوع | |
| rpart | المعلمات السيطرة | rpart.control() | com.minsplit | قم بتعيين الحد الأدنى لعدد الملاحظات في العقدة قبل إجراء الخوارزمية للتقسيم | |
| com.minbucket | حدد الحد الأدنى لعدد الملاحظات في العقدة الطرفية، أي الورقة | ||||
| أقصى عمق | حدد أقصى عمق لأي عقدة في الشجرة النهائية. تُعامل العقدة الجذرية على أنها بعمق صفر. | ||||
| rpart | نموذج القطار مع معلمة التحكم | ربارت () | الصيغة، df، الطريقة، التحكم |
ملاحظة: قم بتدريب النموذج على بيانات التدريب واختبار الأداء على مجموعة بيانات غير مرئية، أي مجموعة الاختبار.




