تخفیف نوروزی پی استور
هزینه سفارش:
۲۱۹,۰۰۰ تومان
در این پست به بحث استفاده از الگوریتم کلونی مورچگان Ant Colony Optimization یا (ACO) را برای انتخاب ویژگی (Feature Selection) برای الگوریتم یادگیری ماشین بردار ماشین پشتیبان Support Vector Machine یا SVM می پردازیم. در این بحث با توجه به خاصیت الگوریتم مورچه به انتخاب ویژگی با ACO از دیتاستها پرداخته میشود.
در این پست به بحث استفاده از الگوریتم کلونی مورچگان Ant Colony Optimization یا (ACO) را برای انتخاب ویژگی (Feature Selection) برای الگوریتم یادگیری ماشین بردار ماشین پشتیبان Support Vector Machine یا SVM می پردازیم. کدهای برنامه بصورت دقیق بر روی دیتاست سرطان سینه اعمال شده است. انتخاب ویژگی با ACO برای SVM در نرم افزار متلب نوشته شده است در ادامه به تشریح موضوع میپردازیم.
الگوریتم بهینه سازی کلونی مورچه Ant Colony Optimization یا به اختصار ACO مورچگان تحت عنوان الگوریتمهای هوش ازدحامی (هوش گروهی) شناخته شده و به مدل سازی رفتار مورچههای واقعی میپردازد. مورچهها حشراتی هستند که میتوانند گروهها (کلونی ها) را شکل دهند. چنین رویکرد جمعیت محوری این امکان را برای الگوریتم ACO ایجاد میکند تا به حل مسائل بهینه سازی پویا به طور کاملا کارآمد بپردازد. مورچهها به عنوان مخلوقات خودسازمانده میباشند.
از آن جایی که مورچهها چشم ندارند، تعاملات آنها از طریق ماده شیمیایی فرومون که از آن برای نشان گذاری مسیر استفاده میشود، انجام میگیرد. هرچه فرومونهای بیشتری در مسیر قرار گیرد مابقی مورچهها از این مسیر بیشتر استفاده میکنند؛ بنابراین، چنین کمیتی نشان میدهد که این مسیر به عنوان یکی از بهینهترین و کوتاهترین راه میباشد. اکنون نگاهی به یک نمونه عینی میاندازیم. هدف پیدا کردن بهترین راه از نقطه آغازی N (آشیانه) به نقطه مقصد F (منبع غذا) میباشد.
ممکن است این حدس زده شودکه احتمال برای مورچهای که مسیر درست را میپیماید برابر با همان احتمالی میباشد که مسیر اشتباه را انتخاب کند. نکته در اینجا اینست که مورچهای که کوتاه ترین مسیر را میپیماید، اولین مورچهای است که به نقطه مقصد رسیده و سپس به آشیانه ( نقطه مبدا حرکت) بر میگردد، بنابراین در این کوتاه ترین مسیر فرمونهای بیشتری وجود دارد. از این رو فرومون دقیقاً همان چیزی است که نشان میدهد که مورچه باید از چه مسیری برود و در پایان کوتاه ترین راه، بهترین مسیر میباشد.
مسئله دسته بندی (Classification) یکی از مسائل اصلی مطرح شده در یادگیری ماشین است و بسیاری از مسائل را میتوان به صورت یک مسئله دسته بندی مطرح کرده و حل کرد. از طرفی در یادگیری ماشین نیز روشهای مختلفی برای حل مسئله دسته بندی صورت گرفته است. یکی از روشهایی که در حال حاضر به صورت گستردهای برای مسئله دستهبندی مورد استفاده قرار میگیرد، روش ماشین بردار پشتیبان ( SVM ) است.
بردارهای پشتیبان به زبان ساده، مجموعهای از نقاط در فضای n بعدی دادهها هستند که مرز دستهها را مشخص میکنند و مرزبندی و دسته بندی دادهها براساس آنها انجام میشود و با جابجایی یکی از آنها، خروجی دسته بندی ممکن است تغییر کند .
در SVM فقط دادههای قرار گرفته در بردارهای پشتیبان مبنای یادگیری ماشین و ساخت مدل قرار میگیرند و این الگوریتم به سایر نقاط داده حساس نیست و هدف آن هم یافتن بهترین مرز در بین داده هاست به گونهای که بیشترین فاصله ممکن را از تمام دستهها (بردار های پشتیبان آنها) داشته باشد .
بهصورت جزئی میتوان گفت ابتدا یک بردار ویژگی دودویی با طول n (به تعداد پارامترهای ورودی) از F1 تا Fn بهصورت تصادفی تولید میشود هر کدام از این بیتهای این رشتهی دودویی متناظر با یک ویژگی در ماتریس آموزش است. اگر بیت متناظر با هر ویژگی صفر باشد آن ویژگی حذفشده و اگر یک باشد آن ویژگی در آموزش دخالت داده میشود پس از اجرای یک دور از الگوریتم کلونی مورچه با ویژگی تصادفی مقدار برازندگی برای هر بردار ویژگی دودویی تولید میشود.
برازندگی نیز مقدار خطای آموزش و تعداد ویژگیها است که میخواهیم در هر دور کمینه شود بر این اساس هر بار یک دسته جدید از ویژگیهای انتخاب میشود و رفتهرفته به سمت کمترین خطای آموزشی در الگوریتم میرویم بهترین دسته انتخابشده نهایی میشود و همان هدف یعنی انتخاب ویژگیهای بهتر آشکار میشود.
سورس کد انتخاب ویژگی با ACO برای SVM در متلب برنامه نویسی شده است. این سورس کد بر روی دیتاست سرطان سینه اعمال شده است. فقط با جایگذاری دیتاست خودتان میتوانید از این سورس کد برای دیتاست جدید استفاده کنید. سورس انتخاب ویژگی با ACO برای SVM دارای دو بخش است بخش اول توسط فایل SVM.m اجرا میشود که این قسمت فقط الگوریتم SVM را اجرا میکند و بدون در نظر گرفتن انتخاب ویژگی است.
بخش دوم توسط فایل SVM_with_selection_ACO.m اجرا میشود که توسط الگوریتم کلونی مورچگان برای انتخاب ویژگی (فیوچر) می پردازد. کل فایلهای موجود ۷ فایل میباشد که ۴ فایل مربوط به الگوریتم کلونی مورچگان و مابقی برای اجرای پیاده سازی است.
نمونه ای از سورس کد مربوط به SVM_with_selection_ACO.m به شرح زیر است:
clc, clear, close all global trn_Inputs tst_Inputs trn_Outputs tst_Outputs addpath(genpath('ACO')) load Dataset Inputs = Dataset(:,1:end-1)'; Output = Dataset(:,end)'; Output(Output==2) = 0; Output(Output==4) = 1; % sakhtan e dade haye amoozesh va test [trn_Inputs,valP,tst_Inputs,trainInd,valInd,testInd] = dividerand(Inputs,0.6,0,0.4); [trn_Outputs,valT,tst_Outputs] = divideind(Output,trainInd,valInd,testInd); dim = size( Dataset , 2) - 1; %aco(MaxIteretion,nAnt,dim) bestParams = aco(10,20,dim); bestParams = round( bestParams ); selectedFeatures = find( bestParams == 1 ); disp('Selected Features: ') disp(num2str(selectedFeatures')) %% Test the results usedFeatures = trn_Inputs(selectedFeatures, :);
سورس برنامه پیاده سازی انتخاب ویژگی با الگوریتم کلونی مورچه ACO برای SVM در متلب عنوان اثری است که در این پست به آن پرداخته شده است و در نرم افزار متلب نوشته شده و بصورت کامل توسط گروه پشتیبانی پی استور تست و اجرا شده است. فایل دارای نشان تضمین کیفیت پی استور میباشد. برای دانلود اثر مذکور آن را خریداری کنید.
تیم برنامه نویسی پی استور یکی از اولین گروههای تشکیل شده در مجموعه آموزشی پی استور میباشد. این تیم از اساتید مجرب و فارغ التحصیلان رشتههای فنی و مهندسی تشکیل شده که در زمینههای مختلف برنامهنویسی و تهیه سورس کد فعال هستند.
نام اثر: | پیاده سازی انتخاب ویژگی با ACO برای SVM در متلب + سورس کد |
نوع اثر: | سورس کد |
برنامهنویس: | تیم برنامهنویسی پیاستور |
زبان برنامه نویسی: | متلب |
ویژگی: | دارای قابلیت ویرایش و دانلود |
توجه: کیفیت این محصول توسط پی استور تضمین شده و در صورت عدم رضایت از محصول، به انتخاب شما:
هزینه سفارش:
۲۱۹,۰۰۰ تومان
نظرات
احمد رضایی
سلام و تشکر از سایت تخصصی تون.
با این همه موضوعات مرتبط که در زمینه الگوریتم بهینه سازی کلونی مورچگان کار شده می خواستم یه سوالی داشته باشم. اگر تعداد فیوچرهای ما در مسئله پردازش تصویر زیاد باشه (۱۶۰ ویژگی) آیا الگوریتم کلونی مورچه می تونه subset با کارایی بالا رو انتخاب کنه و کدام نوع الگوریتم (پیوسته یا باینری) می تونه جواب بهتری بده؟
ممنون می شم راهنمایی بفرمایید.
مدیریت و پشتیبانی
سلام و وقت بخیر
ممنون از شما دوست عزیز. بله برای انتخاب ویژگی با الگوریتم ACO میشه برای مسائلی که تعداد فیوچرهای زیادی دارند استفاده کرد و بهترین نتیجه رو هم الگوریتم ACO باینری یا همون گسسته خواهد داد.
مدیریت و پشتیبانی
نظرات و دیدگاه های خود را با ما درمیان بگذارید.