أكثر

كيف يكون لديك أكثر من ناتج واحد في جداول التكرار (منشئ النماذج)؟

كيف يكون لديك أكثر من ناتج واحد في جداول التكرار (منشئ النماذج)؟


أقوم بعمل نموذج في مصمم النماذج حيث لدي كمدخلات 5 جداول excel وما أريده هو أن يكون لدي 5 مخرجات في نهاية النموذج. كيف أقوم بذلك؟

أريد أن يكون لدي 5 مخرجات بعد أداة المشروع. النموذج حاليًا مثل هذا:


هل تقول بمجرد تشغيل هذا النموذج ينتهي بك الأمر بجدول واحد ، آخر ورقة عمل في المصنف الخاص بك؟ يجب أن تستخدم الاستبدال المضمن. استخدم ال اسم متغير يخرج من المكرر في فئة ميزات الإخراج الخاصة بك في أداة المشروع. من الأمثلة على ذلك c: temp myData_٪ Name٪ .shp


كيف يمكنني تحسين mysqldump لقاعدة بيانات كبيرة؟

1.2 جيجابايت). أنا أستخدم الآن mysqldump لعمل نسخة احتياطية من قاعدة البيانات كل ليلة.

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

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

راجع للشغل ، أنا أعمل حاليًا على تقليل حجم قاعدة البيانات الإجمالية لحل هذه المشكلة.


2 إجابات 2

أعلم أن MD5 هي خوارزمية التجزئة الأكثر ضعفًا

حسنًا من الناحية الفنية (نحن تقنيون هنا) ، هناك خوارزميات أسوأ من MD5.

وعلى وجه الخصوص عرضة للتصادم

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

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

ليس مجرد حظ. هناك تقنيات للعثور على نص عادي ينتج MD5 المطلوب. هذا موضوع جيد لسؤال مختلف.

حسنًا ، لنفترض أنني قمت بتخزين كلمات المرور باستخدام MD5.

أوتش. السبب الرئيسي لعدم استخدام MD5 هو أنه ملف تجزئة الأغراض العامة (السريعة).

يجب أن تستخدم ملف (بطيء) تجزئة كلمة المرور مثل

  • يوصى بشكل شائع باستخدام BCrypt، ولكن تأكد من تشغيل تجزئة SHA-2 سريعة على بيانات الإدخال ، لذلك لن يتم اقتطاع كلمات المرور الطويلة جدًا بواسطة BCrypt
  • PBKDF2 ولكنه أقل مقاومة لوحدة معالجة الرسومات لأنه يحتوي على متطلبات ذاكرة أقل.
  • سكربت أفضل من BCrypt لو لديك عامل عمل مرتفع بما يكفي. وإلا فهو أسوأ ضد وحدات معالجة الرسومات. (مرة أخرى ، بسبب متطلبات الذاكرة الأعلى أو الأقل)
  • قد يكون الفائز في مسابقة تجزئة كلمة المرور أفضل من السابق ذكره ، لكنه لم يصمد أمام اختبار الزمن حتى الآن ، لذا لا تستخدمه الآن. يطلق عليه Argon2 ، وله إعدادات عامل عمل منفصلة لوقت وحدة المعالجة المركزية وحمل الذاكرة. (لطيف!)
  • يمكن استخدام SHA-2 المتكرر بدلاً من PBKDF2 (لا يزال غير مقاوم لوحدة معالجة الرسومات) ، ولكن هذا أكثر صعوبة لتنفيذ التكرار بكفاءة (أي أن تكون مقاومة للقوة الغاشمة) لأن SHA-2 هو في الواقع تجزئة للأغراض العامة (سريعة).

تولد معظم هذه الخيارات ملحًا عشوائيًا بشكل افتراضي ، ولكن يجب عليك التحقق مما إذا كان هذا هو الحال!

من الأفضل تضمين بعض الفلفل (

72 بت من الانتروبيا) قبل كلمة المرور قبل التجزئة. يمكن أن يكون Pepper هو نفسه لجميع المستخدمين ، ولكن يجب تخزينه في ملف خارج قاعدة البيانات بحيث لا يمكن العثور على هذا المكون عبر حقن SQL.

تأكد من أن عامل العمل الخاص بك يتطلب حوالي 100 مللي ثانية (مع حماية مناسبة من DoS) على أجهزتك المستهدفة (مع العلم أن المهاجمين سيستخدمون أجهزة أسرع للقوة الغاشمة)

بالطبع لن يحمي أي قدر من التجزئة كلمات المرور الضعيفة ، لذا قم بتضمين متطلبات قوة كلمة المرور.

ضعف الاصطدام. هل هناك أي طريقة يمكن للمهاجم من خلالها استخدام هذا كميزة؟

في سياق تخزين تجزئة كلمة المرور ، من المحتمل ألا يساعد هذا المهاجم.

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

لمدة 10 سنوات حتى الآن ، هناك "هجوم البادئة المختارة" على التوقيعات باستخدام md5. في عام 2006 أو 2007 ، أنشأ فريق حول Arjen Lenstra من جامعة Eindhoven التقنية شهادة مارقة تحتوي على نفس تجزئة MD5 مثل تلك الصادرة عن CA تجاري. تطلب الهجوم قوة حاسوبية كبيرة وكان الإعداد معقدًا للغاية ولكن النتيجة كانت أن MD5 تم اختراقه. انظر هنا وهنا.

تم استخدام نفس التقنية أيضًا في هجوم FLAME الشهير.

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


من دليلي كيفية دعم Unicode الكامل في قواعد بيانات MySQL ، إليك الاستعلامات التي يمكنك تشغيلها لتحديث مجموعة الأحرف وترتيبها لقاعدة بيانات أو جدول أو عمود:

(لا تنسخ هذا بشكل أعمى! تعتمد العبارة الدقيقة على نوع العمود ، والحد الأقصى للطول ، والخصائص الأخرى. السطر أعلاه هو مجرد مثال لعمود VARCHAR.)

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

سيقوم هذا الحل بإنشاء الاستعلامات المطلوبة ثم تشغيلها لتحويل قواعد البيانات والجداول والأعمدة. يقوم بتحويل جميع الأعمدة من النوع varchar ، text ، tinytext ، mediumtext ، longtext ، char.

يجب عليك دائما النسخ الاحتياطي لقاعدة البيانات الخاصة بك في حالة حدوث خطأ ما.

انسخ الاستعلام التالي إلى gen_queries.sql ، مع استبدال التكرارات الأربعة لـ YOUR_DATABASE_NAME باسم قاعدة البيانات التي ترغب في تحويلها:

قم بتشغيل الأمر التالي لإنشاء ملف queries.sql جديد ، مع جميع الاستعلامات التي تحتاجها لتحويل قاعدة البيانات:

قم بتشغيل الأمر التالي لتشغيل الاستعلامات وإجراء التحويل:

  • لتشغيل التحويل على قواعد بيانات متعددة ، اضبط table_schema LIKE & quotYOUR_DATABASE_NAME & quot جزء من الاستعلام ، على سبيل المثال:
    • يؤدي الاستبدال بـ table_schema LIKE & quotwiki _٪ & quot إلى تحويل جميع قواعد البيانات التي يبدأ اسمها بـ wiki_
    • الاستبدال بـ table_type! = 'SYSTEM VIEW' سيحول جميع قواعد البيانات

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

    أود كتابة نص برمجي (بلغة Perl ، أو أيًا كان) لاستخدام information_schema (جداول وأعمدة) لتصفح جميع الجداول ، والقيام بتعديل العمود في كل حقل CHAR / VARCHAR / TEXT. سأجمع كل التعديلات في تعديل واحد لكل جدول سيكون هذا أكثر كفاءة.

    أعتقد (لكني لست متأكدًا) أن اقتراح Raihan يغير فقط إفتراضي للجدول.

    ركض في هذا الموقف ، إليك الطريقة التي استخدمتها لتحويل قاعدة البيانات الخاصة بي:

    أولاً ، تحتاج إلى تحرير my.cnf لإجراء اتصال قاعدة بيانات افتراضي (بين التطبيقات و MYSQL) متوافق مع utf8mb4_unicode_ci. بدون هذه الأحرف مثل الرموز التعبيرية وما شابهها التي ترسلها تطبيقاتك لن تصل إلى جداولك بالبايت / الترميز الصحيح (ما لم تحدد معلمات DB CNN للتطبيق الخاص بك اتصال utf8mb4).

    قم بتنفيذ SQL التالي (لا داعي لإعداد SQL لتغيير الأعمدة الفردية ، فإن عبارات ALTER TABLE ستفعل ذلك).

    قبل تنفيذ التعليمات البرمجية أدناه ، استبدل "DbName" باسم قاعدة البيانات الفعلي.

    جمع وحفظ إخراج SQL أعلاه في ملف dot sql وتنفيذه.

    إذا تلقيت خطأ مثل # 1071 - كان المفتاح المحدد طويلًا جدًا ، الحد الأقصى لطول المفتاح هو 1000 بايت. إلى جانب اسم الجدول الإشكالي ، يعني هذا أن مفتاح الفهرس في بعض أعمدة هذا الجدول (الذي كان من المفترض أن يتم تحويله إلى حرف MB4) سيكون كبيرًا جدًا ومن ثم يجب أن يكون عمود Varchar & lt = 250 بحيث يكون مفتاح الفهرس الخاص به 1000 كحد أقصى بايت. تحقق من الأعمدة التي لديك فهارس عليها وإذا كان أحدها عبارة عن varchar> 250 (على الأرجح 255) إذن

    الخطوة 1: تحقق من البيانات في هذا العمود للتأكد من أن الحد الأقصى لحجم السلسلة في هذا العمود هو & lt = 250.

    الخطوة 2: إذا كان الحد الأقصى لطول الحرف لبيانات العمود المفهرسة & lt = 250 ، فقم بتغيير طول العمود إلى 250. إذا لم يكن ذلك ممكنًا ، فقم بإزالة الفهرس من هذا العمود

    الخطوة 3: ثم قم بتشغيل استعلام تبديل الجدول لهذا الجدول مرة أخرى ويجب الآن تحويل الجدول إلى utf8mb4 بنجاح.

    من خلال عملي ، رأيت أن تغيير قاعدة البيانات والجداول لا يكفي. اضطررت للذهاب إلى كل جدول وتعديل كل من أعمدة text / mediumtext / varchar أيضًا.

    لحسن الحظ ، تمكنت من كتابة نص برمجي لاكتشاف البيانات الوصفية لقواعد بيانات MySQL ، بحيث يمكنه المرور عبر الجداول والأعمدة وتغييرها تلقائيًا.

    فهرس طويل لـ MySQL 5.6:

    هناك شيء واحد يجب أن يكون لديك امتياز DBA / SUPER USER للقيام به: إعداد معلمات قاعدة البيانات:

    في إجابات هذا السؤال ، توجد تعليمات حول كيفية تعيين تلك المعلمات أعلاه: https://stackoverflow.com/questions/35847015/mysql-change-innodb-large-prefix

    بالطبع ، في مقالتي ، هناك تعليمات للقيام بذلك أيضًا.

    لإصدار MySQL 5.7 أو أحدث، يكون innodb_large_prefix قيد التشغيل افتراضيًا ، و innodb_file_format هو أيضًا Barracuda افتراضيًا.

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

    1. CHAR => ثنائية
    2. النص => كائن تخزين البيانات الثنائية الكبيرة
    3. TINYTEXT => TINYBLOB
    4. MEDIUMTEXT => MEDIUMBLOB
    5. LONGTEXT => LONGBLOB
    6. VARCHAR => VARBINARY

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

    لقد جربت عدة جداول latin1 واحتفظت بجميع علامات التشكيل.

    يمكنك استخراج هذا الاستعلام لجميع الأعمدة بالقيام بذلك:

    قم بتشغيل جمل SQL التالية للحصول على عبارات النتيجة لتحديث مجموعة الأحرف والترتيب:

    • يقوم فقط بتغيير قاعدة البيانات أو الجداول أو الأعمدة التي لا تتوافق مع مجموعة الأحرف أو الترتيب المحدد.
    • لا يتعامل مع طرق العرض كطاولات عادية.
    • يتجنب انتهاك المفتاح الخارجي عن طريق إيقاف عمليات التحقق ذات الصلة.
    • قم بتحديث القيم المتغيرة وفقًا لذلك قبل تشغيل جمل SQL أعلاه.
      • قد لا يكون الترتيب الافتراضي utf8mb4_0900_ai_ci مناسبًا للغتك المفضلة. على سبيل المثال ، تعتبر أقواس نصف العرض () هي نفسها أقواس العرض الكامل () ، وتسبب مشاكل في بعض الحالات.
      • قم بتشغيل SHOW COLLATION WHERE CHARSET = 'utf8mb4' والتجميع مثل 'utf8mb4٪ 0900٪' واختر ترتيبًا مناسبًا لاحتياجاتك.

      إذا كنت ، مثلي ، لا تثق في الأتمتة ، فهذه هي الطريقة التي تعاملت بها مع المشكلة.

      أولا توقف الحفر!

      ابدأ بتعديل مجموعة الأحرف الافتراضية للجداول الجديدة عن طريق تغيير تعريف قاعدة البيانات (كما هو الحال في جميع الإجابات الأخرى):

      ثم قم بإنشاء sql لتغيير مجموعة الأحرف الافتراضية للأعمدة الجديدة لجميع الجداول الموجودة:

      الآن يمكننا التعامل مع & quotlegacy & quot

      سرد أنواع بيانات الأحرف التي تستخدمها:

      بالنسبة لي كانت هذه القائمة & quotvarchar & quot و & quottext & quot

      سرد الأحرف_SETS_ قيد الاستخدام:

      هذا يعطيني & quotutf8 & quot ، & quotlatin1 & quot ، و & quotutf8mb4 & quot ، وهو سبب لا أثق في الأتمتة ، حيث تخاطر الأعمدة اللاتينية بامتلاك بيانات قذرة.

      يمكنك الآن إنشاء قائمة بجميع الأعمدة التي تحتاج إلى تحديثها:

      تحرير: بناء الجملة الأصلي أعلاه به خطأ.

      يمكن تحويل الجداول التي تحتوي على utf8 أو utf8mb4 فقط باستخدام & quotCONVERT TO CHARACTER SET & quot كما وصف Mathias and MrJingles أعلاه ، ولكنك تخاطر بتغيير MySQL للأنواع نيابةً عنك ، لذلك قد يكون من الأفضل تشغيل & quotCHANGE COLUMN & quot بدلاً من ذلك لأن ذلك يمنحك التحكم في ما هو بالضبط يحدث.

      إذا كان لديك أعمدة غير utf8 ، فقد تعطي هذه الأسئلة مصدر إلهام حول التحقق من بيانات الأعمدة: https://stackoverflow.com/q/401771/671282 https://stackoverflow.com/q/9304485/671282

      نظرًا لأنك تعرف على الأرجح ما تتوقعه في معظم الأعمدة ، فمن المحتمل أن يتعامل شيء مثل هذا مع معظمها بعد تعديل أحرف non-ascii المسموح بها لتناسب احتياجاتك:

      عندما لم يكن ما سبق مناسبًا ، استخدمت ما يلي يحتوي على بعض الشيء & quotfuzzier & quot؛

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


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

      إذا كنت تريد تخطي الأسطر الفارغة ، فأنت بحاجة إلى القيام بذلك في كل ملف على حدة ، حيث قد يتطابق اللصق مع سطر فارغ من ملف بسطر غير فارغ من ملف آخر. يمكنك استخدام grep لتصفية الأسطر غير الفارغة.

      لاحظ أنه إذا كان للملفين أطوال مختلفة ، فستحصل على ملف 2 دولار فارغ (بغض النظر عن القائمة المنتهية أولاً).


      انتاج:

      ما يلي هو في الواقع عربات التي تجرها الدواب:

      إذا كان لديك إصدار bash 4.4 أو إصدار أحدث ، فسيكون خيار الأفضل من بين كل العوالم متاحًا:

      . بينما مع bash 4.0 ، يمكن أن يكون لديك توتر على حساب اكتشاف الفشل ودعم الخط الجديد الحرفي:

      . أو توافق bash 3.x واكتشاف الأعطال ، ولكن بدون دعم الخط الجديد:

      . أو توافق bash 3.x ودعم الخط الجديد ، ولكن بدون اكتشاف الفشل:

      استخدم jq لإنتاج تعليمة صدفة تقوم بتقييمها:

      بالنظر إلى مستند JSON في سؤالك ، فإن استدعاء jq سينتج السلسلة

      والتي يتم تقييمها بعد ذلك بواسطة قوقعتك. سيؤدي تقييم هذه السلسلة إلى إنشاء المصفوفة المسماة arr مع قيمتي العنصرين value2 و value2_2:

      يعتني عاملsh في jq باقتباس بيانات الصدفة بشكل صحيح.

      بدلاً من ذلك ، انقل الجزء arr = (.) من تعبير jq:

      الآن ، يولد jq فقط قائمة العناصر المقتبسة ، والتي يتم إدراجها بعد ذلك في arr = (.) وتقييمها.


      لقد مر وقت طويل منذ أن لعبت مع NumPy ، لكنني اعتدت استدعاء وظيفة numpy.savetxt لتصدير بياناتي بتنسيق .csv:

      تم إنشاء نموذج الملف mydata.csv وفقًا لذلك:

      بفضل سحر pgfplotstable ، يمكننا القيام بما يلي:

      لا أعرف ما إذا كان من الممكن إزالة الرؤوس ، ولكن على أي حال سأطلب من Christian Feuersänger عن ذلك. :)

      قدم صديقي العزيز بيركوس طريقة لطيفة لإزالة تلك الرؤوس:

      هناك "طريقة" أخرى للقيام بذلك وهي خداع numpy.savetxt ليكون بمثابة:

      والذي سيعطينا ملف الإخراج التالي:

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

      والذي سيولد الناتج التالي:

      الآن ، كود LaTeX الخاص بنا ، بناءً على إجابة آلان:

      باستخدام DTLdisplaydb ، تكون الرؤوس إلزامية. إذا كنت لا تريدها ، يمكنك تكرار قيم قيمة .csv بدلاً من ذلك.

      يمكنك الحصول على مزيد من المعلومات حول هذه الحزم من خلال البحث في علاماتها: siunitx ، datatool ، pgfplotstable


      يعد توفر المحلل اللغوي في كل لغة برمجة تقريبًا أحد مزايا JSON كتنسيق لتبادل البيانات.

      بدلاً من محاولة تنفيذ محلل JSON ، من الأفضل لك استخدام إما أداة مصممة لتحليل JSON مثل jq أو لغة نصية للأغراض العامة بها مكتبة JSON.

      على سبيل المثال ، باستخدام jq ، يمكنك سحب ImageID من العنصر الأول في مصفوفة المثيلات على النحو التالي:

      بدلاً من ذلك ، للحصول على نفس المعلومات باستخدام مكتبة Ruby's JSON:

      لن أجيب على جميع أسئلتك وتعليقاتك المنقحة ولكن آمل أن يكون ما يلي كافياً لتبدأ.

      افترض أن لديك برنامج نصي من Ruby يمكنه قراءة من STDIN وإخراج السطر الثاني في مثالك الناتج [0]. قد يبدو هذا النص كما يلي:

      كيف يمكنك استخدام مثل هذا السيناريو لتحقيق هدفك كله؟ حسنًا ، افترض أن لديك بالفعل ما يلي:

      • أمر لسرد كل ما تبذلونه من المثيلات
      • أمر للحصول على json أعلاه لأي مثيل في قائمتك وإخراجها إلى STDOU

      تتمثل إحدى الطرق في استخدام صدفتك لدمج هذه الأدوات:

      الآن ، ربما لديك أمر واحد يمنحك كائن json blob واحدًا لجميع الحالات مع المزيد من العناصر في المصفوفة & quotInstances & quot. حسنًا ، إذا كانت هذه هي الحالة ، فستحتاج فقط إلى تعديل البرنامج النصي قليلاً للتكرار خلال المصفوفة بدلاً من مجرد استخدام العنصر الأول.

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

      [0] لاحظ أنه ليس لدي أي فكرة من أين تحصل على مركز التكلفة ، لذا فقد اختلقته للتو.


      6. كيفية تعيين روابط RDF إلى مصادر البيانات الأخرى

      تعمل روابط RDF على تمكين متصفحات البيانات وبرامج الزحف من التنقل بين مصادر البيانات واكتشاف البيانات الإضافية.

      سيحدد مجال التطبيق خصائص RDF المستخدمة كمسند. على سبيل المثال ، خصائص الربط شائعة الاستخدام في مجال وصف الأشخاص هي foaf: know و foaf: based_near و foaf: topic_interest. توجد أمثلة على دمج هذه الخصائص مع قيم الخصائص من DBpedia ، ببليوغرافيا DBLP و RDF Book Mashup في ملفات تعريف FOAF الخاصة بـ Tim Berners-Lee's و Ivan Herman.

      من الشائع استخدام owl: sameAs للإشارة إلى أن مصدر بيانات آخر يوفر أيضًا معلومات حول مورد غير معلوماتي محدد. البومة: يشير الارتباط sameAs إلى أن مرجعي URI يشيران بالفعل إلى نفس الشيء. لذلك ، يتم استخدام owl: sameAs لرسم خريطة بين أسماء URI المستعارة المختلفة (انظر القسم 2.1). أمثلة على استخدام owl: sameAs للإشارة إلى أن اثنين من URIs يتحدثان عن نفس الشيء هما مرة أخرى ملف Tim FOAF الشخصي الذي ينص على أن http://www.w3.org/People/Berners-Lee/card#i يحدد نفس المصدر مثل http: //www4.wiwiss.fu-berlin.de/bookmashup/persons/Tim+Berners-Lee و http://www4.wiwiss.fu-berlin.de/dblp/resource/person/100007. تم العثور على أمثلة استخدام أخرى في DBpedia وخادم Berlin DBLP.

      يمكن تعيين روابط RDF يدويًا ، وهو ما يحدث عادةً لملفات تعريف FOAF ، أو يمكن إنشاؤها بواسطة خوارزميات ربط آلية. عادة ما يتم اتباع هذا النهج لربط مجموعات البيانات الكبيرة.

      6.1 ضبط روابط RDF يدويًا

      قبل أن تتمكن من تعيين روابط RDF يدويًا ، يجب أن تعرف شيئًا عن مجموعات البيانات التي تريد الارتباط بها. من أجل الحصول على نظرة عامة على مجموعات البيانات المختلفة التي يمكن استخدامها كأهداف ربط ، يرجى الرجوع إلى قائمة ربط مجموعة بيانات البيانات المفتوحة. بمجرد تحديد مجموعات بيانات معينة كأهداف ربط مناسبة ، يمكنك البحث يدويًا في هذه المجموعات عن مراجع URI التي تريد الارتباط بها. إذا كان مصدر البيانات لا يوفر واجهة بحث ، على سبيل المثال نقطة نهاية SPARQL أو نموذج ويب HTML ، فيمكنك استخدام متصفحات البيانات المرتبطة مثل Tabulator أو Disco لاستكشاف مجموعة البيانات والعثور على URIs الصحيح.

      يمكنك أيضًا استخدام خدمات مثل Uriqr أو Sindice للبحث عن URIs الموجودة واختيار أكثرها شيوعًا إذا وجدت عدة مرشحين. Uriqr يسمح لك بالعثور على URIs للأشخاص الذين تعرفهم ، ببساطة عن طريق البحث عن أسمائهم. يتم تصنيف النتائج وفقًا لمدى كثافة الإشارة إلى URI معين في مستندات RDF على الويب ، ولكنك ستحتاج إلى تطبيق القليل من الذكاء البشري في اختيار URI الأنسب لاستخدامه. يقوم Sindice بفهرسة الويب الدلالي ويمكنه إخبارك بالمصادر التي تذكر URI معين. لذلك يمكن أن تساعدك الخدمة في اختيار URI الأكثر شيوعًا لمفهوم ما.

      تذكر أن مصادر البيانات قد تستخدم عمليات إعادة توجيه HTTP-303 لإعادة توجيه العملاء من URIs التي تحدد الموارد غير المعلوماتية إلى URIs التي تحدد موارد المعلومات التي تصف الموارد غير المعلوماتية. في هذه الحالة ، تأكد من الارتباط بمرجع URI الذي يحدد المصدر غير المعلوماتي ، وليس المستند الخاص به.

      6.2 التوليد التلقائي للوصلات RDF

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

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

      لا يزال هناك نقص في الأدوات الجيدة سهلة الاستخدام لإنشاء روابط RDF تلقائيًا. لذلك فمن الشائع تنفيذ خوارزميات ربط السجلات الخاصة بمجموعة البيانات لإنشاء روابط RDF بين مصادر البيانات. فيما يلي نصف فئتين من هذه الخوارزميات:

      الخوارزميات القائمة على الأنماط

      في مختلف المجالات ، هناك مخططات تسمية مقبولة بشكل عام. على سبيل المثال ، في مجال النشر توجد أرقام ISBN ، وفي المجال المالي توجد معرفات ISIN. إذا تم استخدام هذه المعرفات كجزء من HTTP URIs التي تحدد موارد معينة ، فمن الممكن استخدام خوارزميات بسيطة قائمة على النمط لإنشاء روابط RDF بين هذه الموارد.

      مثال على مصدر بيانات يستخدم أرقام ISBN كجزء من URIs هو RDF Book Mashup ، والذي يستخدم على سبيل المثال URI http://www4.wiwiss.fu-berlin.de/bookmashup/books/0747581088 لتعريف الكتاب ' هاري بوتر والأمير نصف الدم. جعل الحصول على رقم ISBN في URIs من السهل على DBpedia إنشاء owl: sameAs بين الكتب داخل DBpedia و Book Mashup. يستخدم DBpedia الخوارزمية القائمة على النمط التالية:

      1. كرر كل الكتب في DBpedia التي لها رقم ISBN.
      2. أنشئ بومة: sameAs رابط بين URI لكتاب في DBpedia و Book Mashup URI المقابل باستخدام النمط التالي لـ Book Mashup URIs: http://www4.wiwiss.fu-berlin.de/bookmashup/books/.

      أدى تشغيل هذه الخوارزمية على جميع الكتب في DBpedia إلى إنشاء 9000 رابط RDF تم دمجها مع مجموعة بيانات DBpedia. على سبيل المثال ، الرابط الناتج لكتاب هاري بوتر هو:

      خوارزميات أكثر تعقيدًا قائمة على الخصائص

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

      1. ربط DBpedia و Geonames. تظهر المعلومات حول الأماكن الجغرافية في قاعدة بيانات Geonames وكذلك في DBpedia. من أجل تحديد الأماكن التي تظهر في كلتا مجموعتي البيانات ، يستخدم فريق Geonames دليلًا قائمًا على الملكية يعتمد على عنوان المقالة مع المعلومات الدلالية مثل خطوط الطول والعرض ، وكذلك البلد والتقسيم الإداري ونوع الميزة والسكان والفئات. أدى تشغيل هذا الاستدلال على كلا مصدري البيانات إلى 70500 مراسلة تم دمجها على أنها روابط Geonames owl: sameAs مع مجموعة بيانات DBpedia وكذلك مع مجموعة بيانات Geonames.
      2. ربط Jamendo و MusicBrainz. يرجى الرجوع إلى منشور مدونة Yves Raimond حول منهجه في ربط Jamendo و MusicBrainz.

      محتويات

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

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

      على المدى التعلم الالي صُمم في عام 1959 على يد آرثر صموئيل ، أحد شركات IBMer الأمريكية والرائد في مجال ألعاب الكمبيوتر والذكاء الاصطناعي. [8] [9] كان الكتاب التمثيلي لبحوث التعلم الآلي خلال الستينيات هو كتاب نيلسون عن آلات التعلم ، ويتعامل في الغالب مع التعلم الآلي لتصنيف الأنماط. [10] استمر الاهتمام بالتعرف على الأنماط في السبعينيات ، كما وصفه دودا وهارت في عام 1973. [11] في عام 1981 ، تم تقديم تقرير عن استخدام استراتيجيات التدريس بحيث تتعلم الشبكة العصبية التعرف على 40 حرفًا (26 حرفًا ، 10) و 4 رموز خاصة) من محطة كمبيوتر. [12]

      قدم توم إم ميتشل تعريفًا رسميًا مقتبسًا على نطاق واسع للخوارزميات التي تمت دراستها في مجال التعلم الآلي: "يُقال إن برنامج الكمبيوتر يتعلم من التجربة ه فيما يتعلق بفئة معينة من المهام تي وقياس الأداء ص إذا كان أداءها في المهام في تي، كما تم قياسه بواسطة صيتحسن مع الخبرة ه. "[13] يقدم هذا التعريف للمهام التي يتعلق بها التعلم الآلي تعريفًا تشغيليًا أساسيًا بدلاً من تعريف المجال من خلال المصطلحات المعرفية. وهذا يتبع اقتراح آلان تورينج في ورقته" الحوسبة الآلية والذكاء "، حيث السؤال" هل تستطيع الآلات أن تفكر؟ "بالسؤال" هل تستطيع الآلات أن تفعل ما يمكننا (ككيانات تفكير) القيام به؟ ". [14]

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

      تحرير الذكاء الاصطناعي

      كمحاولة علمية ، نشأ التعلم الآلي من السعي وراء الذكاء الاصطناعي. في الأيام الأولى للذكاء الاصطناعي كنظام أكاديمي ، كان بعض الباحثين مهتمين بتعلم الآلات من البيانات. لقد حاولوا التعامل مع المشكلة بأساليب رمزية مختلفة ، بالإضافة إلى ما كان يُطلق عليه فيما بعد "الشبكات العصبية" ، وكانت هذه في الغالب عبارة عن نماذج مدركة ونماذج أخرى تم اكتشافها لاحقًا على أنها اختراعات للنماذج الخطية المعممة للإحصاءات. [18] كما تم استخدام الاستدلال الاحتمالي ، خاصة في التشخيص الطبي الآلي. [19]: 488

      ومع ذلك ، تسبب التركيز المتزايد على النهج المنطقي القائم على المعرفة في حدوث شقاق بين الذكاء الاصطناعي والتعلم الآلي. ابتليت الأنظمة الاحتمالية بالمشكلات النظرية والعملية المتعلقة بالحصول على البيانات وتمثيلها. [19]: 488 بحلول عام 1980 ، أصبحت الأنظمة الخبيرة تهيمن على الذكاء الاصطناعي ، وكانت الإحصائيات غير مواتية. [20] استمر العمل على التعلم الرمزي / القائم على المعرفة داخل الذكاء الاصطناعي ، مما أدى إلى برمجة المنطق الاستقرائي ، لكن الخط الإحصائي للبحث أصبح الآن خارج مجال الذكاء الاصطناعي الصحيح ، في التعرف على الأنماط واسترجاع المعلومات. [19]: 708-710 755 تم التخلي عن أبحاث الشبكات العصبية بواسطة الذكاء الاصطناعي وعلوم الكمبيوتر في نفس الوقت تقريبًا. استمر هذا الخط أيضًا خارج مجال الذكاء الاصطناعي / علوم الكمبيوتر ، باعتباره "ارتباطًا" ، بواسطة باحثين من تخصصات أخرى بما في ذلك هوبفيلد وروميلهارت وهينتون. جاء نجاحهم الرئيسي في منتصف الثمانينيات مع إعادة اختراع التكاثر العكسي. [19]: 25

      بدأ التعلم الآلي (ML) ، الذي أعيد تنظيمه كحقل منفصل ، في الازدهار في التسعينيات. غير المجال هدفه من تحقيق الذكاء الاصطناعي إلى معالجة المشكلات ذات الطبيعة العملية القابلة للحل. لقد حولت التركيز بعيدًا عن الأساليب الرمزية التي ورثتها من الذكاء الاصطناعي ، ونحو الأساليب والنماذج المستعارة من الإحصاءات ونظرية الاحتمالات. [20]

      اعتبارًا من عام 2020 ، استمرت العديد من المصادر في التأكيد على أن التعلم الآلي لا يزال حقلاً فرعيًا من الذكاء الاصطناعي. [21] [22] [16] الخلاف الرئيسي هو ما إذا كانت ML جزءًا من الذكاء الاصطناعي ، لأن هذا يعني أن أي شخص يستخدم ML يمكنه الادعاء بأنه يستخدم الذكاء الاصطناعي. يرى البعض الآخر أن تعلم الآلة ليس كل جزء من الذكاء الاصطناعي [23] [24] [25] حيث تكون مجموعة فرعية "ذكية" فقط من ML جزءًا من الذكاء الاصطناعي. [26]

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

      استخراج البيانات تحرير

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

      تحرير التحسين

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

      تحرير التعميم

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

      تحرير الإحصائيات

      يعد التعلم الآلي والإحصاء مجالين وثيقين الصلة من حيث الأساليب ، ولكنهما متميزان في هدفهما الرئيسي: تستمد الإحصائيات الاستدلالات السكانية من عينة ، بينما يجد التعلم الآلي أنماطًا تنبؤية قابلة للتعميم. [32] وفقًا لمايكل جوردان ، فإن أفكار التعلم الآلي ، من المبادئ المنهجية إلى الأدوات النظرية ، لها تاريخ سابق طويل في الإحصاء. [33] He also suggested the term data science as a placeholder to call the overall field. [33]

      Leo Breiman distinguished two statistical modeling paradigms: data model and algorithmic model, [34] wherein "algorithmic model" means more or less the machine learning algorithms like Random forest.

      Some statisticians have adopted methods from machine learning, leading to a combined field that they call statistical learning. [35]

      A core objective of a learner is to generalize from its experience. [4] [36] Generalization in this context is the ability of a learning machine to perform accurately on new, unseen examples/tasks after having experienced a learning data set. The training examples come from some generally unknown probability distribution (considered representative of the space of occurrences) and the learner has to build a general model about this space that enables it to produce sufficiently accurate predictions in new cases.

      The computational analysis of machine learning algorithms and their performance is a branch of theoretical computer science known as computational learning theory. Because training sets are finite and the future is uncertain, learning theory usually does not yield guarantees of the performance of algorithms. Instead, probabilistic bounds on the performance are quite common. The bias–variance decomposition is one way to quantify generalization error.

      For the best performance in the context of generalization, the complexity of the hypothesis should match the complexity of the function underlying the data. If the hypothesis is less complex than the function, then the model has under fitted the data. If the complexity of the model is increased in response, then the training error decreases. But if the hypothesis is too complex, then the model is subject to overfitting and generalization will be poorer. [37]

      In addition to performance bounds, learning theorists study the time complexity and feasibility of learning. In computational learning theory, a computation is considered feasible if it can be done in polynomial time. There are two kinds of time complexity results. Positive results show that a certain class of functions can be learned in polynomial time. Negative results show that certain classes cannot be learned in polynomial time.

      Machine learning approaches are traditionally divided into three broad categories, depending on the nature of the "signal" or "feedback" available to the learning system:

        : The computer is presented with example inputs and their desired outputs, given by a "teacher", and the goal is to learn a general rule that maps inputs to outputs. : No labels are given to the learning algorithm, leaving it on its own to find structure in its input. Unsupervised learning can be a goal in itself (discovering hidden patterns in data) or a means towards an end (feature learning). : A computer program interacts with a dynamic environment in which it must perform a certain goal (such as driving a vehicle or playing a game against an opponent). As it navigates its problem space, the program is provided feedback that's analogous to rewards, which it tries to maximize. [4]

      Supervised learning Edit

      Supervised learning algorithms build a mathematical model of a set of data that contains both the inputs and the desired outputs. [38] The data is known as training data, and consists of a set of training examples. Each training example has one or more inputs and the desired output, also known as a supervisory signal. In the mathematical model, each training example is represented by an array or vector, sometimes called a feature vector, and the training data is represented by a matrix. Through iterative optimization of an objective function, supervised learning algorithms learn a function that can be used to predict the output associated with new inputs. [39] An optimal function will allow the algorithm to correctly determine the output for inputs that were not a part of the training data. An algorithm that improves the accuracy of its outputs or predictions over time is said to have learned to perform that task. [13]

      Types of supervised learning algorithms include active learning, classification and regression. [40] Classification algorithms are used when the outputs are restricted to a limited set of values, and regression algorithms are used when the outputs may have any numerical value within a range. As an example, for a classification algorithm that filters emails, the input would be an incoming email, and the output would be the name of the folder in which to file the email.

      Similarity learning is an area of supervised machine learning closely related to regression and classification, but the goal is to learn from examples using a similarity function that measures how similar or related two objects are. It has applications in ranking, recommendation systems, visual identity tracking, face verification, and speaker verification.

      Unsupervised learning Edit

      Unsupervised learning algorithms take a set of data that contains only inputs, and find structure in the data, like grouping or clustering of data points. The algorithms, therefore, learn from test data that has not been labeled, classified or categorized. Instead of responding to feedback, unsupervised learning algorithms identify commonalities in the data and react based on the presence or absence of such commonalities in each new piece of data. A central application of unsupervised learning is in the field of density estimation in statistics, such as finding the probability density function. [41] Though unsupervised learning encompasses other domains involving summarizing and explaining data features.

      Cluster analysis is the assignment of a set of observations into subsets (called clusters) so that observations within the same cluster are similar according to one or more predesignated criteria, while observations drawn from different clusters are dissimilar. Different clustering techniques make different assumptions on the structure of the data, often defined by some similarity metric and evaluated, for example, by internal compactness, or the similarity between members of the same cluster, and separation, the difference between clusters. Other methods are based on estimated density و graph connectivity.

      Semi-supervised learning Edit

      Semi-supervised learning falls between unsupervised learning (without any labeled training data) and supervised learning (with completely labeled training data). Some of the training examples are missing training labels, yet many machine-learning researchers have found that unlabeled data, when used in conjunction with a small amount of labeled data, can produce a considerable improvement in learning accuracy.

      In weakly supervised learning, the training labels are noisy, limited, or imprecise however, these labels are often cheaper to obtain, resulting in larger effective training sets. [42]

      Reinforcement learning Edit

      Reinforcement learning is an area of machine learning concerned with how software agents ought to take actions in an environment so as to maximize some notion of cumulative reward. Due to its generality, the field is studied in many other disciplines, such as game theory, control theory, operations research, information theory, simulation-based optimization, multi-agent systems, swarm intelligence, statistics and genetic algorithms. In machine learning, the environment is typically represented as a Markov decision process (MDP). Many reinforcement learning algorithms use dynamic programming techniques. [43] Reinforcement learning algorithms do not assume knowledge of an exact mathematical model of the MDP, and are used when exact models are infeasible. Reinforcement learning algorithms are used in autonomous vehicles or in learning to play a game against a human opponent.

      Dimensionality Reduction Edit

      The Dimensionality reduction is a process of reducing the number of random variables under the consideration by obtaining a set of principal variables. [44] In other words, it is a process of reducing the dimension of your feature set also called no of features. Most of the dimensionality reduction techniques can be considered as either feature elimination or extraction. One of the popular method of dimensionality reduction is called as principal component analysis.

      The PCA involves changing higher dimensional data (eg. 3D) to a smaller space (eg. 2D). This results in a smaller dimension of data, (2D instead of 3D) while keeping all original variables in the model without changing the data. [45]

      Other types Edit

      Other approaches have been developed which don't fit neatly into this three-fold categorisation, and sometimes more than one is used by the same machine learning system. For example topic modeling, meta learning. [46]

      As of 2020, deep learning has become the dominant approach for much ongoing work in the field of machine learning. [7]

      Self learning Edit

      Self-learning as a machine learning paradigm was introduced in 1982 along with a neural network capable of self-learning named crossbar adaptive array (CAA). [47] It is a learning with no external rewards and no external teacher advice. The CAA self-learning algorithm computes, in a crossbar fashion, both decisions about actions and emotions (feelings) about consequence situations. The system is driven by the interaction between cognition and emotion. [48] The self-learning algorithm updates a memory matrix W =||w(a,s)|| such that in each iteration executes the following machine learning routine:

      It is a system with only one input, situation s, and only one output, action (or behavior) a. There is neither a separate reinforcement input nor an advice input from the environment. The backpropagated value (secondary reinforcement) is the emotion toward the consequence situation. The CAA exists in two environments, one is the behavioral environment where it behaves, and the other is the genetic environment, wherefrom it initially and only once receives initial emotions about situations to be encountered in the behavioral environment. After receiving the genome (species) vector from the genetic environment, the CAA learns a goal-seeking behavior, in an environment that contains both desirable and undesirable situations. [49]

      Feature learning Edit

      Several learning algorithms aim at discovering better representations of the inputs provided during training. [50] Classic examples include principal components analysis and cluster analysis. Feature learning algorithms, also called representation learning algorithms, often attempt to preserve the information in their input but also transform it in a way that makes it useful, often as a pre-processing step before performing classification or predictions. This technique allows reconstruction of the inputs coming from the unknown data-generating distribution, while not being necessarily faithful to configurations that are implausible under that distribution. This replaces manual feature engineering, and allows a machine to both learn the features and use them to perform a specific task.

      Feature learning can be either supervised or unsupervised. In supervised feature learning, features are learned using labeled input data. Examples include artificial neural networks, multilayer perceptrons, and supervised dictionary learning. In unsupervised feature learning, features are learned with unlabeled input data. Examples include dictionary learning, independent component analysis, autoencoders, matrix factorization [51] and various forms of clustering. [52] [53] [54]

      Manifold learning algorithms attempt to do so under the constraint that the learned representation is low-dimensional. Sparse coding algorithms attempt to do so under the constraint that the learned representation is sparse, meaning that the mathematical model has many zeros. Multilinear subspace learning algorithms aim to learn low-dimensional representations directly from tensor representations for multidimensional data, without reshaping them into higher-dimensional vectors. [55] Deep learning algorithms discover multiple levels of representation, or a hierarchy of features, with higher-level, more abstract features defined in terms of (or generating) lower-level features. It has been argued that an intelligent machine is one that learns a representation that disentangles the underlying factors of variation that explain the observed data. [56]

      Feature learning is motivated by the fact that machine learning tasks such as classification often require input that is mathematically and computationally convenient to process. However, real-world data such as images, video, and sensory data has not yielded to attempts to algorithmically define specific features. An alternative is to discover such features or representations through examination, without relying on explicit algorithms.

      Sparse dictionary learning Edit

      Sparse dictionary learning is a feature learning method where a training example is represented as a linear combination of basis functions, and is assumed to be a sparse matrix. The method is strongly NP-hard and difficult to solve approximately. [57] A popular heuristic method for sparse dictionary learning is the K-SVD algorithm. Sparse dictionary learning has been applied in several contexts. In classification, the problem is to determine the class to which a previously unseen training example belongs. For a dictionary where each class has already been built, a new training example is associated with the class that is best sparsely represented by the corresponding dictionary. Sparse dictionary learning has also been applied in image de-noising. The key idea is that a clean image patch can be sparsely represented by an image dictionary, but the noise cannot. [58]

      Anomaly detection Edit

      In data mining, anomaly detection, also known as outlier detection, is the identification of rare items, events or observations which raise suspicions by differing significantly from the majority of the data. [59] Typically, the anomalous items represent an issue such as bank fraud, a structural defect, medical problems or errors in a text. Anomalies are referred to as outliers, novelties, noise, deviations and exceptions. [60]

      In particular, in the context of abuse and network intrusion detection, the interesting objects are often not rare objects, but unexpected bursts of inactivity. This pattern does not adhere to the common statistical definition of an outlier as a rare object, and many outlier detection methods (in particular, unsupervised algorithms) will fail on such data unless it has been aggregated appropriately. Instead, a cluster analysis algorithm may be able to detect the micro-clusters formed by these patterns. [61]

      Three broad categories of anomaly detection techniques exist. [62] Unsupervised anomaly detection techniques detect anomalies in an unlabeled test data set under the assumption that the majority of the instances in the data set are normal, by looking for instances that seem to fit least to the remainder of the data set. Supervised anomaly detection techniques require a data set that has been labeled as "normal" and "abnormal" and involves training a classifier (the key difference to many other statistical classification problems is the inherently unbalanced nature of outlier detection). Semi-supervised anomaly detection techniques construct a model representing normal behavior from a given normal training data set and then test the likelihood of a test instance to be generated by the model.

      Robot learning Edit

      In developmental robotics, robot learning algorithms generate their own sequences of learning experiences, also known as a curriculum, to cumulatively acquire new skills through self-guided exploration and social interaction with humans. These robots use guidance mechanisms such as active learning, maturation, motor synergies and imitation.

      Association rules Edit

      Association rule learning is a rule-based machine learning method for discovering relationships between variables in large databases. It is intended to identify strong rules discovered in databases using some measure of "interestingness". [63]

      Rule-based machine learning is a general term for any machine learning method that identifies, learns, or evolves "rules" to store, manipulate or apply knowledge. The defining characteristic of a rule-based machine learning algorithm is the identification and utilization of a set of relational rules that collectively represent the knowledge captured by the system. This is in contrast to other machine learning algorithms that commonly identify a singular model that can be universally applied to any instance in order to make a prediction. [64] Rule-based machine learning approaches include learning classifier systems, association rule learning, and artificial immune systems.

      Based on the concept of strong rules, Rakesh Agrawal, Tomasz Imieliński and Arun Swami introduced association rules for discovering regularities between products in large-scale transaction data recorded by point-of-sale (POS) systems in supermarkets. [65] For example, the rule < o n i o n s , p o t a t o e s >⇒ < b u r g e r > >Rightarrow >> found in the sales data of a supermarket would indicate that if a customer buys onions and potatoes together, they are likely to also buy hamburger meat. Such information can be used as the basis for decisions about marketing activities such as promotional pricing or product placements. In addition to market basket analysis, association rules are employed today in application areas including Web usage mining, intrusion detection, continuous production, and bioinformatics. In contrast with sequence mining, association rule learning typically does not consider the order of items either within a transaction or across transactions.

      Learning classifier systems (LCS) are a family of rule-based machine learning algorithms that combine a discovery component, typically a genetic algorithm, with a learning component, performing either supervised learning, reinforcement learning, or unsupervised learning. They seek to identify a set of context-dependent rules that collectively store and apply knowledge in a piecewise manner in order to make predictions. [66]

      Inductive logic programming (ILP) is an approach to rule-learning using logic programming as a uniform representation for input examples, background knowledge, and hypotheses. Given an encoding of the known background knowledge and a set of examples represented as a logical database of facts, an ILP system will derive a hypothesized logic program that entails all positive and no negative examples. Inductive programming is a related field that considers any kind of programming language for representing hypotheses (and not only logic programming), such as functional programs.

      Inductive logic programming is particularly useful in bioinformatics and natural language processing. Gordon Plotkin and Ehud Shapiro laid the initial theoretical foundation for inductive machine learning in a logical setting. [67] [68] [69] Shapiro built their first implementation (Model Inference System) in 1981: a Prolog program that inductively inferred logic programs from positive and negative examples. [70] The term inductive here refers to philosophical induction, suggesting a theory to explain observed facts, rather than mathematical induction, proving a property for all members of a well-ordered set.

      Models Edit

      Performing machine learning involves creating a model, which is trained on some training data and then can process additional data to make predictions. Various types of models have been used and researched for machine learning systems.

      Artificial neural networks Edit

      Artificial neural networks (ANNs), or connectionist systems, are computing systems vaguely inspired by the biological neural networks that constitute animal brains. Such systems "learn" to perform tasks by considering examples, generally without being programmed with any task-specific rules.

      An ANN is a model based on a collection of connected units or nodes called "artificial neurons", which loosely model the neurons in a biological brain. Each connection, like the synapses in a biological brain, can transmit information, a "signal", from one artificial neuron to another. An artificial neuron that receives a signal can process it and then signal additional artificial neurons connected to it. In common ANN implementations, the signal at a connection between artificial neurons is a real number, and the output of each artificial neuron is computed by some non-linear function of the sum of its inputs. The connections between artificial neurons are called "edges". Artificial neurons and edges typically have a weight that adjusts as learning proceeds. The weight increases or decreases the strength of the signal at a connection. Artificial neurons may have a threshold such that the signal is only sent if the aggregate signal crosses that threshold. Typically, artificial neurons are aggregated into layers. Different layers may perform different kinds of transformations on their inputs. Signals travel from the first layer (the input layer) to the last layer (the output layer), possibly after traversing the layers multiple times.

      The original goal of the ANN approach was to solve problems in the same way that a human brain would. However, over time, attention moved to performing specific tasks, leading to deviations from biology. Artificial neural networks have been used on a variety of tasks, including computer vision, speech recognition, machine translation, social network filtering, playing board and video games and medical diagnosis.

      Deep learning consists of multiple hidden layers in an artificial neural network. This approach tries to model the way the human brain processes light and sound into vision and hearing. Some successful applications of deep learning are computer vision and speech recognition. [71]

      Decision trees Edit

      Decision tree learning uses a decision tree as a predictive model to go from observations about an item (represented in the branches) to conclusions about the item's target value (represented in the leaves). It is one of the predictive modeling approaches used in statistics, data mining, and machine learning. Tree models where the target variable can take a discrete set of values are called classification trees in these tree structures, leaves represent class labels and branches represent conjunctions of features that lead to those class labels. Decision trees where the target variable can take continuous values (typically real numbers) are called regression trees. In decision analysis, a decision tree can be used to visually and explicitly represent decisions and decision making. In data mining, a decision tree describes data, but the resulting classification tree can be an input for decision making.

      Support-vector machines Edit

      Support-vector machines (SVMs), also known as support-vector networks, are a set of related supervised learning methods used for classification and regression. Given a set of training examples, each marked as belonging to one of two categories, an SVM training algorithm builds a model that predicts whether a new example falls into one category or the other. [72] An SVM training algorithm is a non-probabilistic, binary, linear classifier, although methods such as Platt scaling exist to use SVM in a probabilistic classification setting. In addition to performing linear classification, SVMs can efficiently perform a non-linear classification using what is called the kernel trick, implicitly mapping their inputs into high-dimensional feature spaces.

      Regression analysis Edit

      Regression analysis encompasses a large variety of statistical methods to estimate the relationship between input variables and their associated features. Its most common form is linear regression, where a single line is drawn to best fit the given data according to a mathematical criterion such as ordinary least squares. The latter is often extended by regularization (mathematics) methods to mitigate overfitting and bias, as in ridge regression. When dealing with non-linear problems, go-to models include polynomial regression (for example, used for trendline fitting in Microsoft Excel [73] ), logistic regression (often used in statistical classification) or even kernel regression, which introduces non-linearity by taking advantage of the kernel trick to implicitly map input variables to higher-dimensional space.

      Bayesian networks Edit

      A Bayesian network, belief network, or directed acyclic graphical model is a probabilistic graphical model that represents a set of random variables and their conditional independence with a directed acyclic graph (DAG). For example, a Bayesian network could represent the probabilistic relationships between diseases and symptoms. Given symptoms, the network can be used to compute the probabilities of the presence of various diseases. Efficient algorithms exist that perform inference and learning. Bayesian networks that model sequences of variables, like speech signals or protein sequences, are called dynamic Bayesian networks. Generalizations of Bayesian networks that can represent and solve decision problems under uncertainty are called influence diagrams.

      Genetic algorithms Edit

      A genetic algorithm (GA) is a search algorithm and heuristic technique that mimics the process of natural selection, using methods such as mutation and crossover to generate new genotypes in the hope of finding good solutions to a given problem. In machine learning, genetic algorithms were used in the 1980s and 1990s. [74] [75] Conversely, machine learning techniques have been used to improve the performance of genetic and evolutionary algorithms. [76]

      Training models Edit

      Usually, machine learning models require a lot of data in order for them to perform well. Usually, when training a machine learning model, one needs to collect a large, representative sample of data from a training set. Data from the training set can be as varied as a corpus of text, a collection of images, and data collected from individual users of a service. Overfitting is something to watch out for when training a machine learning model. Trained models derived from biased data can result in skewed or undesired predictions. Algorithmic bias is a potential result from data not fully prepared for training.

      Federated learning Edit

      Federated learning is an adapted form of distributed artificial intelligence to training machine learning models that decentralizes the training process, allowing for users' privacy to be maintained by not needing to send their data to a centralized server. This also increases efficiency by decentralizing the training process to many devices. For example, Gboard uses federated machine learning to train search query prediction models on users' mobile phones without having to send individual searches back to Google. [77]

      There are many applications for machine learning, including:

      In 2006, the media-services provider Netflix held the first "Netflix Prize" competition to find a program to better predict user preferences and improve the accuracy of its existing Cinematch movie recommendation algorithm by at least 10%. A joint team made up of researchers from AT&T Labs-Research in collaboration with the teams Big Chaos and Pragmatic Theory built an ensemble model to win the Grand Prize in 2009 for $1 million. [79] Shortly after the prize was awarded, Netflix realized that viewers' ratings were not the best indicators of their viewing patterns ("everything is a recommendation") and they changed their recommendation engine accordingly. [80] In 2010 The Wall Street Journal wrote about the firm Rebellion Research and their use of machine learning to predict the financial crisis. [81] In 2012, co-founder of Sun Microsystems, Vinod Khosla, predicted that 80% of medical doctors' jobs would be lost in the next two decades to automated machine learning medical diagnostic software. [82] In 2014, it was reported that a machine learning algorithm had been applied in the field of art history to study fine art paintings and that it may have revealed previously unrecognized influences among artists. [83] In 2019 Springer Nature published the first research book created using machine learning. [84] In 2020, machine learning technology was used to help make diagnoses and aid researchers in developing a cure for COVID-19. [85] Machine learning is recently applied to predict the green behavior of human-being. [86] Recently, machine learning technology is also applied to optimise smartphone's performance and thermal behaviour based on the user's interaction with the phone. [87] [88]

      Although machine learning has been transformative in some fields, machine-learning programs often fail to deliver expected results. [89] [90] [91] Reasons for this are numerous: lack of (suitable) data, lack of access to the data, data bias, privacy problems, badly chosen tasks and algorithms, wrong tools and people, lack of resources, and evaluation problems. [92]

      In 2018, a self-driving car from Uber failed to detect a pedestrian, who was killed after a collision. [93] Attempts to use machine learning in healthcare with the IBM Watson system failed to deliver even after years of time and billions of dollars invested. [94] [95]

      Machine learning has been used as a strategy to update the evidence related to systematic review and increased reviewer burden related to the growth of biomedical literature. While it has improved with training sets, it has not yet developed sufficiently to reduce the workload burden without limiting the necessary sensitivity for the findings research themselves. [96]

      Bias Edit

      Machine learning approaches in particular can suffer from different data biases. A machine learning system trained specifically on current customers may not be able to predict the needs of new customer groups that are not represented in the training data. When trained on man-made data, machine learning is likely to pick up the constitutional and unconscious biases already present in society. [97] Language models learned from data have been shown to contain human-like biases. [98] [99] Machine learning systems used for criminal risk assessment have been found to be biased against black people. [100] [101] In 2015, Google photos would often tag black people as gorillas, [102] and in 2018 this still was not well resolved, but Google reportedly was still using the workaround to remove all gorillas from the training data, and thus was not able to recognize real gorillas at all. [103] Similar issues with recognizing non-white people have been found in many other systems. [104] In 2016, Microsoft tested a chatbot that learned from Twitter, and it quickly picked up racist and sexist language. [105] Because of such challenges, the effective use of machine learning may take longer to be adopted in other domains. [106] Concern for fairness in machine learning, that is, reducing bias in machine learning and propelling its use for human good is increasingly expressed by artificial intelligence scientists, including Fei-Fei Li, who reminds engineers that "There’s nothing artificial about AI. It’s inspired by people, it’s created by people, and—most importantly—it impacts people. It is a powerful tool we are only just beginning to understand, and that is a profound responsibility.” [107]

      Classification of machine learning models can be validated by accuracy estimation techniques like the holdout method, which splits the data in a training and test set (conventionally 2/3 training set and 1/3 test set designation) and evaluates the performance of the training model on the test set. In comparison, the K-fold-cross-validation method randomly partitions the data into K subsets and then K experiments are performed each respectively considering 1 subset for evaluation and the remaining K-1 subsets for training the model. In addition to the holdout and cross-validation methods, bootstrap, which samples n instances with replacement from the dataset, can be used to assess model accuracy. [108]

      In addition to overall accuracy, investigators frequently report sensitivity and specificity meaning True Positive Rate (TPR) and True Negative Rate (TNR) respectively. Similarly, investigators sometimes report the false positive rate (FPR) as well as the false negative rate (FNR). However, these rates are ratios that fail to reveal their numerators and denominators. The total operating characteristic (TOC) is an effective method to express a model's diagnostic ability. TOC shows the numerators and denominators of the previously mentioned rates, thus TOC provides more information than the commonly used receiver operating characteristic (ROC) and ROC's associated area under the curve (AUC). [109]

      Machine learning poses a host of ethical questions. Systems which are trained on datasets collected with biases may exhibit these biases upon use (algorithmic bias), thus digitizing cultural prejudices. [110] For example, in 1988, the UK's Commission for Racial Equality found that St. George's Medical School had been using a computer program trained from data of previous admissions staff and this program had denied nearly 60 candidates who were found to be either women or had non-European sounding names. [97] Using job hiring data from a firm with racist hiring policies may lead to a machine learning system duplicating the bias by scoring job applicants by similarity to previous successful applicants. [111] [112] Responsible collection of data and documentation of algorithmic rules used by a system thus is a critical part of machine learning.

      AI can be well-equipped to make decisions in technical fields, which rely heavily on data and historical information. These decisions rely on objectivity and logical reasoning. [113] Because human languages contain biases, machines trained on language corpora will necessarily also learn these biases. [114] [115]

      Other forms of ethical challenges, not related to personal biases, are seen in health care. There are concerns among health care professionals that these systems might not be designed in the public's interest but as income-generating machines. [116] This is especially true in the United States where there is a long-standing ethical dilemma of improving health care, but also increasing profits. For example, the algorithms could be designed to provide patients with unnecessary tests or medication in which the algorithm's proprietary owners hold stakes. There is potential for machine learning in health care to provide professionals an additional tool to diagnose, medicate, and plan recovery paths for patients, but this requires these biases to be mitigated. [117]

      Since the 2010s, advances in both machine learning algorithms and computer hardware have led to more efficient methods for training deep neural networks (a particular narrow subdomain of machine learning) that contain many layers of non-linear hidden units. [118] By 2019, graphic processing units (GPUs), often with AI-specific enhancements, had displaced CPUs as the dominant method of training large-scale commercial cloud AI. [119] OpenAI estimated the hardware compute used in the largest deep learning projects from AlexNet (2012) to AlphaZero (2017), and found a 300,000-fold increase in the amount of compute required, with a doubling-time trendline of 3.4 months. [120] [121]

      Software suites containing a variety of machine learning algorithms include the following: