التعلم الآلي على R: تقنيات متخصصة للتحليل التنبئي

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

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

لمن هذا الكتاب؟


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

ماذا ستقرأ في المنشور
1 « » , , , , .

2 « » R. , , .

3 « : » , : .

4 « : » , . , .

5 « : » , , . , .

6 « : » , . , , .

7 « “ ”: » , . , , .

8 « : » , , . - , , , .

9 « : k-» . -.

10 « » , .

11 « » , , . , .

12 « » : R. , , R.


مثال: نمذجة قوة الخرسانة باستخدام شبكة عصبية


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

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

الخطوة 1. جمع البيانات


في هذا التحليل ، سنستخدم بيانات قوة الضغط الملموسة التي قدمتها I-Cheng Yeh إلى مستودع UCI لتعلم الآلة (http://archive.ics.uci.edu/ml). نظرًا لأن Ai-Cheng Ye نجح في استخدام الشبكات العصبية لنمذجة هذه البيانات ، سنحاول إعادة إنتاج عمله من خلال تطبيق نموذج بسيط للشبكة العصبية في R.

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

لتشغيل هذا المثال ، قم بتنزيل ملف Concrete.csv واحفظه في دليل عمل R.

الخطوة 2. البحث وإعداد البيانات


كالعادة ، نبدأ التحليل عن طريق تحميل البيانات في كائن R باستخدام دالة read.csv () والتأكد من أن النتيجة تتوافق مع البنية المتوقعة:

> concrete <- read.csv("concrete.csv")
> str(concrete)
'data.frame':        1030 obs. of 9 variables:
$ cement       : num 141 169 250 266 155 ...
$ slag            : num 212 42.2 0 114 183.4 ...
$ ash             : num 0 124.3 95.7 0 0 ...
$ water          : num 204 158 187 228 193 ...
$ superplastic : num 0 10.8 5.5 0 9.1 0 0 6.4 0 9 ...
$ coarseagg    : num 972 1081 957 932 1047 ...
$ fineagg        : num 748 796 861 670 697 ...
$ age             : int 28 14 28 28 28 90 7 56 28 28 ...
$ strength      : num 29.9 23.5 29.2 45.9 18.3 ...

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

عادةً ما يكون حل هذه المشكلة هو قياس البيانات باستخدام وظيفة التطبيع أو التوحيد. إذا كان توزيع البيانات يتوافق مع منحنى على شكل جرس (التوزيع العادي ، انظر الفصل 2) ، فقد يكون من المنطقي استخدام التوحيد القياسي باستخدام وظيفة المقياس المدمج (). إذا كان توزيع البيانات قريبًا من التوحيد أو مختلفًا تمامًا عن العادي ، فقد يكون التطبيع للنطاق من 0 إلى 1 أكثر ملاءمة. في هذه الحالة ، سنستخدم الخيار الأخير.

في الفصل 3 ، أنشأنا وظيفة التطبيع () الخاصة بنا:

> normalize <- function(x) {
       return((x - min(x)) / (max(x) — min(x)))
}

بعد تنفيذ هذا الرمز ، يمكنك تطبيق وظيفة تطبيع () على جميع أعمدة إطار البيانات المحدد باستخدام وظيفة lapply ():

> concrete_norm <- as.data.frame(lapply(concrete, normalize))

للتحقق من عمل التطبيع ، يمكنك التحقق مما إذا كانت القيم الدنيا والقصوى لسمة القوة هي 0 و 1 ، على التوالي:

> summary(concrete_norm$strength)
       Min.     1st Qu.         Median     Mean      3rd Qu.      Max.
   0.0000     0.2664         0.4001  0.4172      0.5457   1.0000

للمقارنة: كانت القيم الدنيا والقصوى الأولية لهذه السمة 2.33 و 82.60 ، على التوالي:

> summary(concrete$strength)
     Min.       1st Qu.     Median       Mean      3rd Qu.       Max.
    2.33         23.71       34.44      35.82        46.14      82.60

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

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

> concrete_train <- concrete_norm[1:773, ]
> concrete_test <- concrete_norm[774:1030, ]




الخطوة 3. تدريب النموذج على البيانات


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

R , , . nnet R, , , . , . — RSNNS, , , .

نظرًا لأن حزمة neuralnet غير مضمنة في القاعدة R ، ستحتاج إلى تثبيتها بكتابة install.packages ("neuralnet") وتنزيلها باستخدام أمر المكتبة (neuralnet). يمكن استخدام وظيفة neuralnet () في الحزمة لتدريب الشبكات العصبية في التنبؤ العددي باستخدام بناء الجملة التالي.

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


باستخدام وظيفة neuralnet () من حزمة neuralnet

بناء نموذج:

m <- neuralnet(target ~ predictors, data = mydata,
                       hidden = 1, act.fct = "logistic")

• الهدف - نموذج سيتم بناؤه نتيجة للتدريب على إطار بيانات mydata ؛

• المنبئات - صيغة R التي تحدد الخصائص من إطار بيانات mydata المقرر استخدامها في التنبؤ ؛

• البيانات - إطار البيانات التي ينتمي إليها الهدف والمتنبئون ؛

• مخفي - عدد الخلايا العصبية في الطبقة المخفية (الافتراضي هو 1). ملاحظة: لوصف عدة طبقات مخفية ، يتم استخدام متجه الأعداد الصحيحة ، على سبيل المثال ، c (2 ، 2) ؛

• act.fct - وظيفة التنشيط: "لوجستية" أو "تنه". ملاحظة: يمكن أيضًا استخدام أي وظيفة أخرى قابلة للتمييز.

تقوم الدالة بإرجاع كائن شبكة عصبية يمكن استخدامه للتنبؤ.

التنبؤ:

p <- حساب (م ، اختبار)

• m - تم تدريب النموذج باستخدام وظيفة neuralnet () ؛

• اختبار - إطار بيانات يحتوي على بيانات اختبار لها نفس خصائص بيانات التدريب المستخدمة في إنشاء المصنف.

تقوم الدالة بإرجاع قائمة تتكون من مكونين: الخلايا العصبية $ ، حيث يتم تخزين الخلايا العصبية لكل طبقة شبكة ، و $ net.result ، حيث يتم تخزين القيم المتوقعة باستخدام هذا النموذج.

أمثلة:



concrete_model <- neuralnet(strength ~ cement + slag + ash,
      data = concrete, hidden = c(5, 5), act.fct = "tanh")
model_results <- compute(concrete_model, concrete_data)
strength_predictions <- model_results$net.result

لنبدأ بتدريب أبسط شبكة توزيع مباشر متعددة المستويات مع معلمات افتراضية ، والتي تحتوي على عقدة خفية واحدة فقط:

> concrete_model <- neuralnet(strength ~ cement + slag
         + ash + water + superplastic + coarseagg + fineagg + age,
         data = concrete_train)

ثم ، كما هو موضح في الشكل. 7.11 ، يمكنك تصور طوبولوجيا الشبكة باستخدام وظيفة plot () وتمريرها إلى كائن النموذج الناتج:

> plot(concrete_model)

صورة

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

يمكن اعتبار الشبكة العصبية ذات العقدة المخفية "ابن عم" نماذج الانحدار الخطي التي نوقشت في الفصل 6. تتشابه الأوزان بين عقد الإدخال والعقدة المخفية مع معاملات بيتا ، ووزن الإزاحة يشبه التحول.

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

الخطوة 4. تقييم فعالية النموذج


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

> model_results <- compute(concrete_model, concrete_test[1:8])

وظيفة compute (): تعمل وظيفة compute () بشكل مختلف قليلاً عن وظائف التنبؤ () التي استخدمناها حتى الآن. تقوم بإرجاع قائمة تتكون من مكونين: الخلايا العصبية $ ، حيث يتم تخزين الخلايا العصبية لكل طبقة شبكة ، و $ net.result ، حيث يتم تخزين القيم المتوقعة. نتطلب $ net.result:

> predicted_strength <- model_results$net.result

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

دعني أذكرك أنه للحصول على الارتباط بين متجهين رقميين ، يتم استخدام الدالة cor ():

> cor(predicted_strength, concrete_test$strength)
                    [,1]
[1,] 0.8064655576

لا تقلق إذا كانت نتيجتك مختلفة عن نتيجتنا. نظرًا لأن الشبكة العصبية تبدأ في العمل بأوزان عشوائية ، فقد تختلف التنبؤات الواردة في الكتاب باختلاف النماذج. إذا كنت تريد مطابقة النتائج بدقة ، فجرب الأمر set.seed (12345) قبل البدء في بناء شبكة عصبية.

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

الخطوة 5. تحسين كفاءة النموذج


نظرًا لأن الشبكات ذات الهيكل الأكثر تعقيدًا قادرة على دراسة مفاهيم أكثر تعقيدًا ، فلنرى ما يحدث إذا قمت بزيادة عدد العقد المخفية إلى خمس. سنستخدم الدالة neuralnet () ، كما كان من قبل ، لكننا نضيف المعلمة المخفية = 5:

> concrete_model2 <- neuralnet(strength ~ cement + slag +
                                               ash + water + superplastic +
                                               coarseagg + fineagg + age,
                                               data = concrete_train, hidden = 5)

بعد بناء مخطط الشبكة مرة أخرى (الشكل 7.12) ، سنرى زيادة حادة في عدد الاتصالات. كيف أثر ذلك على الكفاءة؟

> plot(concrete_model2)

يرجى ملاحظة أن الخطأ الناتج (تم قياسه مرة أخرى على أنه SSE) انخفض من 5.08 في النموذج السابق إلى 1.63. بالإضافة إلى ذلك ، ارتفع عدد مراحل التدريب من 4882 إلى 86849 - وهذا ليس مفاجئًا ، بالنظر إلى مدى تعقيد النموذج. كلما زادت تعقيد الشبكة ، زادت الحاجة إلى التكرار للعثور على الأوزان المثلى.

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

> model_results2 <- compute(concrete_model2, concrete_test[1:8])
> predicted_strength2 <- model_results2$net.result
> cor(predicted_strength2, concrete_test$strength)
                  [,1]
[1,] 0.9244533426

صورة

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

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

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

بدلاً من ذلك ، يمكنك استخدام تقريب متجانس لـ ReLU يسمى softplus أو SmoothReLU ، وهي وظيفة تنشيط تُعرف بالسجل (1 + ex). كما يظهر في الشكل. 7.13 ، دالة softplus قريبة من الصفر لقيم x أقل من 0 وتساوي تقريبًا x ل x أكبر من 0.

صورة

لتحديد وظيفة softplus () في R ، نستخدم الكود التالي:

> softplus <- function(x) { log(1 + exp(x)) }

يمكن توفير وظيفة التنشيط لمدخل neuralnet () باستخدام المعلمة act.fct. بالإضافة إلى ذلك ، نضيف طبقة مخفية ثانية تتكون من خمس عقد ، مع تعيين المعلمة المخفية قيمة المتجه الصحيح c (5 ، 5). ونتيجة لذلك ، نحصل على شبكة من طبقتين ، تحتوي كل طبقة على خمس عقد ، وكلها تستخدم وظيفة التنشيط softplus:

> set.seed(12345)
> concrete_model3 <- neuralnet(strength ~ cement + slag +
                                               ash + water + superplastic +
                                               coarseagg + fineagg + age,
                                               data = concrete_train,
                                               hidden = c(5, 5),
                                               act.fct = softplus)

كما كان من قبل ، يمكن تصور الشبكة (الشكل 7.14):

> plot(concrete_model3)

صورة

يمكن حساب العلاقة بين قوة الخرسانة المتوقعة والفعلية على النحو التالي:

> model_results3 <- compute(concrete_model3, concrete_test[1:8])
> predicted_strength3 <- model_results3$net.result
> cor(predicted_strength3, concrete_test$strength)
                  [,1]
[1,] 0.9348395359

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

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

> strengths <- data.frame(
      actual = concrete$strength[774:1030],
      pred = predicted_strength3
   )
> head(strengths, n = 3)
      actual        pred
774 30.14 0.2860639091
775 44.40 0.4777304648
776 24.50 0.2840964250


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

> cor(strengths$pred, strengths$actual)
[1] 0.9348395359






> unnormalize <- function(x) {
     return((x * (max(concrete$strength)) -
           min(concrete$strength)) + min(concrete$strength))
   }

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

> strengths$pred_new <- unnormalize(strengths$pred)
> strengths$error <- strengths$pred_new — strengths$actual
> head(strengths, n = 3)
           actual                pred             pred_new                    error
774          30.14         0.2860639091               23.62887889      -6.511121108
775          44.40         0.4777304648               39.46053639      -4.939463608
776          24.50         0.2840964250               23.46636470      -1.033635298

> cor(strengths$pred_new, strengths$actual)
[1] 0.9348395359

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

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

, ML . , Amazon Web Services (AWS) Microsoft Azure, . 12.


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

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

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

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


من السهل فهم طرق SVM باستخدام التصنيف الثنائي كمثال - هذه هي الطريقة التي يتم استخدامها عادة. لذلك ، في الأقسام المتبقية ، سنركز فقط على مصنفات SVM. تُستخدم أيضًا مبادئ مشابهة لتلك المعروضة هنا عند تكييف طرق SVM للتنبؤ العددي.

نبذة عن الكاتب


يستخدم Brett Lantz (DataSpelunking) تقنيات معالجة البيانات المبتكرة لدراسة السلوك البشري لأكثر من عقد من الزمان. كونه عالم اجتماع من خلال التدريب ، أصبح بريت مهتمًا أولاً بتعلم الآلة أثناء استكشاف قاعدة بيانات كبيرة من الملفات الشخصية للمراهقين على الشبكات الاجتماعية. يعمل بريت معلمًا في DataCamp وغالبًا ما يقدم عروضًا تقديمية في مؤتمرات وندوات التعلم الآلي حول العالم. وهو من المتحمسين المعروفين في مجال التطبيق العملي لعلوم البيانات في مجال الرياضة والمركبات غير المأهولة ودراسة اللغات الأجنبية والموضة ، وكذلك في العديد من الصناعات الأخرى. يأمل بريت أن يكتب يومًا ما عن كل هذا على dataspelunking.com ، وهو تبادل للمعرفة حول العثور على أنماط في البيانات.

حول محرر العلوم


Raghav Bali (Raghav Bali) - باحث أول في واحدة من أكبر مؤسسات الرعاية الصحية في العالم. وهو يشارك في البحث والتطوير لحلول الشركات القائمة على التعلم الآلي ، والتعلم العميق ومعالجة اللغة الطبيعية لاستخدامها في الرعاية الصحية والتأمين. شارك في منصبه السابق في Intel ، في مبادرات استباقية في مجال تكنولوجيا المعلومات ، بناءً على البيانات الضخمة ، باستخدام معالجة اللغة الطبيعية ، والتعلم العميق والأساليب الإحصائية التقليدية. في American Express ، عمل في المشاركة الرقمية والاحتفاظ بالعملاء.

Raghav هو مؤلف العديد من الكتب التي نشرها كبار الناشرين. كتابه الأخير عن آخر دراسة في التحويل.

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

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

لـ Khabrozhiteley خصم 25 ٪ على القسيمة - التعلم الآلي

عند دفع النسخة الورقية من الكتاب ، يتم إرسال كتاب إلكتروني عبر البريد الإلكتروني.

All Articles