مقدمة مبسطة لأساس خوارزمية MapReduce

Can Your Programming Language Do This?

خوارزمية تسمى MapReduce تعتبر أحد الأساسات التي يرتكز عليها محرك البحث Google والتي سمحت له أن يقوم بفهرسة و معالجة عدد مهول من صفحات الإنترنت يقدر بأكثر من 50 بليون صفحة، هذه الخوارزمية (هي أسلوب برمجي Programming Paradigm أكثر من كونها خوارزمية) تسمح للمبرمج أن يصمم برنامجه بحيث يمكن أن يتم تقسيم العمل على عدد كبير من أجهزة الكمبيوتر تعمل كلها معاً لإنهاء العمل بشكل متوازي Parallel Computing. هذه الخوارزمية تعتبر من أهم الخوارزميات الموجودة حالياً و تستخدم في كثير من التطبيقات الكبيرة. في هذه المقالة يشرح الكاتب  بأسلوب مبسط و بعدة أمثلة متتالية الفكرة الأساسية خلف MapReduce، قد تحتاج لمراجع أخرى حتى تستوعب فكرة الخوارزمية بشكل كامل.

إستدراك: أشار الأخ “نواف البديع” في تويتر إلى أن مسمى “خوارزمية” لاينطبق على MapReduce، وهذا القول هو الصواب وقد أشرت لذلك في منتصف المقال، لكني استخدمت كلمة خوارزمية تجاوزاً و لعدم امتلاكي لترجمة جيدة لكلمة Paradigm، كل الشكر للأخ نواف على تعليقه.

كيف تبني نظام توصية (Recommender System)

Data Mining: Finding Similar Items and Users

عندما تتصفح أحد الكتب في موقع أمازون ستجد الموقع يقدم لك توصيات لكتب أخرى قام بشرائها مستخدمين آخرين للموقع، هذه التوصيات غالباً ماتكون قريبةَ جداً من نوعية الكتب (أو السلع) التي تفضلها أنت لأنها عُرِضت عليك بناءً على تحليل البيانات المتعلقة بالسلع التي تفضلها و تفضيلات المستخدمين الآخرين، هذا النوع من تحليل البيانات يتم عبر أنظمة تسمى أنظمة التوصية Recommender Systems (كذلك يسمى Collaborative Filtering في بعض الأحيان). يقدم كاتب هذه المقالة شرحاً مختصراً عن هذه الأنظمة و يعرض مثالاً حياً (مع كود برمجي بلغة Ruby) لعدد من المقاييس (الرياضية) المستخدمة في بناء أنظمة من هذا النوع.