شعار زيفيرنت

عزز دقة توقعاتك من خلال تجميع السلاسل الزمنية

التاريخ:

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

تقدم AWS خدمات متنوعة تلبي بيانات السلاسل الزمنية ذات التعليمات البرمجية المنخفضة / التي لا تحتوي على رمز ، والتي يمكن لممارسي التعلم الآلي (ML) وغير المتخصصين استخدامها لبناء حلول ML. وتشمل هذه المكتبات والخدمات مثل AutoGluon, قماش أمازون سيج ميكر, أمازون سيج ميكر داتا رانجلر, Amazon SageMaker الطيار الآليو توقعات الأمازون.

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

نستكشف كيفية استخراج الخصائص ، والتي تسمى أيضًا ملامح، من بيانات السلاسل الزمنية باستخدام مكتبة TSFresh—حزمة Python لحساب عدد كبير من خصائص السلاسل الزمنية — وتنفيذ التجميع باستخدام خوارزمية K-Means نفذت في مكتبة scikit-Learn.

نستخدم تجميع السلاسل الزمنية باستخدام TSFresh + KMeans دفتر الملاحظات ، والذي يتوفر على موقعنا جيثب ريبو. نوصي بتشغيل هذا الكمبيوتر الدفتري على أمازون ساجميكر ستوديو، بيئة تطوير متكاملة (IDE) قائمة على الويب من أجل ML.

حل نظرة عامة

التجميع هو أسلوب ML غير خاضع للرقابة يجمع العناصر معًا بناءً على مقياس المسافة. تُستخدم المسافة الإقليدية بشكل شائع لمجموعات البيانات غير المتسلسلة. ومع ذلك ، نظرًا لأن السلسلة الزمنية لها تسلسل (طابع زمني) بطبيعتها ، فإن المسافة الإقليدية لا تعمل بشكل جيد عند استخدامها مباشرة في السلاسل الزمنية لأنها ثابتة في التحولات الزمنية ، متجاهلة البعد الزمني للبيانات. للحصول على شرح أكثر تفصيلا ، يرجى الرجوع إلى تصنيف السلاسل الزمنية والتكتل باستخدام بايثون. مقياس المسافة الأفضل الذي يعمل مباشرة على السلاسل الزمنية هو Dynamic Time Warping (DTW). للحصول على مثال للتجميع بناءً على هذا المقياس ، يرجى الرجوع إلى بيانات السلاسل الزمنية العنقودية للاستخدام مع Amazon Forecast.

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

تحميل البيانات

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

ميزة استخراج مع TSFresh

لنبدأ باستخدام TSFresh لاستخراج الميزات من مجموعة بيانات السلاسل الزمنية الخاصة بنا:

from tsfresh import extract_features
extracted_features = extract_features( df_final, column_id="StockCode", column_sort="timestamp")

لاحظ أن بياناتنا قد تم تحويلها من سلسلة زمنية إلى جدول مقارنة StockCode القيم مقابل. Feature values.

جدول الميزات

بعد ذلك ، نقوم بإسقاط جميع الميزات بامتداد n/a القيم من خلال استخدام dropna الأسلوب:

extracted_features_cleaned=extracted_features
extracted_features_cleaned=extracted_features_cleaned.dropna(axis=1)

ثم نقوم بتوسيع نطاق الميزات باستخدام StandardScaler. تتكون القيم في السمات المستخرجة من قيم سالبة وإيجابية. لذلك نستخدم ملفات StandardScaler بدلا من MinMaxScaler:

from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
extracted_features_cleaned_std = scaler.fit_transform(extracted_features_cleaned)

نستخدم PCA لتقليل الأبعاد:

from sklearn.decomposition import PCA
pca = PCA()
pca.fit(extracted_features_cleaned_std)

ونحدد العدد الأمثل لمكونات PCA:

plt.figure(figsize=(20,10))
plt.grid()
plt.plot(np.cumsum(pca.explained_variance_ratio_))
plt.xlabel('number of components')
plt.ylabel('cumulative explained variance')

نسبة التباين الموضحة هي النسبة المئوية للتباين المنسوب إلى كل مكون من المكونات المختارة. عادةً ما تحدد عدد المكونات المراد تضمينها في النموذج الخاص بك عن طريق إضافة نسبة التباين الموضحة بشكل تراكمي لكل مكون حتى تصل إلى 0.8–0.9 لتجنب الإفراط في التجهيز. عادة ما تحدث القيمة المثلى عند الكوع.

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

PCA

التجميع باستخدام K-Means

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

from sklearn.cluster import KMeans
wcss = []
for i in range(1,10): km = KMeans(n_clusters=i) km.fit(scores_pca) wcss.append(km.inertia_)
plt.figure(figsize=(20,10))
plt.grid()
plt.plot(range(1,10),wcss,marker='o',linestyle='--')
plt.xlabel('number of clusters')
plt.ylabel('WCSSS')

الرسم البياني التالي يصور النتائج التي توصلنا إليها.

كوع

بناءً على هذا المخطط ، قررنا استخدام مجموعتين لـ K-Means. لقد اتخذنا هذا القرار لأن مجموع المربعات داخل المجموعة (WCSS) يتناقص بأعلى معدل بين مجموعة أو مجموعتين. من المهم الموازنة بين سهولة الصيانة وأداء النموذج والتعقيد ، لأنه على الرغم من استمرار WCSS في الانخفاض مع وجود المزيد من المجموعات ، فإن المجموعات الإضافية تزيد من خطر التجهيز الزائد. علاوة على ذلك ، يمكن أن تؤدي الاختلافات الطفيفة في مجموعة البيانات إلى تقليل الدقة بشكل غير متوقع.

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

وفي الختام

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

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

مراجع حسابات


حول المؤلف

باتروشألكسندر باتروشيف هو AI / ML Specialist Solutions Architect في AWS ، ومقرها في لوكسمبورغ. إنه شغوف بالسحابة والتعلم الآلي والطريقة التي يمكن أن يغيروا بها العالم. خارج العمل ، يستمتع بالتنزه والرياضة وقضاء الوقت مع أسرته.

سيليماوستشونغ إن ليم هو مهندس حلول في AWS. إنه دائمًا ما يستكشف طرقًا لمساعدة العملاء على الابتكار وتحسين سير عملهم. في أوقات فراغه ، يحب مشاهدة الرسوم المتحركة والاستماع إلى الموسيقى.

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

بقعة_صورة

أحدث المعلومات الاستخباراتية

بقعة_صورة