امروزه آلودگی هوا یک موضوع آشنای محیطی است که باعث ایجاد بیماری های تنفسی و قلبی شدید می شود که تهدیدی جدی برای سلامتی به شمار می رود. باران اسیدی، تخریب لایه اوزون و گرم شدن زمین نیز از پیامدهای نامطلوب آلودگی هوا هستند. به منظور جلوگیری از مشکلات شدید سلامتی و در موارد شدید شرایط تهدید کننده زندگی، نیاز به نظارت و اتوماسیون هوشمند وجود دارد. کیفیت هوا با استفاده از غلظت آلاینده ها در هوا اندازه گیری می شود. شناسایی زودهنگام علائم و کنترل سطح آلاینده قبل از اینکه خطرناک باشد بسیار مهم است. فرآیند شناسایی کیفیت هوا و ناهنجاری در وزن آلاینده ها و تشخیص سریع علت اصلی، دشوار، پرهزینه و مستعد خطا است.
فرآیند بکارگیری راهحلهای مبتنی بر هوش مصنوعی و یادگیری ماشین (ML) برای یافتن ناهنجاریهای دادهها، شامل پیچیدگی زیادی در جذب، تنظیم، و آمادهسازی دادهها در قالب مناسب و سپس بهینهسازی و حفظ اثربخشی این مدلهای ML در دورههای طولانی است. زمان. این یکی از موانع اجرای سریع و مقیاس پذیری پذیرش قابلیت های ML بوده است.
این پست به شما نشان می دهد که چگونه از یک راه حل یکپارچه استفاده کنید آمازون مواظب معیارها و Amazon Kinesis Data Firehose برای شکستن این موانع با دریافت سریع و آسان داده های جریانی، و متعاقباً شناسایی ناهنجاری ها در شاخص های کلیدی عملکرد مورد علاقه خود.
Lookout for Metrics بهطور خودکار ناهنجاریها (غیر از معمول) را در دادههای تجاری و عملیاتی شناسایی و تشخیص میدهد. این یک سرویس ML کاملاً مدیریت شده است که از مدل های تخصصی ML برای تشخیص ناهنجاری ها بر اساس ویژگی های داده های شما استفاده می کند. به عنوان مثال، روندها و فصلی بودن دو ویژگی معیارهای سری زمانی هستند که در آنها تشخیص ناهنجاری مبتنی بر آستانه کار نمی کند. روندها تغییرات مداوم (افزایش یا کاهش) در مقدار یک متریک هستند. از سوی دیگر، فصلی بودن الگوهای دورهای است که در یک سیستم رخ میدهد، معمولاً از یک خط پایه بالا میرود و سپس دوباره کاهش مییابد. برای استفاده از Lookout for Metrics به تجربه ML نیاز ندارید.
ما یک سناریوی رایج پایش کیفیت هوا را نشان میدهیم که در آن ناهنجاریهایی در غلظت آلاینده در هوا تشخیص میدهیم. در پایان این پست، نحوه استفاده از این خدمات مدیریت شده AWS را برای کمک به جلوگیری از مشکلات سلامتی و گرم شدن کره زمین یاد خواهید گرفت. میتوانید این راهحل را برای سایر موارد استفاده برای مدیریت بهتر محیط، مانند تشخیص ناهنجاریها در کیفیت آب، کیفیت زمین و الگوهای مصرف برق، به کار ببرید.
بررسی اجمالی راه حل
معماری از سه بلوک کاربردی تشکیل شده است:
- حسگرهای بیسیمی که در مکانهای استراتژیک قرار میگیرند تا سطح غلظت مونوکسید کربن (CO)، دیاکسید گوگرد (SO2) و دیاکسید نیتروژن (NO2) در هوا را تشخیص دهند.
- انتقال و ذخیره داده های جریانی
- تشخیص ناهنجاری و اطلاع رسانی
این راه حل یک مسیر داده کاملاً خودکار از سنسورها تا یک اعلان برای کاربر فراهم می کند. همچنین می توانید با استفاده از Lookout for Metrics UI با راه حل تعامل کنید تا ناهنجاری های شناسایی شده را تجزیه و تحلیل کنید.
نمودار زیر معماری راه حل ما را نشان می دهد.
پیش نیازها
قبل از اینکه بتوانید راه حل را ادامه دهید، به پیش نیازهای زیر نیاز دارید. برای این پست از منطقه us-east-1 استفاده می کنیم.
- دانلود اسکریپت پایتون (public.py) و فایل داده از GitHub repo.
- باز کردن
live_data.csv
در ویرایشگر دلخواه خود فایل کنید و تاریخ ها را با تاریخ امروز و فردا جایگزین کنید. به عنوان مثال، اگر تاریخ امروز 8 جولای 2022 است، آن را جایگزین کنید2022-03-25
با2022-07-08
. قالب را یکسان نگه دارید. این برای شبیهسازی دادههای حسگر برای تاریخ فعلی با استفاده از اسکریپت شبیهساز اینترنت اشیا لازم است. - ایجاد یک سرویس ذخیره سازی ساده آمازون (Amazon S3) سطل و پوشه ای به نام
air-quality
. یک زیر پوشه در داخل ایجاد کنیدair-quality
تحت عنوانhistorical
. برای دستورالعمل، نگاه کنید ایجاد یک پوشه. - بارگذاری کنید
live_data.csv
فایل در سطل root S3 وhistorical_data.json
در پوشه تاریخی - ایجاد یک AWS Cloud9 محیط توسعه که از آن برای اجرای برنامه شبیه ساز پایتون برای ایجاد داده های حسگر برای این راه حل استفاده می کنیم.
داده ها را با استفاده از AWS IoT Core و Kinesis Data Firehose دریافت و تبدیل کنید
ما از یک جریان تحویل Kinesis Data Firehose برای دریافت دادههای جریان استفاده میکنیم AWS IoT Core و آن را به آمازون S3 تحویل دهید. مراحل زیر را کامل کنید:
- در کنسول Kinesis Data Firehose، را انتخاب کنید ایجاد جریان تحویل.
- برای منبع، انتخاب کنید قرار دادن مستقیم.
- برای مقصد، انتخاب کنید آمازون S3.
- برای نام جریان تحویل، یک نام برای جریان تحویل خود وارد کنید.
- برای سطل S3، سطلی را که ایجاد کرده اید به عنوان پیش نیاز وارد کنید.
- مقادیر را برای پیشوند سطل S3 و پیشوند خروجی خطای سطل S3یکی از نکات کلیدی که باید به آن توجه داشت، پیکربندی پیشوند سفارشی است که برای مقصد آمازون S3 پیکربندی شده است. این الگوی پیشوند مطمئن می شود که داده ها در سطل S3 مطابق سلسله مراتب پیشوند مورد انتظار Lookout for Metrics ایجاد می شوند. (اطلاعات بیشتر در این مورد در ادامه این پست.) برای اطلاعات بیشتر در مورد پیشوندهای سفارشی، رجوع کنید پیشوندهای سفارشی برای اشیاء آمازون S3.
- برای فاصله بافر، وارد
60
. - را انتخاب کنید نقش IAM را ایجاد یا به روز کنید.
- را انتخاب کنید ایجاد جریان تحویل.
اکنون AWS IoT Core را پیکربندی کرده و برنامه شبیه ساز کیفیت هوا را اجرا می کنیم. - در کنسول AWS IoT Core، یک خط مشی AWS IoT ایجاد کنید به نام ادمین
- در قسمت ناوبری زیر مسیریابی پیام، انتخاب کنید قوانین.
- را انتخاب کنید قانون ایجاد کنید.
- ایجاد یک قانون با عمل Kinesis Data Firehose(firehose)..
این داده ها را از یک پیام MQTT به یک جریان تحویل Kinesis Data Firehose ارسال می کند. - را انتخاب کنید ساختن.
- یک چیز AWS IoT با نام ایجاد کنید
Test-Thing
و خط مشی ایجاد شده را پیوست کنید. - گواهی، کلید عمومی، کلید خصوصی، گواهی دستگاه و CA ریشه برای AWS IoT Core را دانلود کنید.
- هر یک از فایل های دانلود شده را در
certificates
زیر شاخه ای که قبلا ایجاد کردید. - public.py را در
iot-test-publish
پوشه. - در کنسول AWS IoT Core، در قسمت ناوبری، را انتخاب کنید تنظیمات.
- تحت نقطه پایان سفارشی، نقطه پایانی را کپی کنید.
این URL نقطه پایانی سفارشی AWS IoT Core برای حساب و منطقه AWS شما شخصی است. - جایگزین کردن
customEndpointUrl
با URL نقطه پایانی سفارشی AWS IoT Core، گواهینامه هایی با نام گواهی وYour_S3_Bucket_Name
با نام سطل S3 شما.
سپس، pip و AWS IoT SDK را برای پایتون نصب میکنید. - وارد AWS Cloud9 شوید و یک دایرکتوری فعال در محیط توسعه خود ایجاد کنید. مثلا:
aq-iot-publish
. - یک زیر شاخه برای گواهی ها در فهرست کاری جدید خود ایجاد کنید. مثلا:
certificates
. - با اجرای موارد زیر از خط فرمان، AWS IoT SDK را برای Python v2 نصب کنید.
- برای آزمایش خط لوله داده، دستور زیر را اجرا کنید:
در اسکرین شات زیر می توانید محموله را مشاهده کنید.
در نهایت، داده ها به سطل S3 مشخص شده در ساختار پیشوند تحویل داده می شوند.
داده های فایل ها به شرح زیر است:
{"TIMESTAMP":"2022-03-20 00:00","LOCATION_ID":"B-101","CO":2.6,"SO2":62,"NO2":57}
{"TIMESTAMP":"2022-03-20 00:05","LOCATION_ID":"B-101","CO":3.9,"SO2":60,"NO2":73}
مُهرهای زمانی نشان میدهند که هر فایل حاوی دادههایی برای فواصل 5 دقیقهای است.
با حداقل کد، اکنون دادههای حسگر را دریافت کردهایم، یک جریان ورودی از دادههای دریافتشده ایجاد کردهایم، و دادهها را بر اساس الزامات Lookout for Metrics در یک سطل S3 ذخیره کردهایم.
در بخشهای بعدی، نگاهی عمیقتر به ساختارهای Lookout for Metrics میاندازیم و پیکربندی این مفاهیم با استفاده از کنسول Lookout for Metrics چقدر آسان است.
یک آشکارساز ایجاد کنید
آشکارساز یک منبع Lookout for Metrics است که یک مجموعه داده را نظارت می کند و ناهنجاری ها را در یک فرکانس از پیش تعریف شده شناسایی می کند. آشکارسازها از ML برای یافتن الگوها در داده ها و تمایز بین تغییرات مورد انتظار در داده ها و ناهنجاری های مشروع استفاده می کنند. برای بهبود عملکرد خود، یک آشکارساز در طول زمان اطلاعات بیشتری در مورد داده های شما می آموزد.
در مورد استفاده ما، آشکارساز داده های حسگر را هر 5 دقیقه تجزیه و تحلیل می کند.
برای ایجاد آشکارساز، به کنسول Lookout for Metrics بروید و انتخاب کنید آشکارساز ایجاد کنید. نام و توضیحات (اختیاری) آشکارساز را به همراه فاصله زمانی 5 دقیقه ارائه دهید.
داده های شما به طور پیش فرض با کلیدی که AWS مالک و برای شما مدیریت می کند رمزگذاری می شود. همچنین میتوانید پیکربندی کنید اگر میخواهید از کلید رمزگذاری متفاوتی با کلیدی که بهطور پیشفرض استفاده میشود استفاده کنید.
حالا بیایید این آشکارساز را به دادههایی که میخواهید تشخیص ناهنجاری را روی آن اجرا کند، اشاره میکنیم.
ایجاد یک مجموعه داده
یک مجموعه داده به آشکارساز می گوید که کجا داده های شما را پیدا کند و کدام معیارها را برای ناهنجاری ها تجزیه و تحلیل کند. برای ایجاد یک مجموعه داده، مراحل زیر را انجام دهید:
- در کنسول Amazon Lookout for Metrics، به آشکارساز خود بروید.
- را انتخاب کنید یک مجموعه داده اضافه کنید.
- برای نام، یک نام وارد کنید (به عنوان مثال،
air-quality-dataset
). - برای منبع اطلاعات، منبع داده خود را انتخاب کنید (برای این پست، Amazon S3).
- برای حالت آشکارساز، حالت خود را انتخاب کنید (برای این پست، مداوم).
با آمازون S3، می توانید یک آشکارساز در دو حالت ایجاد کنید:
-
- Backtest - این حالت برای یافتن ناهنجاری ها در داده های تاریخی استفاده می شود. باید تمام رکوردها در یک فایل ادغام شوند.
- مداوم – این حالت برای تشخیص ناهنجاری ها در داده های زنده استفاده می شود. ما از این حالت برای استفاده خود استفاده می کنیم زیرا می خواهیم هنگام دریافت داده های آلاینده هوا از سنسور نظارت بر هوا، ناهنجاری ها را تشخیص دهیم.
- مسیر S3 را برای پوشه و الگوی مسیر زنده S3 وارد کنید.
- برای فاصله منبع داده، انتخاب کنید فواصل 5 دقیقه ای.اگر داده های تاریخی دارید که آشکارساز می تواند الگوها را از آنها یاد بگیرد، می توانید آن را در طول این پیکربندی ارائه دهید. انتظار می رود که داده ها در همان قالبی باشند که برای انجام یک بک تست استفاده می کنید. ارائه داده های تاریخی روند آموزش مدل ML را سرعت می بخشد. اگر این در دسترس نباشد، آشکارساز پیوسته قبل از استنتاج منتظر می ماند تا داده های کافی در دسترس باشد.
- برای این پست، ما قبلاً داده های تاریخی داریم، بنابراین انتخاب کنید از داده های تاریخی استفاده کنید.
- مسیر S3 را وارد کنید
historical_data.json
. - برای فرمت فایل، انتخاب کنید خطوط JSON.
در این مرحله، Lookout for Metrics به منبع داده دسترسی پیدا میکند و تأیید میکند که آیا میتواند دادهها را تجزیه کند یا خیر. اگر تجزیه موفقیتآمیز باشد، پیامی به شما میدهد که «تأیید اعتبار موفقیتآمیز» است و شما را به صفحه بعدی میبرد، جایی که معیارها، ابعاد و مُهرهای زمانی را پیکربندی میکنید.
اندازه گیری ها، ابعاد و مهرهای زمانی را پیکربندی کنید
معیارهای KPI هایی را که می خواهید ناهنجاری ها را برای آنها ردیابی کنید، تعریف کنید. شما می توانید تا پنج اندازه گیری در هر آشکارساز اضافه کنید. فیلدهایی که برای ایجاد KPI از داده های منبع شما استفاده می شوند باید از فرمت عددی باشند. KPIها را میتوان با جمعآوری رکوردها در بازه زمانی با انجام SUM یا AVERAGE تعریف کرد.
ابعاد به شما این امکان را می دهد که با تعریف دسته ها یا بخش ها، داده های خود را برش دهید. این به شما امکان میدهد تا ناهنجاریها را برای زیرمجموعهای از کل مجموعه دادهها که معیار خاصی برای آنها قابل اعمال است، ردیابی کنید.
در مورد استفاده ما، ما سه اندازه گیری اضافه می کنیم که AVG اجسام مشاهده شده را در فاصله 5 دقیقه محاسبه می کند و فقط یک بعد دارد که غلظت آلاینده ها برای آن اندازه گیری می شود.
هر رکورد در مجموعه داده باید دارای مهر زمانی باشد. پیکربندی زیر به شما امکان میدهد فیلدی را انتخاب کنید که نشاندهنده مقدار زمان و همچنین قالب مهر زمان است.
صفحه بعدی به شما امکان می دهد تمام جزئیاتی را که اضافه کرده اید مرور کنید و سپس آشکارساز را ذخیره و فعال کنید.
سپس آشکارساز شروع به یادگیری جریان داده در منبع داده می کند. در این مرحله وضعیت آشکارساز تغییر می کند Initializing
.
توجه به حداقل مقدار دادهای که قبل از اینکه Lookout for Metrics بتواند ناهنجاریها را شناسایی کند، ضروری است. برای اطلاعات بیشتر در مورد الزامات و محدودیت ها، نگاه کنید به مراقب سهمیه های Metrics باشید.
با حداقل پیکربندی، آشکارساز خود را ایجاد کردهاید، آن را به یک مجموعه داده نشان دادهاید و معیارهایی را که میخواهید Lookout for Metrics ناهنجاریها را در آنها پیدا کند، تعریف کردهاید.
ناهنجاری ها را تجسم کنید
Lookout for Metrics یک تجربه UI غنی را برای کاربرانی که می خواهند از آن استفاده کنند فراهم می کند کنسول مدیریت AWS برای تجزیه و تحلیل ناهنجاری های شناسایی شده همچنین قابلیت پرس و جو از ناهنجاری ها از طریق API ها را فراهم می کند.
بیایید به یک مثال ناهنجاری که در مورد استفاده از دادههای کیفیت هوا شناسایی شده است نگاه کنیم. اسکرین شات زیر یک ناهنجاری را نشان می دهد که در غلظت CO در هوا در زمان و تاریخ تعیین شده با نمره شدت 93 شناسایی شده است. همچنین درصد سهم این بعد را نسبت به ناهنجاری نشان می دهد. در این مورد، 100٪ مشارکت از بعد شناسه مکان B-101 می آید.
ایجاد هشدار
Lookout for Metrics به شما امکان می دهد با استفاده از کانال های مختلف هشدار ارسال کنید. میتوانید آستانه امتیاز شدت ناهنجاری را که در آن هشدارها باید راهاندازی شوند، پیکربندی کنید.
در مورد استفاده ما، هشدارها را برای ارسال به یک پیکربندی می کنیم سرویس اطلاع رسانی ساده آمازون کانال (Amazon SNS) که به نوبه خود پیامک ارسال می کند. تصاویر زیر جزئیات پیکربندی را نشان می دهد.
همچنین می توانید از یک هشدار برای راه اندازی اتوماسیون ها استفاده کنید AWS لامبدا توابع به منظور هدایت عملیات مبتنی بر API در AWS IoT Core.
نتیجه
در این پست، ما به شما نشان دادیم که چگونه به راحتی میتوانید از Lookout for Metrics و Kinesis Data Firehose برای حذف بارهای سنگین غیرمتمایز درگیر در مدیریت چرخه عمر انتها به انتها ساخت برنامههای تشخیص ناهنجاری مبتنی بر ML استفاده کنید. این راه حل می تواند به شما کمک کند توانایی خود را برای یافتن ناهنجاری ها در معیارهای کلیدی کسب و کار تسریع کنید و به شما امکان می دهد تلاش های خود را بر رشد و بهبود کسب و کار خود متمرکز کنید.
ما شما را تشویق می کنیم با مراجعه به سایت بیشتر بیاموزید راهنمای توسعه دهندگان Amazon Lookout for Metrics و راه حل سرتاسر فعال شده توسط این سرویس ها را با مجموعه داده مرتبط با KPIهای کسب و کار خود امتحان کنید.
درباره نویسنده
دراج تاکور یک معمار راه حل با خدمات وب آمازون است. او با مشتریان و شرکای AWS کار می کند تا راهنمایی هایی در مورد پذیرش ابر سازمانی، مهاجرت و استراتژی ارائه دهد. او علاقه زیادی به فناوری دارد و از ساختن و آزمایش در حوزه تحلیل و AI/ML لذت می برد.