كتاب "النمذجة التنبؤية في الممارسة"

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

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

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

مقتطفات. 7.5. الحوسبة


سيستخدم هذا القسم وظائف من حزم R caret و earth و kernlab و nnet.

يحتوي R على العديد من الحزم والوظائف لإنشاء شبكات عصبية. وتشمل هذه nnet ، العصبية ، وحزم RSNNS. ينصب التركيز الأساسي على حزمة nnet ، التي تدعم النماذج الأساسية للشبكات العصبية بمستوى واحد من المتغيرات الخفية ، وتخفيض الوزن ، وتتميز ببناء بسيط نسبيًا. يدعم RSNNS مجموعة واسعة من الشبكات العصبية. لاحظ أن Bergmeir و Benitez (2012) لديهم وصف موجز للعديد من حزم الشبكة العصبية في R. كما يتوفر البرنامج التعليمي RSNNS هناك.

الشبكات العصبية


لتقريب نموذج الانحدار ، يمكن أن تتلقى وظيفة nnet كل من صيغة النموذج وواجهة المصفوفة. بالنسبة إلى الانحدار ، يتم استخدام العلاقة الخطية بين المتغيرات المخفية والتوقعات مع المعلمة linout = TRUE. ستبدو الدعوة أبسط إلى وظيفة الشبكة العصبية:

> nnetFit <- nnet(predictors, outcome, + size = 5, + decay = 0.01, + linout = TRUE, + ##   + trace = FALSE, + ##      + ##  .. + maxit = 500, + ##   ,   + MaxNWts = 5 * (ncol(predictors) + 1) + 5 + 1) 

هذه الدعوة يخلق نموذج واحد مع خمسة متغيرات خفية. من المفترض أن يتم توحيد البيانات في تنبؤات على مقياس واحد.

لمتوسط ​​الطرز ، يتم استخدام وظيفة avNNet من حزمة علامة الإقحام ، والتي لها نفس الصيغة:

 > nnetAvg <- avNNet(predictors, outcome, + size = 5, + decay = 0.01, + ##    + repeats = 5, + linout = TRUE, + ##   + trace = FALSE, + ##    + ##    .. + maxit = 500, + ##   ,   + MaxNWts = 5 * (ncol(predictors) + 1) + 5 + 1) 

تتم معالجة نقاط البيانات الجديدة بواسطة الأمر

 > predict(nnetFit, newData) > ##  > predict(nnetAvg, newData) 

لإعادة إنتاج الطريقة المعروضة مسبقًا لاختيار عدد المتغيرات المخفية ومقدار تقليل الوزن من خلال أخذ عينات متكررة ، نطبق وظيفة القطار مع المعلمة = "nnet" أو method = "avNNet" ، ونقوم أولاً بإزالة المتنبئين المطلقين (بحيث لا يتجاوز الحد الأقصى لترابط الزوج المطلق بين المتنبئين) 0.75):

 > ## findCorrelation      > ##  ,       > ##       > tooHigh <- findCorrelation(cor(solTrainXtrans), cutoff = .75) > trainXnnet <- solTrainXtrans[, -tooHigh] > testXnnet <- solTestXtrans[, -tooHigh] > ##   -  : > nnetGrid <- expand.grid(.decay = c(0, 0.01, .1), + .size = c(1:10), + ##   —   + ## (.  )   + ##  . + .bag = FALSE) > set.seed(100) > nnetTune <- train(solTrainXtrans, solTrainY, + method = "avNNet", + tuneGrid = nnetGrid, + trControl = ctrl, + ##    + ##     + preProc = c("center", "scale"), + linout = TRUE, + trace = FALSE, + MaxNWts = 10 * (ncol(trainXnnet) + 1) + 10 + 1, + maxit = 500) 

متعدد الأبعاد الانحدار التكيف التكيفي


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

 > marsFit <- earth(solTrainXtrans, solTrainY) > marsFit Selected 38 of 47 terms, and 30 of 228 predictors Importance: NumNonHAtoms, MolWeight, SurfaceArea2, SurfaceArea1, FP142, ... Number of terms at each degree of interaction: 1 37 (additive model) GCV 0.3877448 RSS 312.877 GRSq 0.907529 RSq 0.9213739 

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

 > summary(marsFit) Call: earth(x=solTrainXtrans, y=solTrainY) coefficients (Intercept) -3.223749 FP002 0.517848 FP003 -0.228759 FP059 -0.582140 FP065 -0.273844 FP075 0.285520 FP083 -0.629746 FP085 -0.235622 FP099 0.325018 FP111 -0.403920 FP135 0.394901 FP142 0.407264 FP154 -0.620757 FP172 -0.514016 FP176 0.308482 FP188 0.425123 FP202 0.302688 FP204 -0.311739 FP207 0.457080 h(MolWeight-5.77508) -1.801853 h(5.94516-MolWeight) 0.813322 h(NumNonHAtoms-2.99573) -3.247622 h(2.99573-NumNonHAtoms) 2.520305 h(2.57858-NumNonHBonds) -0.564690 h(NumMultBonds-1.85275) -0.370480 h(NumRotBonds-2.19722) -2.753687 h(2.19722-NumRotBonds) 0.123978 h(NumAromaticBonds-2.48491) -1.453716 h(NumNitrogen-0.584815) 8.239716 h(0.584815-NumNitrogen) -1.542868 h(NumOxygen-1.38629) 3.304643 h(1.38629-NumOxygen) -0.620413 h(NumChlorine-0.46875) -50.431489 h(HydrophilicFactor- -0.816625) 0.237565 h(-0.816625-HydrophilicFactor) -0.370998 h(SurfaceArea1-1.9554) 0.149166 h(SurfaceArea2-4.66178) -0.169960 h(4.66178-SurfaceArea2) -0.157970 Selected 38 of 47 terms, and 30 of 228 predictors Importance: NumNonHAtoms, MolWeight, SurfaceArea2, SurfaceArea1, FP142, ... Number of terms at each degree of interaction: 1 37 (additive model) GCV 0.3877448 RSS 312.877 GRSq 0.907529 RSq 0.9213739 

في هذا الاشتقاق ، h (·) هي وظيفة المفصلة. في النتائج المقدمة ، فإن المكون h (MolWeight-5.77508) يساوي الصفر بالنسبة لوزن جزيئي أقل من 5.77508 (كما في الجزء العلوي من الشكل 7.3). دالة المفصلة المنعكسة لها شكل h (5.77508 - MolWeight).

يمكن استخدام وظيفة plotmo من حزمة الأرض لإنشاء مخططات مشابهة لتلك الموضحة في التين. 7.5. يمكنك استخدام القطار لتكوين النموذج باستخدام إعادة التشكيل الخارجية. الكود التالي يستنسخ النتائج المبينة في الشكل. 7.4:

 > #  -   > marsGrid <- expand.grid(.degree = 1:2, .nprune = 2:38) > #      > set.seed(100) > marsTuned <- train(solTrainXtrans, solTrainY, + method = "earth", + #   -   + tuneGrid = marsGrid, + trControl = trainControl(method = "cv")) > marsTuned 951 samples 228 predictors No pre-processing Resampling: Cross-Validation (10-fold) Summary of sample sizes: 856, 857, 855, 856, 856, 855, ... Resampling results across tuning parameters: degree nprune RMSE Rsquared RMSE SD Rsquared SD 1 2 1.54 0.438 0.128 0.0802 1 3 1.12 0.7 0.0968 0.0647 1 4 1.06 0.73 0.0849 0.0594 1 5 1.02 0.75 0.102 0.0551 1 6 0.984 0.768 0.0733 0.042 1 7 0.919 0.796 0.0657 0.0432 1 8 0.862 0.821 0.0418 0.0237 : : : : : : 2 33 0.701 0.883 0.068 0.0307 2 34 0.702 0.883 0.0699 0.0307 2 35 0.696 0.885 0.0746 0.0315 2 36 0.687 0.887 0.0604 0.0281 2 37 0.696 0.885 0.0689 0.0291 2 38 0.686 0.887 0.0626 0.029 RMSE was used to select the optimal model using the smallest value. The final values used for the model were degree = 1 and nprune = 38. > head(predict(marsTuned, solTestXtrans)) [1] 0.3677522 -0.1503220 -0.5051844 0.5398116 -0.4792718 0.7377222 

تُستخدم وظيفتان لتقييم أهمية كل متنبئ في نموذج MARS: evimp من حزمة الأرض و varImp من حزمة علامة الإقحام (ثانيًا يدعو الأول):

 > varImp(marsTuned) earth variable importance only 20 most important variables shown (out of 228) Overall MolWeight 100.00 NumNonHAtoms 89.96 SurfaceArea2 89.51 SurfaceArea1 57.34 FP142 44.31 FP002 39.23 NumMultBond s 39.23 FP204 37.10 FP172 34.96 NumOxygen 30.70 NumNitrogen 29.12 FP083 28.21 NumNonHBonds 26.58 FP059 24.76 FP135 23.51 FP154 21.20 FP207 19.05 FP202 17.92 NumRotBonds 16.94 FP085 16.02 

يتم قياس هذه النتائج في النطاق من 0 إلى 100 ، وتختلف عن تلك الواردة في الجدول. 7.1 (النموذج الوارد في الجدول 7.1 لم يمر بعملية النمو والاقتطاع الكاملة). لاحظ أن المتغيرات التالية للقلة الأولى منها أقل أهمية بالنسبة للنموذج.

SVM ، طريقة دعم ناقلات


يتم تضمين تطبيقات نماذج SVM في عدة حزم R. يستخدم Chang and Lin (Chang and Lin، 2011) وظيفة svm من الحزمة e1071 لاستخدام الواجهة إلى مكتبة LIBSVM من أجل الانحدار. يوجد تنفيذ أكثر اكتمالا لنماذج SVM لانحدار Karatsogl (Karatzoglou et al. ، 2004) في حزمة kernlab ، والتي تتضمن وظيفة ksvm لنماذج الانحدار وعدد كبير من الوظائف النووية. بشكل افتراضي ، يتم استخدام وظيفة الأساس الشعاعي. إذا كانت قيم التكلفة والمعلمات النووية معروفة ، فيمكن إجراء تقريب النموذج على النحو التالي:

 > svmFit <- ksvm(x = solTrainXtrans, y = solTrainY, + kernel ="rbfdot", kpar = "automatic", + C = 1, epsilon = 0.1) 

لتقدير σ ، تم استخدام التحليل الآلي. بما أن y عبارة عن ناقل رقمي ، من الواضح أن الدالة تقارب نموذج الانحدار (بدلاً من نموذج التصنيف). يمكنك استخدام وظائف kernel الأخرى ، بما في ذلك كثير الحدود (kernel = "polydot") والخطية (kernel = "vanilladot").

إذا كانت القيم غير معروفة ، فيمكن تقديرها عن طريق إعادة أخذ العينات. في القطار ، تحدد قيم "svmRadial" أو "svmLinear" أو "svmPoly" لمعلمة الطريقة وظائف kernel المختلفة:

 > svmRTuned <- train(solTrainXtrans, solTrainY, + method = "svmRadial", + preProc = c("center", "scale"), + tuneLength = 14, + trControl = trainControl(method = "cv")) 

تستخدم وسيطة tuneLength 14 قيمة افتراضية. صورة
صورة يتم إجراء التقدير الافتراضي لـ through من خلال التحليل التلقائي.

 > svmRTuned 951 samples 228 predictors Pre-processing: centered, scaled Resampling: Cross-Validation (10-fold) Summary of sample sizes: 855, 858, 856, 855, 855, 856, ... Resampling results across tuning parameters: C RMSE Rsquared RMSE SD Rsquared SD 0.25 0.793 0.87 0.105 0.0396 0.5 0.708 0.889 0.0936 0.0345 1 0.664 0.898 0.0834 0.0306 2 0.642 0.903 0.0725 0.0277 4 0.629 0.906 0.067 0.0253 8 0.621 0.908 0.0634 0.0238 16 0.617 0.909 0.0602 0.0232 32 0.613 0.91 0.06 0.0234 64 0.611 0.911 0.0586 0.0231 128 0.609 0.911 0.0561 0.0223 256 0.609 0.911 0.056 0.0224 512 0.61 0.911 0.0563 0.0226 1020 0.613 0.91 0.0563 0.023 2050 0.618 0.909 0.0541 0.023 Tuning parameter 'sigma' was held constant at a value of 0.00387 RMSE was used to select the optimal model using the smallest value. The final values used for the model were C = 256 and sigma = 0.00387. 

يحتوي subModel finalModel على الطراز الذي تم إنشاؤه بواسطة الدالة ksvm:

 > svmRTuned$finalModel Support Vector Machine object of class "ksvm" SV type: eps-svr (regression) parameter : epsilon = 0.1 cost C = 256 Gaussian Radial Basis kernel function. Hyperparameter : sigma = 0.00387037424967707 Number of Support Vectors : 625 Objective Function Value : -1020.558 Training error : 0.009163 

كمتجهات مرجعية ، يستخدم النموذج 625 نقطة بيانات لمجموعة التدريب (أي 66٪ من مجموعة التدريب).

تحتوي حزمة kernlab على تطبيق نموذج RVM للانحدار في دالة rvm. يشبه بناء الجملة الخاص به هذا الموجود في المثال الخاص بـ ksvm.

طريقة KNN


تقارن حزمة caren knnreg نموذج الانحدار KNN ؛ تقوم وظيفة القطار بتعيين النموذج على K:

 > #      . > knnDescr <- solTrainXtrans[, -nearZeroVar(solTrainXtrans)] > set.seed(100) > knnTune <- train(knnDescr, + solTrainY, + method = "knn", + #      + #    + preProc = c("center", "scale"), + tuneGrid = data.frame(.k = 1:20), + trControl = trainControl(method = "cv")) 


عن المؤلفين:


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

تعمل كجيل جونسون في مجال الإحصاء والنمذجة التنبؤية للبحوث الدوائية لأكثر من عشر سنوات. المؤسس المشارك لشركة Arbor Analytics ، وهي شركة متخصصة في النمذجة التنبؤية ؛ ترأس سابقًا قسم البحث والتطوير الإحصائي في شركة Pfizer Global. يكرس عمله العلمي لتطبيق وتطوير المنهجية الإحصائية وخوارزميات التعلم.

»يمكن الاطلاع على مزيد من المعلومات حول الكتاب على موقع الناشر
» المحتويات
» مقتطفات

خصم 25 ٪ على كوبون الباعة المتجولين - النمذجة التطبيقية التنبؤية
عند دفع النسخة الورقية من الكتاب ، يتم إرسال كتاب إلكتروني عبر البريد الإلكتروني.

Source: https://habr.com/ru/post/ar462833/


All Articles