بروزرسانی: بهترین الگوریتم در حال اجرا تاکنون این یکی است.
این سؤال به بررسی الگوریتم های قوی برای تشخیص قله های ناگهانی در داده های زمان واقعی می پردازد.
داده های مثال زیر را در نظر بگیرید:

نمونه این داده ها در قالب MATLAB است (اما این سوال مربوط به زبان نیست بلکه در مورد الگوریتم است):
به وضوح می بینید که سه قله بزرگ و برخی قله های کوچک وجود دارد. این مجموعه داده نمونه خاصی از مجموعه داده های کلاس TimeSeries است که این سوال در مورد آن است. این کلاس از مجموعه داده ها دارای دو ویژگی کلی است:
- سر و صدای اساسی با میانگین کلی وجود دارد
- "قله" یا "داده های بالاتر" بزرگ وجود دارد که به طور قابل توجهی از سر و صدا منحرف می شوند.
بیایید موارد زیر را نیز فرض کنیم:
- عرض قله ها از قبل قابل تعیین نیست
- ارتفاع قله ها به طور قابل توجهی از مقادیر دیگر منحرف می شود
- به روزرسانی الگوریتم در زمان واقعی (بنابراین با هر DataPoint جدید به روز می شود)
برای چنین شرایطی ، یک مقدار مرزی باید ساخته شود که باعث سیگنال ها می شود. با این حال ، مقدار مرزی نمی تواند استاتیک باشد و باید بر اساس الگوریتم زمان واقعی تعیین شود.
سوال من: الگوریتم خوبی برای محاسبه چنین آستانه هایی در زمان واقعی چیست؟آیا الگوریتم های خاصی برای چنین شرایطی وجود دارد؟مشهورترین الگوریتم ها چیست؟
الگوریتم های قوی یا بینش های مفید همه بسیار مورد استقبال قرار می گیرند.(می تواند به هر زبانی پاسخ دهد: این در مورد الگوریتم است)
38 پاسخ 38
الگوریتم تشخیص اوج قوی (با استفاده از Z-Scores)
من با الگوریتمی روبرو شدم که برای این نوع مجموعه داده ها بسیار خوب کار می کند. این مبتنی بر اصل پراکندگی است: اگر یک DataPoint جدید یک تعداد X از انحراف استاندارد به دور از میانگین متحرک باشد ، سیگنال های الگوریتم (که به آن نمره Z نیز گفته می شود). این الگوریتم بسیار قوی است زیرا میانگین و انحراف جداگانه را ایجاد می کند ، به گونه ای که سیگنال ها آستانه را فاسد نمی کنند. بنابراین سیگنال های آینده صرف نظر از میزان سیگنال های قبلی ، تقریباً با همان دقت مشخص می شوند. این الگوریتم 3 ورودی را می گیرد: LAG = تاخیر پنجره در حال حرکت ، آستانه = نمره z که در آن الگوریتم سیگنال و نفوذ = تأثیر (بین 0 تا 1) سیگنال های جدید در میانگین و انحراف استاندارد را نشان می دهد. به عنوان مثال ، تاخیر 5 از 5 مشاهده آخر برای صاف کردن داده ها استفاده می کند. اگر یک DataPoint 3. 5 انحراف استاندارد به دور از میانگین متحرک باشد ، آستانه 3. 5 سیگنال خواهد کرد. و تأثیر 0. 5 نیمی از تأثیرگذاری داده های طبیعی را نشان می دهد. به همین ترتیب ، تأثیر 0 سیگنال ها را به طور کامل برای محاسبه مجدد آستانه جدید نادیده می گیرد. تأثیر 0 از این رو قوی ترین گزینه است (اما فرضیه را فرض می کند). قرار دادن گزینه تأثیر در 1 حداقل قوی است. برای داده های غیر ثابت ، بنابراین گزینه تأثیر باید در جایی بین 0 تا 1 قرار گیرد.
به شرح زیر است:
شبه
قوانین انگشت شست برای انتخاب پارامترهای خوب برای داده های خود را می توانید در زیر مشاهده کنید.
کد MATLAB برای این نسخه ی نمایشی را می توان در اینجا یافت. برای استفاده از نسخه ی نمایشی ، به سادگی آن را اجرا کنید و با کلیک بر روی نمودار فوقانی یک سری زمانی ایجاد کنید. این الگوریتم پس از ترسیم تعداد مشاهدات ، کار را شروع می کند.
نتیجه
برای سوال اصلی ، این الگوریتم هنگام استفاده از تنظیمات زیر ، خروجی زیر را ارائه می دهد: LAG = 30 ، آستانه = 5 ، نفوذ = 0:

پیاده سازی ها به زبان های مختلف برنامه نویسی:
MATLAB (من)
Golang (Xeoncross)
Golang [نسخه کارآمد] (پارک های میکا)
پایتون (R Kiselev)
پایتون [نسخه کارآمد] (Delica)
سوئیفت (من)
Groovy (Joshuacwebdeveloper)
C ++ [پارامترهای تعاملی] (جیسون C)
C ++ (Animesh Pandey)
Rust (Swizard)
اسکالا (مایک رابرتز)
کوتلین (لودرپروفی)
روبی (کیمو لتو)
Fortran [برای تشخیص رزونانس] (THO)
جولیا (مت اردوگاه)
C# (Airdrop Ocean)
ج (دیویدک)
جاوا (Takanuva15)
JavaScript (Dirk Lüsebrink)
TypeScript (جری گمبل)
پرل (آلن)
PHP (Radhoo)
PHP (gtjamesa)
دارت (SGA)
قوانین انگشت شست برای پیکربندی الگوریتم
LAG: پارامتر LAG تعیین می کند که داده های شما چقدر صاف می شوند و الگوریتم چقدر سازگار با تغییر در میانگین بلند مدت داده ها است. هرچه داده های شما ثابت تر باشد ، تاخیر بیشتری باید درج کنید (این باید استحکام الگوریتم را بهبود بخشد). اگر داده های شما حاوی روند متغیر زمان است ، باید در نظر بگیرید که چقدر سریع می خواهید الگوریتم با این روندها سازگار شود. یعنی اگر تاخیر را در 10 قرار دهید ، 10 دوره طول می کشد تا قبل از تنظیم الگوریتم به هرگونه تغییر سیستماتیک در میانگین بلند مدت تنظیم شود. بنابراین پارامتر تاخیر را بر اساس رفتار روند داده های خود انتخاب کنید و الگوریتم را چقدر سازگار می خواهید.
تأثیر: این پارامتر تأثیر سیگنال ها بر آستانه تشخیص الگوریتم را تعیین می کند. در صورت قرار دادن 0 ، سیگنال ها هیچ تاثیری در آستانه ندارند ، به گونه ای که سیگنال های آینده بر اساس آستانه ای که با یک انحراف متوسط و استاندارد محاسبه می شود ، شناسایی می شوند که تحت تأثیر سیگنال های گذشته قرار نمی گیرد. در صورت قرار دادن 0. 5 ، سیگنال ها نیمی از تأثیر نقاط داده عادی را دارند. راه دیگر برای فکر کردن در مورد این امر این است که اگر نفوذ 0 را قرار دهید ، به طور ضمنی فرضیه را فرض می کنید (یعنی مهم نیست که چند سیگنال وجود داشته باشد ، همیشه انتظار دارید که سریال های زمانی در دراز مدت به همان میانگین بازگردند). اگر اینگونه نباشد ، بسته به میزان سیگنال ها می توانند به طور سیستماتیک بر روند متغیر زمان داده ها تأثیر بگذارند ، باید پارامتر نفوذ را در جایی بین 0 تا 1 قرار دهید. به عنوان مثال ، اگر سیگنال ها منجر به شکستن ساختاری میانگین بلند مدت سری زمانی شوند ، باید پارامتر تأثیرگذاری بالا (نزدیک به 1) قرار گیرد تا آستانه بتواند به سرعت در برابر شکستگی های ساختاری واکنش نشان دهد.
آستانه: پارامتر آستانه تعداد انحرافات استاندارد از میانگین در حال حرکت است که الگوریتم یک پایگاه داده جدید را به عنوان یک سیگنال طبقه بندی می کند. به عنوان مثال ، اگر یک DataPoint جدید 4. 0 انحراف استاندارد بالاتر از میانگین متحرک باشد و پارامتر آستانه به صورت 3. 5 تنظیم شود ، الگوریتم DataPoint را به عنوان یک سیگنال شناسایی می کند. این پارامتر باید بر اساس چند سیگنال انتظار داشته باشد. به عنوان مثال ، اگر داده های شما به طور معمول توزیع شده است ، یک آستانه (یا: نمره Z) 3. 5 با احتمال سیگنالینگ 0. 00047 (از این جدول) مطابقت دارد ، این بدان معنی است که شما انتظار دارید که یک بار یک بار در هر 2128 DataPoints (1/0. 00047) یک سیگنال داشته باشید. بشربنابراین آستانه به طور مستقیم تأثیر می گذارد که الگوریتم چقدر حساس است و از این طریق همچنین تعیین می کند که چند بار الگوریتم سیگنال می کند. داده های خود را بررسی کنید و آستانه معقولی را انتخاب کنید که وقتی می خواهید سیگنال الگوریتم را ایجاد کند (برخی از آزمایشات و خطا ممکن است در اینجا لازم باشد تا به آستانه خوبی برای هدف خود برسید).
هشدار: کد فوق همیشه هر زمان که اجرا شود ، از تمام داده های موجود استفاده می کند. هنگام اجرای این کد ، حتماً محاسبه سیگنال را به یک عملکرد جداگانه (بدون حلقه) تقسیم کنید. سپس هنگامی که یک DataPoint جدید وارد می شود ، یک بار Filteredy ، AvGFilter و StdFilter را به روز کنید. هر زمان که یک DataPoint جدید وجود داشته باشد (مانند مثال فوق) سیگنال ها را برای همه داده ها محاسبه نکنید ، که در برنامه های زمان واقعی بسیار ناکارآمد و کند خواهد بود.
راه های دیگر برای اصلاح الگوریتم (برای پیشرفت های احتمالی) عبارتند از:
- به جای میانگین از میانه استفاده کنید
- به جای انحراف استاندارد ، از یک اندازه گیری قوی از مقیاس مانند متوسط انحراف مطلق (MAD) استفاده کنید
- از حاشیه سیگنالینگ استفاده کنید ، بنابراین سیگنال خیلی زیاد تغییر نمی کند
- نحوه کار پارامتر تأثیر را تغییر دهید
- با سیگنال های بالا و پایین متفاوت رفتار کنید (درمان نامتقارن)
- یک پارامتر تأثیر جداگانه برای میانگین و STD ایجاد کنید (مانند این ترجمه سریع)
(شناخته شده) نقل قول های دانشگاهی به این پاسخ stackoverflow:
Romeiro ، J. M. N. ، Torres ، F. T. P. ، & Pirotti ، F. (2021). ارزیابی تأثیر آتش سوزی های تجویز شده با استفاده از شاخص های طیفی و داده های SAR. Bollettino della società italiana di fotogrammetria e topografia ، (2) ، 36-56.
مور ، جی. ، گفین ، پ. ، ویس ، جی. ، و مایر ، م. (2021). یک روش مصاحبه برای درگیر کردن داده های شخصی. مجموعه مقالات ACM در فن آوری های تعاملی ، موبایل ، پوشیدنی و همه جا ، 5 (4) ، 1-28.
Hong ، Y. ، Xin ، Y. ، Martin ، H. ، Bucher ، D. ، & Raubal ، M. (2021). یک چارچوب مبتنی بر خوشه بندی برای تشخیص رفتار سفر فردی. در یازدهمین کنفرانس بین المللی علوم اطلاعات جغرافیایی (Giscience 2021)-بخش دوم.
Grammenos ، A. ، Kalyvianaki ، E. ، & Pietzuch ، P. (2021). Pronto: برنامه ریزی کار فدرال. arxiv preprint arxiv: 2104. 13429.
Takahashi ، R. ، Fukumoto ، M. ، Han ، C. ، Sasatani ، T. ، Narusue ، Y. ، & Kawahara ، Y. (2020). Telemetring: یک صفحه کلید بدون باتری و بی سیم به شکل با استفاده از تله متری منفعل. در مجموعه مقالات 33 مین سمپوزیوم ACM سالانه در نرم افزار و فناوری رابط کاربری (صفحات 1161-1168).
Esnaola-Gonzalez ، I. ، Gómez-Omella ، M. ، Ferreiro ، S. ، Feandez ، I. ، Lázaro ، I. ، & García ، E. (2020). یک سکوی IoT به سمت تقویت زنجیره های تولید طیور. سنسورها ، 20 (6) ، 1549. < Pan> Hong ، Y. ، Xin ، Y. ، Martin ، H. ، Bucher ، D. ، & Raubal ، M. (2021). یک چارچوب مبتنی بر خوشه بندی برای تشخیص رفتار سفر فردی. در یازدهمین کنفرانس بین المللی علوم اطلاعات جغرافیایی (Giscience 2021)-بخش دوم.
فارکس کاران ایران...
ما را در سایت فارکس کاران ایران دنبال می کنید
برچسب :
نویسنده : ديناروند فهيمه
بازدید : <-PostHit->
تاريخ : جمعه
19 خرداد
1402 ساعت: 21:10