إتقان إنشاء البيانات الصناعية: دليل شامِل باستخدام التّوزيعات أحادية المتغير وعمليات العيّنة البayeسيَّة
ملخص شامل لإنشاء البيانات المصنعة باستخدام العينات البيزية والتوزيعات الأحادية في العقد الأخير، شهد العالم زيادة كبيرة في حجم البيانات، مما أدى إلى فهم أعمق لأهمية جودة البيانات أكثر من كميتها. تساعد البيانات عالية الجودة في الوصول إلى استنتاجات دقيقة واتخاذ قرارات أفضل. ومع ذلك، في مجالات مثل الرعاية الصحية والمالية والأمن السيبراني وأنظمة القيادة الذاتية، يمكن أن تكون البيانات الحقيقية حساسة أو مكلفة أو صعبة التجميع، خاصة في السيناريوهات النادرة أو الحدودية. هذا هو المكان الذي تأتي فيه البيانات المصنعة كبدائل قوية. هناك تقنيتان رئيستان لإنشاء البيانات المصنعة: العينات البيزية والتوزيعات الأحادية. سيتم استخدام مكتبات bnlearn و distfit لتنفيذ أمثلة عملية. مقدمة في البيانات المصنعة البيانات المصنعة هي بيانات اصطناعية تقلد خصائص البيانات الحقيقية. يمكن استخدامها لاختبار النماذج أو لتعويض النقص في البيانات الحقيقية. هناك نوعان رئيسيان من إنشاء البيانات المصنعة: الطريقة الاحتمالية والطريقة التوليدية. في هذا المقال، سنركز على الطريقة الاحتمالية، حيث الهدف هو تقدير التوزيع الكامن وتقليد مجموعة بيانات موجودة أو إنشاء بيانات بناءً على معرفة الخبراء. الفهم الأساسي للتوزيعات الاحتمالية التوزيع الاحتمالي يصف مدى احتمالية حدوث قيمة معينة لمتغير مستمر. هناك العديد من التوزيعات الاحتمالية، وكل منها له شكل خاص به، مثل المنحنى الجرسي للتوزيع الطبيعي، التناقص الأسي للتوزيع الأسي، والانتشار المتساوي للتوزيع المنتظم. اختيار التوزيع المناسب يتطلب فهم خصائص البيانات الحقيقية. مكتبة distfit تساعد في تحسين هذه العملية من خلال فحص مجموعة واسعة من التوزيعات النظرية وتقييم مدى ملاءمتها للبيانات. العينات البيزية العينات البيزية تعني إنشاء نقاط بيانات من نموذج احتمالي يتم تعريفه بواسطة مخطط بياني موجه بدون حلقات (DAG) والتوزيعات الاحتمالية المشروطة (CPDs) المرتبطة به. يحدد مخطط DAG العلاقات بين المتغيرات، بينما تحدد CPDs الاحتمالات الدقيقة لكل متغير بناءً على قيم الوالدين له. هناك طريقتان رئيستان للعينات البيزية: العينات الأمامية (Forward Sampling) والعينات جيبس (Gibbs Sampling). العينات الأمامية: تبدأ من العقد الجذرية وتنتقل عبر الرسم البياني في ترتيب توبولوجي، مع عين كل متغير بناءً على توزيعه الاحتمالي المشروط وقيم الوالدين له. العينات جيبس: تستخدم في حال وجود قيم مفقودة أو عندما تكون الإدراك الدقيق حسابيًا مكلفًا. تقوم بعين البيانات بشكل متكرر من التوزيع الاحتمالي المشروط لكل متغير بناءً على قيم جميع العقد الأخرى. أمثلة عملية 1. إنشاء بيانات مستمرة مصنعة تقلد البيانات الحقيقية سنستخدم بيانات الصيانة التنبؤية، التي تحتوي على 10,000 نقطة بيانات من أجهزة استشعار آلات. سنركز على قياسات العزم (Torque) ونستخدم مكتبة distfit لتحديد أفضل توزيع نظري يطابق هذه القياسات. ```python تثبيت المكتبة pip install distfit استيراد المكتبة from distfit import distfit import matplotlib.pyplot as plt تحميل البيانات df = distfit.import_example(data='predictive_maintenance') رسم البيانات الحقيقية distfit.lineplot(df['Torque [Nm]'], xlabel='الوقت', ylabel='العزم [Nm]', title='قياسات العزم') تقدير أفضل توزيع نظري dfit = distfit(distr='popular', n_boots=100) dfit.fit_transform(df['Torque [Nm]']) رسم التوزيعات النظرية المطابقة fig, ax = plt.subplots(1,2, figsize=(25, 10)) dfit.plot(chart='PDF', n_top=10, ax=ax[0]) dfit.plot(chart='CDF', n_top=10, ax=ax[1]) plt.show() إنشاء بيانات مصنعة X = dfit.generate(200) distfit.lineplot(X, xlabel='الوقت', ylabel='العزم المصنع [Nm]', title='البيانات المصنعة') ``` بعد تشغيل الكود، تم اكتشاف أن توزيع Loggamma هو أفضل توزيع للعزم. يمكن استخدام معلمات هذا التوزيع لإنشاء بيانات مصنعة تقلد البيانات الحقيقية. 2. إنشاء بيانات مستمرة مصنعة باستخدام معرفة الخبراء لنفترض أن الخبراء قدموا لنا معلومات عن عمليات الآلات خلال اليوم: معظم الناس يبدأون العمل الساعة 8 ولكن شدة عمليات الآلات تبلغ ذروتها حوالي الساعة 10. بعض عمليات الآلات ستظهر قبل الساعة 8، لكن ليس بكثرة. في فترة بعد الظهر، تتناقص شدة عمليات الآلات تدريجيًا وتتوقف حوالي الساعة 6 مساءً. يوجد عادة ذروة صغيرة لعمليات الآلات الشديدة حوالي الساعة 1-2 مساءً. سنقوم بترجمة هذه المعرفة إلى نموذج إحصائي باستخدام مزيج من توزيعات نورمان (Normal) وغاما المعممة (Generalized Gamma). ```python import numpy as np from scipy.stats import norm, gengamma import matplotlib.pyplot as plt إنشاء بيانات من توزيع نورمان للمorning normal_samples = norm.rvs(10, 1, 8000) إنشاء بيانات من توزيع غاما المعممة للفترة المسائية dist = gengamma(a=1.4, c=1, scale=0.8, loc=13) gamma_samples = dist.rvs(size=2000) دمج البيانات X = np.concatenate((normal_samples, gamma_samples)) ترتيب البيانات عشوائيًا np.random.shuffle(X) رسم البيانات plt.figure(figsize=(20, 15)) plt.hist(X, bins=100, color='#607B8B', linewidth=1, edgecolor='#5A5A5A') plt.grid(True) plt.xlabel('الوقت', fontsize=22) plt.ylabel('شدة عمليات الآلات', fontsize=22) plt.show() ``` هذه الطريقة تسمح لنا ببناء نموذج يقلد السلوك الطبيعي لعمليات الآلات طوال اليوم. 3. إنشاء بيانات فئوية مصنعة تقلد البيانات الحقيقية سنستخدم بيانات الصيانة التنبؤية مرة أخرى، ولكن هذه المرة سنركز على المتغيرات الفئوية. سنقوم بتعلم الهيكل العلائقي للتوزيعات الفئوية باستخدام مكتبة bnlearn. ```python تثبيت المكتبة pip install bnlearn استيراد المكتبة import bnlearn as bn تحميل البيانات df = bn.import_example('predictive_maintenance') cols = ['Type', 'Machine failure', 'TWF', 'HDF', 'PWF', 'OSF', 'RNF'] df = df[cols] تعلم الهيكل العلائقي model = bn.structure_learning.fit(df, methodtype='hc', scoretype='bic') model = bn.independence_test(model, df, test='chi_square', prune=True) رسم الرسم البياني المتجه DAG bn.plot(model, edge_labels='pvalue', params_static={'maxscale': 4, 'figsize': (15, 15), 'font_size': 14, 'arrowsize': 10}) dotgraph = bn.plot_graphviz(model, edge_labels='pvalue') dotgraph.view(filename='bnlearn_predictive_maintenance.pdf') تعلم المعلمات model = bn.parameter_learning.fit(model, df, methodtype='bayes') إنشاء بيانات مصنعة X = bn.sampling(model, n=100, methodtype='bayes') print(X) ``` هذه الطريقة تسمح لنا بمحاكاة البيانات الفئوية وحفظ العلاقات بين المتغيرات. 4. إنشاء بيانات فئوية مصنعة تقلد معرفة الخبراء لنفترض أن الخبراء قدموا لنا معلومات عن كيفية حدوث أعطال الآلات دون وجود بيانات حقيقية. سنقوم ببناء الرسم البياني DAG والمعلمات CPDs بناءً على هذه المعرفة. ```python تعريف العلاقات العلائقية edges = [('Process Temperature', 'Machine Failure'), ('Torque', 'Machine Failure'), ('Torque', 'Overstrain Failure (OSF)'), ('Tool Wear', 'Overstrain Failure (OSF)'), ('Air Temperature', 'Process Temperature'), ('Overstrain Failure (OSF)', 'Machine Failure')] إنشاء الرسم البياني DAG DAG = bn.make_DAG(edges) bn.plot(DAG) تعريف التوزيعات الاحتمالية المشروطة (CPTs) cpt_air_temp = TabularCPD(variable='Air Temperature', variable_card=2, values=[[0.7], [0.3]]) cpt_toolwear = TabularCPD(variable='Tool Wear', variable_card=2, values=[[0.8], [0.2]]) cpt_torque = TabularCPD(variable='Torque', variable_card=2, values=[[0.9], [0.1]]) cpt_process_temp = TabularCPD(variable='Process Temperature', variable_card=2, values=[[0.7, 0.2], [0.3, 0.8]], evidence=['Air Temperature'], evidence_card=[2]) cpt_osf = TabularCPD(variable='Overstrain Failure (OSF)', variable_card=2, values=[[0.9, 0.5, 0.7, 0.1], [0.1, 0.5, 0.3, 0.9]], evidence=['Torque', 'Tool Wear'], evidence_card=[2, 2]) cpt_machine_fail = TabularCPD(variable='Machine Failure', variable_card=2, values=[[0.9, 0.7, 0.6, 0.3, 0.8, 0.5, 0.4, 0.2], [0.1, 0.3, 0.4, 0.7, 0.2, 0.5, 0.6, 0.8]], evidence=['Process Temperature', 'Torque', 'Overstrain Failure (OSF)'], evidence_card=[2, 2, 2]) تحديث الرسم البياني DAG بالمعلمات CPDs model = bn.make_DAG(DAG, CPD=[cpt_process_temp, cpt_machine_fail, cpt_torque, cpt_osf, cpt_toolwear, cpt_air_temp]) إنشاء بيانات مصنعة X = bn.sampling(model, n=100, methodtype='bayes') print(X) ``` تقييم الحدث من قبل المختصين تعد البيانات المصنعة أداة قوية في المواقف التي تكون فيها البيانات الحقيقية نادرة أو حساسة. ومع ذلك، يجب الحذر عند استخدامها، حيث قد لا تلتقط التعقيدات والاختلافات الكاملة للظواهر الحقيقية، مما يؤدي إلى نماذج غير دقيقة. من الضروري إجراء فحوصات صحة شاملة لضمان مطابقة البيانات المصنعة لتوقعات المجال وعدم تضليل التحليلات اللاحقة. نبذة تعريفية عن مكتبات bnlearn و distfit bnlearn: مكتبة مصممة لمواجهة تحديات تحليل البيانات البيزي، مثل تعلم الهيكل العلائقي والتوزيعات الاحتمالية المشروطة. تقدم ميزات متقدمة للتحقق من صحة النماذج وتوليد البيانات المصنعة. distfit: مكتبة مفيدة تساعد في تحديد أفضل توزيع نظري لمجموعات البيانات المستمرة. توفر عمليات تلقائية لفحص التوزيعات النظرية وتقييم مطابقتها للبيانات الحقيقية. في الختام، تقدم البيانات المصنعة فرصًا عديدة للنمذجة والتحليل، خاصة في مجالات مثل حماية الخصوصية ونمذجة الأحداث النادرة في مجال الأمن السيبراني. ومع ذلك، يجب استخدامها بحذر وتقديم فحوصات صحة شاملة لضمان جودتها وموثوقيتها.