
टाइम सीरीज़ इंटेलिजेंस के लिए एंड-टू-एंड Python फ्रेमवर्क, जो एनोमली डिटेक्शन, फोरकास्टिंग, चेंज पॉइंट डिटेक्शन, AutoML, एन्सेम्बल और बेंचमार्किंग पाइपलाइन प्रदान करता है।
Merlion टाइम सीरीज़ इंटेलिजेंस के लिए एक Python लाइब्रेरी है। यह एक एंड-टू-एंड मशीन लर्निंग फ्रेमवर्क प्रदान करती है जिसमें डेटा लोड करना और रूपांतरित करना, मॉडल बनाना और प्रशिक्षित करना, मॉडल आउटपुट का पोस्ट-प्रोसेसिंग और मॉडल प्रदर्शन का मूल्यांकन शामिल है। यह विभिन्न टाइम सीरीज़ लर्निंग कार्यों का समर्थन करती है, जिनमें यूनिवेरिएट और मल्टीवेरिएट टाइम सीरीज़ दोनों के लिए पूर्वानुमान, विसंगति का पता लगाना और चेंज पॉइंट का पता लगाना शामिल है। इस लाइब्रेरी का उद्देश्य इंजीनियरों और शोधकर्ताओं को उनकी विशिष्ट टाइम सीरीज़ आवश्यकताओं के लिए तेज़ी से मॉडल विकसित करने और कई टाइम सीरीज़ डेटासेट पर उनका बेंचमार्क करने हेतु एक वन-स्टॉप समाधान प्रदान करना है।
Merlion की प्रमुख विशेषताएं निम्नलिखित हैं:
DefaultDetector और DefaultForecaster मॉडल, जो कुशल हैं, मज़बूती से अच्छा प्रदर्शन प्राप्त करते हैं, और नए उपयोगकर्ताओं के लिए एक प्रारंभिक बिंदु प्रदान करते हैं।नीचे दी गई तालिका एक दृश्य अवलोकन प्रदान करती है कि Merlion की प्रमुख विशेषताएं टाइम सीरीज़ विसंगति का पता लगाने और/या पूर्वानुमान के लिए अन्य लाइब्रेरीज़ से किस प्रकार तुलना करती हैं।
निम्नलिखित विशेषताएं Merlion 2.0 में नई हैं:
Merlion दो उप-रिपॉजिटरीज़ से मिलकर बना है: merlion लाइब्रेरी की मुख्य टाइम सीरीज़ इंटेलिजेंस सुविधाओं को लागू करता है, और ts_datasets कई टाइम सीरीज़ डेटासेट के लिए मानकीकृत डेटा लोडर प्रदान करता है। ये लोडर टाइम सीरीज़ को संबंधित मेटाडेटा के साथ pandas.DataFrame के रूप में लोड करते हैं।
आप pip install salesforce-merlion कॉल करके PyPI से merlion स्थापित कर सकते हैं। आप इस रिपॉजिटरी को क्लोन करके और pip install Merlion/ कॉल करके स्रोत से स्थापित कर सकते हैं, या एडिटेबल मोड में स्थापित करने के लिए pip install -e Merlion/ कॉल कर सकते हैं। आप pip install salesforce-merlion[all] के माध्यम से अतिरिक्त निर्भरताएँ स्थापित कर सकते हैं, या यदि स्रोत से स्थापित कर रहे हैं तो pip install "Merlion/[all]" कॉल करके। व्यक्तिगत रूप से, वैकल्पिक निर्भरताओं में GUI डैशबोर्ड के लिए dashboard, PySpark के साथ वितरित कम्प्यूटेशन बैकएंड के लिए spark, और सभी डीप लर्निंग मॉडलों के लिए deep-learning शामिल हैं।
डेटा लोडिंग पैकेज ts_datasets स्थापित करने के लिए, इस रिपॉजिटरी को क्लोन करें और pip install -e Merlion/ts_datasets/ कॉल करें। यदि आप अपने डेटा लोडर को प्रारंभ करते समय प्रत्येक डेटासेट की रूट निर्देशिका को मैन्युअल रूप से निर्दिष्ट नहीं करना चाहते हैं, तो यह पैकेज एडिटेबल मोड (यानी -e फ्लैग के साथ) में स्थापित होना चाहिए।
निम्नलिखित बाहरी निर्भरताओं पर ध्यान दें:
हमारे कुछ पूर्वानुमान मॉडल OpenMP पर निर्भर करते हैं। यदि आप conda का उपयोग कर रहे हैं, तो कृपया हमारा पैकेज स्थापित करने से पहले conda install -c conda-forge lightgbm चलाएँ। यह सुनिश्चित करेगा कि OpenMP आपके conda वातावरण में lightgbm पैकेज (हमारी एक निर्भरता) के साथ काम करने के लिए कॉन्फ़िगर किया गया है। यदि Mac का उपयोग कर रहे हैं, तो कृपया Homebrew स्थापित करें और brew install libomp चलाएँ ताकि OpenMP लाइब्रेरी मॉडल के लिए उपलब्ध हो।
हमारे कुछ विसंगति का पता लगाने वाले मॉडल Java Development Kit (JDK) पर निर्भर करते हैं। Ubuntu के लिए, sudo apt-get install openjdk-11-jdk चलाएँ। Mac OS के लिए, Homebrew स्थापित करें और brew tap adoptopenjdk/openjdk && brew install --cask adoptopenjdk11 चलाएँ। यह भी सुनिश्चित करें कि java आपके PATH पर मौजूद है, और JAVA_HOME पर्यावरण चर सेट है।
उदाहरण कोड और Merlion के परिचय के लिए, examples में मौजूद Jupyter नोटबुक और यहाँ दिए गए निर्देशित वॉकथ्रू को देखें। आप विस्तृत API दस्तावेज़ीकरण (उदाहरण कोड सहित) यहाँ पा सकते हैं। तकनीकी रिपोर्ट Merlion के समग्र आर्किटेक्चर की रूपरेखा प्रस्तुत करती है और यूनिवेरिएट व मल्टीवेरिएट टाइम सीरीज़ दोनों के लिए टाइम सीरीज़ विसंगति का पता लगाने और पूर्वानुमान पर प्रयोगात्मक परिणाम प्रस्तुत करती है।
आरंभ करने का सबसे आसान तरीका GUI वेब-आधारित dashboard का उपयोग करना है। यह डैशबोर्ड आपके अपने कस्टम डेटासेट पर कई मॉडलों के साथ तेज़ी से प्रयोग करने का एक शानदार तरीका प्रदान करता है। इसका उपयोग करने के लिए, वैकल्पिक dashboard निर्भरता के साथ Merlion स्थापित करें (जैसे pip install salesforce-merlion[dashboard]), और कमांड लाइन से python -m merlion.dashboard चलाएँ। आप डैशबोर्ड को http://localhost:8050 पर देख सकते हैं। नीचे, हम विसंगति का पता लगाने और पूर्वानुमान दोनों के लिए डैशबोर्ड के कुछ स्क्रीनशॉट दिखाते हैं।


अपने स्वयं के कोड में Merlion का उपयोग शुरू करने में आपकी सहायता के लिए, हम नीचे विसंगति का पता लगाने और पूर्वानुमान दोनों के लिए Merlion डिफ़ॉल्ट मॉडलों का उपयोग करते हुए कुछ न्यूनतम उदाहरण प्रदान करते हैं।
यहाँ, हम ऊपर दिए गए विसंगति का पता लगाने वाले डैशबोर्ड के परिणामों को दोहराने के लिए कोड दिखाते हैं। हम Merlion के TimeSeries क्लास और Numenta Anomaly Benchmark NAB के लिए डेटा लोडर को आयात करके शुरू करते हैं। फिर हम इस डेटासेट से एक विशिष्ट टाइम सीरीज़ को प्रशिक्षण और परीक्षण भागों में विभाजित कर सकते हैं।
from merlion.utils import TimeSeries
from ts_datasets.anomaly import NAB
# Data loader returns pandas DataFrames, which we convert to Merlion TimeSeries
time_series, metadata = NAB(subset="realKnownCause")[3]
train_data = TimeSeries.from_pd(time_series[metadata.trainval])
test_data = TimeSeries.from_pd(time_series[~metadata.trainval])
test_labels = TimeSeries.from_pd(metadata.anomaly[~metadata.trainval])
फिर हम Merlion के DefaultDetector को प्रारंभ और प्रशिक्षित कर सकते हैं, जो एक विसंगति का पता लगाने वाला मॉडल है जो प्रदर्शन और दक्षता के बीच संतुलन बनाता है। हम परीक्षण भाग पर इसकी भविष्यवाणियाँ भी प्राप्त करते हैं।
from merlion.models.defaults import DefaultDetectorConfig, DefaultDetector
model = DefaultDetector(DefaultDetectorConfig())
model.train(train_data=train_data)
test_pred = model.get_anomaly_label(time_series=test_data)
इसके बाद, हम मॉडल की भविष्यवाणियों को विज़ुअलाइज़ करते हैं।
from merlion.plot import plot_anoms
import matplotlib.pyplot as plt
fig, ax = model.plot_anomaly(time_series=test_data)
plot_anoms(ax=ax, anomaly_labels=test_labels)
plt.show()

अंत में, हम मॉडल का मात्रात्मक मूल्यांकन कर सकते हैं। प्रेसिजन और रिकॉल इस तथ्य से आते हैं कि मॉडल ने 3 अलार्म जारी किए, जिनमें 2 ट्रू पॉज़िटिव, 1 फ़ॉल्स नेगेटिव और 1 फ़ॉल्स पॉज़िटिव थे। हम उस औसत समय का भी मूल्यांकन करते हैं जो मॉडल ने प्रत्येक सही ढंग से पहचानी गई विसंगति का पता लगाने में लिया।
from merlion.evaluate.anomaly import TSADMetric
p = TSADMetric.Precision.value(ground_truth=test_labels, predict=test_pred)
r = TSADMetric.Recall.value(ground_truth=test_labels, predict=test_pred)
f1 = TSADMetric.F1.value(ground_truth=test_labels, predict=test_pred)
mttd = TSADMetric.MeanTimeToDetect.value(ground_truth=test_labels, predict=test_pred)
print(f"Precision: {p:.4f}, Recall: {r:.4f}, F1: {f1:.4f}\n"
f"Mean Time To Detect: {mttd}")
Precision: 0.6667, Recall: 0.6667, F1: 0.6667
Mean Time To Detect: 1 days 10:22:30
यहाँ, हम ऊपर दिए गए पूर्वानुमान डैशबोर्ड के परिणामों को दोहराने के लिए कोड दिखाते हैं। हम Merlion के TimeSeries क्लास और M4 डेटासेट के लिए डेटा लोडर को आयात करके शुरू करते हैं। फिर हम इस डेटासेट से एक विशिष्ट टाइम सीरीज़ को प्रशिक्षण और परीक्षण भागों में विभाजित कर सकते हैं।
from merlion.utils import TimeSeries
from ts_datasets.forecast import M4
# Data loader returns pandas DataFrames, which we convert to Merlion TimeSeries
time_series, metadata = M4(subset="Hourly")[0]
train_data = TimeSeries.from_pd(time_series[metadata.trainval])
test_data = TimeSeries.from_pd(time_series[~metadata.trainval])
फिर हम Merlion के DefaultForecaster को प्रारंभ और प्रशिक्षित कर सकते हैं, जो एक पूर्वानुमान मॉडल है जो प्रदर्शन और दक्षता के बीच संतुलन बनाता है। हम परीक्षण भाग पर इसकी भविष्यवाणियाँ भी प्राप्त करते हैं।
from merlion.models.defaults import DefaultForecasterConfig, DefaultForecaster
model = DefaultForecaster(DefaultForecasterConfig())
model.train(train_data=train_data)
test_pred, test_err = model.forecast(time_stamps=test_data.time_stamps)
इसके बाद, हम मॉडल की भविष्यवाणियों को विज़ुअलाइज़ करते हैं।
import matplotlib.pyplot as plt
fig, ax = model.plot_forecast(time_series=test_data, plot_forecast_uncertainty=True)
plt.show()

अंत में, हम मॉडल का मात्रात्मक मूल्यांकन करते हैं। sMAPE 0 से 100 के पैमाने पर भविष्यवाणी की त्रुटि को मापता है (कम बेहतर है), जबकि MSIS 0 से 100 के पैमाने पर 95% विश्वास बैंड की गुणवत्ता का मूल्यांकन करता है (कम बेहतर है)।
# Evaluate the model's predictions quantitatively
from scipy.stats import norm
from merlion.evaluate.forecast import ForecastMetric
# Compute the sMAPE of the predictions (0 to 100, smaller is better)
smape = ForecastMetric.sMAPE.value(ground_truth=test_data, predict=test_pred)
# Compute the MSIS of the model's 95% confidence interval (0 to 100, smaller is better)
lb = TimeSeries.from_pd(test_pred.to_pd() + norm.ppf(0.025) * test_err.to_pd().values)
ub = TimeSeries.from_pd(test_pred.to_pd() + norm.ppf(0.975) * test_err.to_pd().values)
msis = ForecastMetric.MSIS.value(ground_truth=test_data, predict=test_pred,
insample=train_data, lb=lb, ub=ub)
print(f"sMAPE: {smape:.4f}, MSIS: {msis:.4f}")
sMAPE: 4.1944, MSIS: 18.9331
Merlion की प्रमुख विशेषताओं में से एक मूल्यांकन पाइपलाइन है जो ऐतिहासिक डेटा पर एक मॉडल के लाइव परिनियोजन का अनुकरण करती है। यह आपको उन डेटासेट पर मॉडलों की तुलना करने में सक्षम बनाती है जो उनके लिए प्रासंगिक हैं, उन परिस्थितियों में जिनका सामना उन्हें उत्पादन वातावरण में करना पड़ सकता है। हमारी मूल्यांकन पाइपलाइन निम्नानुसार आगे बढ़ती है:
हम ऐसी स्क्रिप्ट प्रदान करते हैं जो आपको किसी भी डेटासेट पर किसी भी मॉडल का मूल्यांकन करने के लिए इस पाइपलाइन का उपयोग करने की अनुमति देती हैं। उदाहरण के लिए, निम्न को कॉल करने पर:
python benchmark_anomaly.py --dataset NAB_realAWSCloudwatch --model IsolationForest --retrain_freq 1d
NAB डेटासेट के "realAWSCloudwatch" सबसेट पर IsolationForest (दिन में एक बार पुनः प्रशिक्षित) की विसंगति का पता लगाने के प्रदर्शन का मूल्यांकन करेगा। इसी प्रकार, निम्न को कॉल करने पर:
python benchmark_forecast.py --dataset M4_Hourly --model ETS
M4 डेटासेट के "Hourly" सबसेट पर ETS की बैच पूर्वानुमान क्षमता (यानी कोई पुनः-प्रशिक्षण नहीं) का मूल्यांकन करेगा। इन स्क्रिप्ट्स को चलाने से उत्पन्न परिणाम आप तकनीकी रिपोर्ट के Experiments अनुभाग में पा सकते हैं।
आप हमारी तकनीकी रिपोर्ट में अधिक विवरण पा सकते हैं: https://arxiv.org/abs/2109.09265
यदि आप अपने शोध या अनुप्रयोगों में Merlion का उपयोग कर रहे हैं, तो कृपया इस BibTeX का उपयोग करके उद्धरण दें:
@article{bhatnagar2021merlion,
title={Merlion: A Machine Learning Library for Time Series},
author={Aadyot Bhatnagar and Paul Kassianik and Chenghao Liu and Tian Lan and Wenzhuo Yang
and Rowan Cassius and Doyen Sahoo and Devansh Arpit and Sri Subramanian and Gerald Woo
and Amrita Saha and Arun Kumar Jagota and Gokulakrishnan Gopalakrishnan and Manpreet Singh
and K C Krithika and Sukumar Maddineni and Daeki Cho and Bo Zong and Yingbo Zhou
and Caiming Xiong and Silvio Savarese and Steven Hoi and Huan Wang},
year={2021},
eprint={2109.09265},
archivePrefix={arXiv},
primaryClass={cs.LG}
}
हम Merlion की गति और थ्रूपुट को और बेहतर बनाने के लिए GPU के साथ टाइम-सीरीज़ मॉडलिंग का लाभ उठाने का प्रयास कर रहे हैं। जुड़े रहें ...
| Merlion | Prophet | Alibi Detect | Kats | darts | statsmodels | nixtla | GluonTS | RRCF | STUMPY | Greykite | pmdarima |
|---|
| यूनिवेरिएट पूर्वानुमान | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | |||
| मल्टीवेरिएट पूर्वानुमान | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ||||||
| यूनिवेरिएट विसंगति का पता लगाना | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | |||
| मल्टीवेरिएट विसंगति का पता लगाना | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ||||||
| प्री-प्रोसेसिंग | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ||||
| पोस्ट-प्रोसेसिंग | ✅ | ✅ | ||||||||||
| AutoML | ✅ | ✅ | ✅ | |||||||||
| एन्सेम्बल | ✅ | ✅ | ✅ | ✅ | ||||||||
| बेंचमार्किंग | ✅ | ✅ | ✅ | ✅ | ✅ | |||||||
| विज़ुअलाइज़ेशन | ✅ | ✅ | ✅ | ✅ | ✅ |
| Merlion | Prophet | Alibi Detect | Kats | darts | statsmodels | nixtla | GluonTS | RRCF | STUMPY | Greykite | pmdarima |
|---|
| एक्सोजेनस रिग्रेसर्स | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ||||||
| चेंज पॉइंट का पता लगाना | ✅ | ✅ | ✅ | ✅ | ✅ | |||||||
| क्लिक करने योग्य विज़ुअल UI | ✅ | |||||||||||
| वितरित बैकएंड | ✅ | ✅ |