<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>بایگانی‌های binary genetic algorithm - ايران متلب</title>
	<atom:link href="https://matlab1.ir/tag/binary-genetic-algorithm/feed/" rel="self" type="application/rss+xml" />
	<link>https://matlab1.ir/tag/binary-genetic-algorithm/</link>
	<description>مرجع فیلم های آموزشی فارسی دانشگاهی و مهندسی</description>
	<lastBuildDate>Sun, 30 Aug 2026 11:03:08 +0000</lastBuildDate>
	<language>fa-IR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://matlab1.ir/wp-content/uploads/2017/08/ref_a2-150x150.png</url>
	<title>بایگانی‌های binary genetic algorithm - ايران متلب</title>
	<link>https://matlab1.ir/tag/binary-genetic-algorithm/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>فیلم جامع آموزش فارسی الگوریتم ژنتیک در MATLAB</title>
		<link>https://matlab1.ir/%d9%81%db%8c%d9%84%d9%85-%d8%ac%d8%a7%d9%85%d8%b9-%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%d9%81%d8%a7%d8%b1%d8%b3%db%8c-%d8%a7%d9%84%da%af%d9%88%d8%b1%db%8c%d8%aa%d9%85-%da%98%d9%86%d8%aa%db%8c%da%a9-%d8%af-2/</link>
					<comments>https://matlab1.ir/%d9%81%db%8c%d9%84%d9%85-%d8%ac%d8%a7%d9%85%d8%b9-%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%d9%81%d8%a7%d8%b1%d8%b3%db%8c-%d8%a7%d9%84%da%af%d9%88%d8%b1%db%8c%d8%aa%d9%85-%da%98%d9%86%d8%aa%db%8c%da%a9-%d8%af-2/#respond</comments>
		
		<dc:creator><![CDATA[ایران متلب]]></dc:creator>
		<pubDate>Sun, 30 Aug 2026 11:03:08 +0000</pubDate>
				<category><![CDATA[MATLAB متلب]]></category>
		<category><![CDATA[هوش مصنوعی]]></category>
		<category><![CDATA[Artificial intelligence]]></category>
		<category><![CDATA[آموزش الگوریتم ژنتیک]]></category>
		<category><![CDATA[آموزش الگوریتم ژنتیک MATLAB]]></category>
		<category><![CDATA[آموزش GA در متلب]]></category>
		<category><![CDATA[آموزش GENETIC ALGORITHM]]></category>
		<category><![CDATA[آموزش MATLAB]]></category>
		<category><![CDATA[آموزش متلب]]></category>
		<category><![CDATA[آمیختگی الگوریتم ژنتیک]]></category>
		<category><![CDATA[الگوریتم تکاملی]]></category>
		<category><![CDATA[الگوریتم ژنتیک]]></category>
		<category><![CDATA[الگوریتم ژنتیک باینری]]></category>
		<category><![CDATA[الگوریتم ژنتیک برای پایان نامه]]></category>
		<category><![CDATA[الگوریتم ژنتیک در متلب]]></category>
		<category><![CDATA[الگوریتم فراابتکاری]]></category>
		<category><![CDATA[انتخاب تورنومنت]]></category>
		<category><![CDATA[انتخاب در الگوریتم ژنتیک]]></category>
		<category><![CDATA[انتخاب ویژگی با الگوریتم ژنتیک]]></category>
		<category><![CDATA[Binary Encoding]]></category>
		<category><![CDATA[binary genetic algorithm]]></category>
		<category><![CDATA[Chromosome Encoding]]></category>
		<category><![CDATA[Chromosome GA]]></category>
		<category><![CDATA[Computational Intelligence]]></category>
		<category><![CDATA[Convergence Curve]]></category>
		<category><![CDATA[Cost Function]]></category>
		<category><![CDATA[Crossover]]></category>
		<category><![CDATA[Crossover Probability]]></category>
		<category><![CDATA[Elitism]]></category>
		<category><![CDATA[Elitist Selection]]></category>
		<category><![CDATA[Evolutionary Algorithm]]></category>
		<category><![CDATA[Evolutionary Computation]]></category>
		<category><![CDATA[Feature Selection GA]]></category>
		<category><![CDATA[Fitness Function]]></category>
		<category><![CDATA[GA]]></category>
		<category><![CDATA[GA Convergence]]></category>
		<category><![CDATA[GA MATLAB]]></category>
		<category><![CDATA[Gene GA]]></category>
		<category><![CDATA[Generation]]></category>
		<category><![CDATA[genetic algorithm]]></category>
		<category><![CDATA[Genetic Algorithm Code]]></category>
		<category><![CDATA[Genetic Algorithm Control]]></category>
		<category><![CDATA[Genetic Algorithm Feature Selection]]></category>
		<category><![CDATA[Genetic Algorithm MATLAB]]></category>
		<category><![CDATA[Genetic Algorithm Scheduling]]></category>
		<category><![CDATA[Genetic Algorithm Tutorial]]></category>
		<category><![CDATA[Global Minimum]]></category>
		<category><![CDATA[Global Optimization]]></category>
		<category><![CDATA[Hyperparameter Optimization GA]]></category>
		<category><![CDATA[Initial Population]]></category>
		<category><![CDATA[Local Minimum]]></category>
		<category><![CDATA[MATLAB Genetic Algorithm Code]]></category>
		<category><![CDATA[MATLAB Optimization]]></category>
		<category><![CDATA[MATLAB Optimization Tutorial]]></category>
		<category><![CDATA[Metaheuristic]]></category>
		<category><![CDATA[Metaheuristic Algorithm]]></category>
		<category><![CDATA[Multi Point Crossover]]></category>
		<category><![CDATA[Mutation]]></category>
		<category><![CDATA[Mutation Operator]]></category>
		<category><![CDATA[Mutation Probability]]></category>
		<category><![CDATA[Neural Network Genetic Algorithm]]></category>
		<category><![CDATA[Objective Function]]></category>
		<category><![CDATA[Optimization]]></category>
		<category><![CDATA[Optimization Algorithm]]></category>
		<category><![CDATA[Population]]></category>
		<category><![CDATA[Power System GA]]></category>
		<category><![CDATA[Premature Convergence]]></category>
		<category><![CDATA[Random Population]]></category>
		<category><![CDATA[Real Coded Genetic Algorithm]]></category>
		<category><![CDATA[Real Encoding]]></category>
		<category><![CDATA[Real Valued GA]]></category>
		<category><![CDATA[Roulette Wheel Selection]]></category>
		<category><![CDATA[Selection]]></category>
		<category><![CDATA[Single Point Crossover]]></category>
		<category><![CDATA[Tournament Selection]]></category>
		<category><![CDATA[Two Point Crossover]]></category>
		<category><![CDATA[Uniform Crossover]]></category>
		<category><![CDATA[بهینه سازی]]></category>
		<category><![CDATA[بهینه سازی در متلب]]></category>
		<category><![CDATA[بهینه سازی سراسری]]></category>
		<category><![CDATA[پایان نامه الگوریتم ژنتیک]]></category>
		<category><![CDATA[پروژه الگوریتم ژنتیک]]></category>
		<category><![CDATA[پروژه GA]]></category>
		<category><![CDATA[تابع برازندگی]]></category>
		<category><![CDATA[تابع هدف]]></category>
		<category><![CDATA[تنظیم پارامتر با الگوریتم ژنتیک]]></category>
		<category><![CDATA[تولید جمعیت اولیه]]></category>
		<category><![CDATA[جمعیت الگوریتم ژنتیک]]></category>
		<category><![CDATA[جهش الگوریتم ژنتیک]]></category>
		<category><![CDATA[چرخ رولت]]></category>
		<category><![CDATA[زمان بندی با الگوریتم ژنتیک]]></category>
		<category><![CDATA[ژن الگوریتم ژنتیک]]></category>
		<category><![CDATA[سیستم قدرت الگوریتم ژنتیک]]></category>
		<category><![CDATA[شبکه عصبی و الگوریتم ژنتیک]]></category>
		<category><![CDATA[عملگر Crossover]]></category>
		<category><![CDATA[کدگذاری کروموزوم]]></category>
		<category><![CDATA[کدنویسی الگوریتم ژنتیک]]></category>
		<category><![CDATA[کروموزوم الگوریتم ژنتیک]]></category>
		<category><![CDATA[کنترل با الگوریتم ژنتیک]]></category>
		<category><![CDATA[محاسبات تکاملی]]></category>
		<category><![CDATA[مقاله الگوریتم ژنتیک]]></category>
		<category><![CDATA[نخبه گرایی]]></category>
		<category><![CDATA[نسل الگوریتم ژنتیک]]></category>
		<category><![CDATA[نمودار همگرایی]]></category>
		<category><![CDATA[همگرایی زودرس]]></category>
		<category><![CDATA[هوش محاسباتی]]></category>
		<guid isPermaLink="false">https://matlab1.ir/?p=14871</guid>

					<description><![CDATA[<p>الگوریتم ژنتیک یا Genetic Algorithm (GA) یکی از شناخته‌شده‌ترین روش‌های بهینه‌سازی تکاملی است که از مفاهیم انتخاب طبیعی و ژنتیک الهام گرفته شده است. این الگوریتم به جای بررسی مستقیم همه جواب‌های [&#8230;]</p>
<p>نوشته <a href="https://matlab1.ir/%d9%81%db%8c%d9%84%d9%85-%d8%ac%d8%a7%d9%85%d8%b9-%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%d9%81%d8%a7%d8%b1%d8%b3%db%8c-%d8%a7%d9%84%da%af%d9%88%d8%b1%db%8c%d8%aa%d9%85-%da%98%d9%86%d8%aa%db%8c%da%a9-%d8%af-2/">فیلم جامع آموزش فارسی الگوریتم ژنتیک در MATLAB</a> اولین بار در <a href="https://matlab1.ir">ايران متلب</a>. پدیدار شد.</p>
]]></description>
										<content:encoded><![CDATA[<p><strong>الگوریتم ژنتیک یا Genetic Algorithm (GA)</strong> یکی از شناخته‌شده‌ترین روش‌های بهینه‌سازی تکاملی است که از مفاهیم انتخاب طبیعی و ژنتیک الهام گرفته شده است. این الگوریتم به جای بررسی مستقیم همه جواب‌های ممکن، با یک جمعیت از جواب‌های اولیه شروع می‌کند و با استفاده از عملگرهایی مانند انتخاب، آمیختگی و جهش، نسل‌های جدیدی از جواب‌ها را تولید می‌کند.</p>
<p>الگوریتم ژنتیک در بسیاری از مسائل بهینه‌سازی که فضای جستجوی بزرگ، غیرخطی یا پیچیده دارند قابل استفاده است و به همین دلیل در حوزه‌های مختلف مهندسی، هوش مصنوعی و علوم کاربرد فراوانی پیدا کرده است.</p>
<h3>الگوریتم ژنتیک چگونه کار می‌کند؟</h3>
<p>در یک مسئله بهینه‌سازی، ابتدا باید متغیرهای تصمیم مشخص شوند. سپس هر جواب ممکن به شکلی قابل استفاده برای الگوریتم نمایش داده می‌شود.</p>
<p>الگوریتم ژنتیک معمولاً با مراحل زیر اجرا می‌شود:</p>
<ol>
<li>تولید جمعیت اولیه</li>
<li>محاسبه مقدار تابع برازندگی</li>
<li>انتخاب والدین مناسب</li>
<li>انجام Crossover</li>
<li>اعمال Mutation</li>
<li>تولید نسل جدید</li>
<li>ارزیابی نسل جدید</li>
<li>تکرار مراحل تا رسیدن به شرط توقف</li>
</ol>
<p>هدف این فرایند آن است که با گذشت نسل‌ها، کیفیت جواب‌های موجود در جمعیت افزایش پیدا کند.</p>
<h3>کروموزوم در الگوریتم ژنتیک</h3>
<p>در GA هر جواب ممکن برای مسئله با یک <strong>Chromosome</strong> نمایش داده می‌شود.</p>
<p>کروموزوم شامل مجموعه‌ای از ژن‌ها است و هر ژن می‌تواند نماینده یکی از متغیرهای مسئله باشد.</p>
<p>برای مثال اگر مسئله دارای سه متغیر تصمیم باشد، یک کروموزوم می‌تواند اطلاعات مربوط به این سه متغیر را در خود نگه دارد.</p>
<p>نحوه نمایش کروموزوم اهمیت زیادی دارد، زیرا ساختار آن باید متناسب با مسئله بهینه‌سازی انتخاب شود.</p>
<h3>کدگذاری باینری و حقیقی</h3>
<p>یکی از روش‌های کلاسیک نمایش کروموزوم‌ها، <strong>Binary Encoding</strong> است. در این روش متغیرها به رشته‌های صفر و یک تبدیل می‌شوند.</p>
<p>با این حال برای بسیاری از مسائل مهندسی استفاده از <strong>Real-Valued Encoding</strong> مناسب‌تر است، زیرا متغیرها مستقیماً به صورت اعداد حقیقی نمایش داده می‌شوند.</p>
<p>انتخاب نوع کدگذاری به ساختار مسئله، نوع متغیرها و روش اعمال عملگرهای ژنتیکی بستگی دارد.</p>
<h3>Population یا جمعیت</h3>
<p>مجموعه‌ای از چند کروموزوم یک <strong>Population</strong> را تشکیل می‌دهد.</p>
<p>هر عضو جمعیت یک جواب احتمالی برای مسئله است. در ابتدای اجرای الگوریتم، جمعیت اولیه معمولاً به صورت تصادفی ایجاد می‌شود.</p>
<p>سپس در هر Generation جمعیت جدیدی تولید می‌شود که انتظار داریم نسبت به نسل‌های قبلی جواب‌های مناسب‌تری در آن وجود داشته باشد.</p>
<p>تعداد اعضای جمعیت یکی از پارامترهای مهم الگوریتم ژنتیک است.</p>
<h3>تابع هدف و Fitness Function</h3>
<p>یکی از مهم‌ترین مراحل استفاده از الگوریتم ژنتیک، تعریف صحیح <strong>Objective Function یا تابع هدف</strong> است.</p>
<p>الگوریتم باید بتواند کیفیت هر جواب را اندازه‌گیری کند. این کار از طریق Fitness Function انجام می‌شود.</p>
<p>برای مثال ممکن است هدف مسئله یکی از موارد زیر باشد:</p>
<ul>
<li>کمینه کردن هزینه</li>
<li>کمینه کردن خطا</li>
<li>بیشینه کردن سود</li>
<li>بیشینه کردن راندمان</li>
<li>کاهش مصرف انرژی</li>
<li>پیدا کردن بهترین پارامترهای یک مدل</li>
</ul>
<p>اگر تابع هدف به درستی تعریف نشود، حتی یک الگوریتم ژنتیک خوب نیز نمی‌تواند جواب مناسبی برای مسئله پیدا کند.</p>
<h3>Selection یا انتخاب</h3>
<p>بعد از محاسبه Fitness، باید مشخص شود کدام اعضای جمعیت برای تولید نسل بعد انتخاب شوند.</p>
<p>به این مرحله <strong>Selection</strong> گفته می‌شود.</p>
<p>در حالت کلی جواب‌هایی که Fitness بهتری دارند، شانس بیشتری برای انتقال ویژگی‌های خود به نسل بعد خواهند داشت.</p>
<p>روش‌های مختلفی برای Selection وجود دارد.</p>
<h3>Roulette Wheel Selection</h3>
<p>یکی از روش‌های معروف انتخاب در GA، <strong>Roulette Wheel Selection</strong> است.</p>
<p>در این روش احتمال انتخاب هر عضو با کیفیت یا Fitness آن ارتباط دارد.</p>
<p>به صورت مفهومی می‌توان یک چرخ رولت را تصور کرد که اعضای بهتر سهم بیشتری از آن را در اختیار دارند؛ بنابراین احتمال انتخاب آن‌ها بیشتر است.</p>
<p>با این حال اعضای ضعیف‌تر نیز احتمال صفر ندارند و همین موضوع به حفظ تنوع جمعیت کمک می‌کند.</p>
<h3>Tournament Selection</h3>
<p>روش <strong>Tournament Selection</strong> نیز یکی از روش‌های پرکاربرد انتخاب است.</p>
<p>در این روش چند عضو از جمعیت انتخاب شده و با یکدیگر مقایسه می‌شوند. سپس عضو مناسب‌تر به عنوان والد انتخاب می‌شود.</p>
<p>این عملیات چندین بار تکرار می‌شود تا تعداد کافی والد برای تولید نسل بعد در اختیار الگوریتم قرار گیرد.</p>
<h3>Elitism</h3>
<p>در الگوریتم ژنتیک ممکن است بهترین جواب یک نسل در هنگام Crossover و Mutation از بین برود.</p>
<p>برای جلوگیری از این اتفاق می‌توان از <strong>Elitism</strong> استفاده کرد.</p>
<p>در روش نخبه‌گرایی، تعدادی از بهترین اعضای جمعیت بدون تغییر مستقیماً به نسل بعد منتقل می‌شوند.</p>
<p>این کار کمک می‌کند بهترین جواب پیدا شده تا آن لحظه از دست نرود.</p>
<h3>Crossover یا آمیختگی</h3>
<p>یکی از اصلی‌ترین عملگرهای الگوریتم ژنتیک <strong>Crossover</strong> است.</p>
<p>در این مرحله دو کروموزوم والد انتخاب می‌شوند و بخش‌هایی از اطلاعات آن‌ها با یکدیگر ترکیب می‌شوند تا فرزندان جدیدی ایجاد شوند.</p>
<p>ایده اصلی این است که شاید ترکیب ویژگی‌های خوب دو والد بتواند یک جواب بهتر تولید کند.</p>
<h3>Single Point Crossover</h3>
<p>در <strong>Single Point Crossover</strong> یک نقطه روی کروموزوم انتخاب می‌شود.</p>
<p>قسمتی از ژن‌های بعد از این نقطه میان والدها جابه‌جا می‌شوند و به این ترتیب دو فرزند جدید ایجاد می‌شوند.</p>
<p>این روش یکی از ساده‌ترین روش‌های آمیختگی در الگوریتم ژنتیک است.</p>
<h3>Two-Point و Multi-Point Crossover</h3>
<p>در Two-Point Crossover دو نقطه روی کروموزوم مشخص می‌شود و بخش قرار گرفته بین این دو نقطه میان والدها جابه‌جا می‌شود.</p>
<p>اگر تعداد بیشتری نقطه Crossover داشته باشیم، با یک روش <strong>Multi-Point Crossover</strong> مواجه هستیم.</p>
<p>انتخاب روش مناسب Crossover می‌تواند روی سرعت و کیفیت جستجو تأثیر بگذارد.</p>
<h3>Uniform Crossover</h3>
<p>در <strong>Uniform Crossover</strong> انتخاب ژن‌های فرزند می‌تواند برای هر موقعیت به صورت جداگانه انجام شود.</p>
<p>در نتیجه ترکیب ژن‌های والدین انعطاف بیشتری نسبت به روش‌های تک‌نقطه‌ای دارد.</p>
<p>نوع Crossover باید با نوع کدگذاری کروموزوم و ساختار مسئله هماهنگ باشد.</p>
<h3>Mutation یا جهش</h3>
<p>اگر تنها از Selection و Crossover استفاده شود، احتمال دارد جمعیت به تدریج تنوع خود را از دست بدهد.</p>
<p><strong>Mutation</strong> برای ایجاد تغییرات تصادفی کوچک در کروموزوم‌ها استفاده می‌شود.</p>
<p>در کدگذاری باینری، Mutation می‌تواند یک بیت صفر را به یک یا برعکس تبدیل کند.</p>
<p>در کدگذاری حقیقی نیز می‌توان مقدار یکی از متغیرها را با یک تغییر تصادفی اصلاح کرد.</p>
<p>هدف Mutation حفظ تنوع ژنتیکی و کمک به الگوریتم برای جستجوی نواحی جدید فضای جواب است.</p>
<h3>تعادل Exploration و Exploitation</h3>
<p>یکی از موضوعات مهم در الگوریتم‌های بهینه‌سازی، ایجاد تعادل میان:</p>
<ul>
<li><strong>Exploration</strong>: جستجوی نواحی جدید</li>
<li><strong>Exploitation</strong>: بهبود جواب‌های خوب موجود</li>
</ul>
<p>است.</p>
<p>Selection و Elitism معمولاً الگوریتم را به سمت جواب‌های خوب هدایت می‌کنند، در حالی که Mutation و تنوع جمعیت کمک می‌کنند فضای بیشتری از جواب‌های ممکن بررسی شود.</p>
<p>تنظیم مناسب پارامترها برای ایجاد این تعادل اهمیت زیادی دارد.</p>
<h3>احتمال Crossover و Mutation</h3>
<p>دو پارامتر مهم GA عبارتند از:</p>
<ul>
<li>Crossover Probability</li>
<li>Mutation Probability</li>
</ul>
<p>اگر Mutation بسیار کم باشد ممکن است الگوریتم تنوع کافی نداشته باشد. اگر بیش از حد زیاد باشد، رفتار الگوریتم می‌تواند بیش از اندازه تصادفی شود.</p>
<p>همین موضوع درباره نرخ Crossover نیز وجود دارد.</p>
<p>در پروژه‌های عملی ممکن است لازم باشد چند مقدار مختلف برای این پارامترها آزمایش شود.</p>
<h3>شرط توقف الگوریتم</h3>
<p>الگوریتم ژنتیک نمی‌تواند برای همیشه اجرا شود و باید یک معیار برای پایان عملیات تعریف کنیم.</p>
<p>شرط توقف می‌تواند بر اساس یکی از موارد زیر باشد:</p>
<ul>
<li>رسیدن به تعداد مشخصی Generation</li>
<li>رسیدن Fitness به مقدار مورد نظر</li>
<li>عدم بهبود جواب طی چند نسل</li>
<li>رسیدن به محدودیت زمانی</li>
<li>رسیدن تغییرات Fitness به مقدار بسیار کم</li>
</ul>
<p>پس از تحقق شرط توقف، بهترین جواب موجود در جمعیت به عنوان جواب الگوریتم گزارش می‌شود.</p>
<h3>همگرایی زودرس</h3>
<p>یکی از مشکلات احتمالی الگوریتم ژنتیک، <strong>Premature Convergence</strong> است.</p>
<p>در این حالت اعضای جمعیت خیلی زود شبیه یکدیگر می‌شوند و الگوریتم در یک ناحیه از فضای جستجو متوقف می‌شود.</p>
<p>این مسئله می‌تواند باعث شود الگوریتم به یک جواب محلی برسد و جواب بهتر موجود در فضای جستجو را پیدا نکند.</p>
<p>تنظیم Mutation، اندازه Population و روش Selection در کاهش این مشکل اهمیت دارند.</p>
<h3>پیاده‌سازی الگوریتم ژنتیک در MATLAB</h3>
<p>تمرکز اصلی این دوره بر <strong>پیاده‌سازی عملی Genetic Algorithm در MATLAB</strong> است.</p>
<p>MATLAB محیط مناسبی برای پیاده‌سازی الگوریتم‌های بهینه‌سازی است، زیرا کار با بردارها، ماتریس‌ها، اعداد تصادفی، توابع و نمودارها در آن ساده است.</p>
<p>در یک پیاده‌سازی GA معمولاً بخش‌هایی برای موارد زیر نوشته می‌شوند:</p>
<ul>
<li>تعریف مسئله</li>
<li>تولید Population</li>
<li>محاسبه Cost</li>
<li>Selection</li>
<li>Crossover</li>
<li>Mutation</li>
<li>ذخیره بهترین جواب</li>
<li>رسم روند همگرایی</li>
</ul>
<p>درک این اجزا به کاربر اجازه می‌دهد الگوریتم را برای پروژه‌های متفاوت تغییر دهد.</p>
<h3>رسم نمودار همگرایی</h3>
<p>برای بررسی عملکرد GA معمولاً بهترین مقدار تابع هدف در هر نسل ذخیره می‌شود.</p>
<p>سپس می‌توان <strong>Convergence Curve</strong> را رسم کرد.</p>
<p>این نمودار نشان می‌دهد الگوریتم در طول نسل‌ها چگونه جواب مسئله را بهبود داده است.</p>
<p>با مشاهده نمودار همگرایی می‌توان درباره سرعت بهبود الگوریتم و نیاز احتمالی به تغییر پارامترها تصمیم‌گیری کرد.</p>
<h3>الگوریتم ژنتیک برای مسائل مهندسی</h3>
<p>Genetic Algorithm محدود به یک رشته خاص نیست و می‌توان آن را در بسیاری از مسائل مهندسی استفاده کرد.</p>
<p>نمونه‌هایی از کاربردهای آن عبارتند از:</p>
<ul>
<li>بهینه‌سازی طراحی</li>
<li>سیستم‌های قدرت</li>
<li>کنترل</li>
<li>مکان‌یابی</li>
<li>زمان‌بندی</li>
<li>مهندسی صنایع</li>
<li>انتخاب ویژگی</li>
<li>تنظیم پارامترهای مدل</li>
<li>طراحی شبکه عصبی</li>
<li>مدیریت انرژی</li>
<li>بهینه‌سازی سازه</li>
<li>مسائل اقتصادی</li>
</ul>
<p>نکته اصلی این است که مسئله باید به شکلی تعریف شود که متغیرهای تصمیم، تابع هدف و در صورت وجود قیود آن مشخص باشند.</p>
<h3>استفاده از GA در یادگیری ماشین</h3>
<p>الگوریتم ژنتیک می‌تواند در مسائل Machine Learning نیز استفاده شود.</p>
<p>برای مثال می‌توان از GA برای:</p>
<ul>
<li>Feature Selection</li>
<li>Hyperparameter Optimization</li>
<li>انتخاب ساختار مدل</li>
<li>تنظیم پارامترهای شبکه عصبی</li>
<li>انتخاب متغیرهای ورودی</li>
<li>کمینه کردن خطای مدل</li>
</ul>
<p>استفاده کرد.</p>
<p>در این حالت عملکرد مدل یادگیری ماشین می‌تواند در داخل تابع هدف محاسبه شود و GA به دنبال ترکیبی از پارامترها باشد که عملکرد بهتری ایجاد کند.</p>
<h3>این آموزش برای چه افرادی مناسب است؟</h3>
<p>این دوره برای افراد زیر می‌تواند مفید باشد:</p>
<ul>
<li>دانشجویان مهندسی برق</li>
<li>دانشجویان کامپیوتر و هوش مصنوعی</li>
<li>دانشجویان صنایع</li>
<li>دانشجویان مکانیک و عمران</li>
<li>پژوهشگران بهینه‌سازی</li>
<li>دانشجویان کارشناسی ارشد و دکتری</li>
<li>افرادی که در پایان‌نامه از GA استفاده می‌کنند</li>
<li>افرادی که قصد کدنویسی الگوریتم‌های تکاملی در MATLAB را دارند</li>
</ul>
<h3>پیش‌نیاز دوره</h3>
<p>پیش‌نیاز معرفی‌شده برای این محصول، آشنایی با مبانی <strong>بهینه‌سازی</strong> است.</p>
<p>قبل از پیاده‌سازی یک الگوریتم ژنتیک باید بتوانید متغیرهای تصمیم، تابع هدف، محدوده متغیرها و در صورت نیاز قیود مسئله را به درستی تعریف کنید.</p>
<p>همچنین آشنایی مقدماتی با MATLAB برای استفاده بهتر از بخش کدنویسی توصیه می‌شود.</p>
<h3>هدف این آموزش</h3>
<p>هدف این دوره آن است که مخاطب ابتدا اجزای اصلی Genetic Algorithm را به صورت مفهومی درک کرده و سپس نحوه تبدیل این اجزا به کد MATLAB را یاد بگیرد.</p>
<p>پس از مشاهده آموزش، کاربر باید دید روشن‌تری نسبت به Population، Chromosome، Fitness Function، Selection، Crossover، Mutation و Generation داشته باشد و بتواند ساختار الگوریتم را برای مسئله بهینه‌سازی خود توسعه دهد.</p>
<blockquote class="wp-embedded-content" data-secret="gXPX4nS9yd"><p><a href="https://iran-matlab.ir/product/%d9%81%db%8c%d9%84%d9%85-%d8%ac%d8%a7%d9%85%d8%b9-%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%d9%81%d8%a7%d8%b1%d8%b3%db%8c-%d8%a7%d9%84%da%af%d9%88%d8%b1%db%8c%d8%aa%d9%85-%da%98%d9%86%d8%aa%db%8c%da%a9-%d8%af/">فیلم جامع آموزش فارسی الگوریتم ژنتیک در متلب MATLAB</a></p></blockquote>
<p><iframe class="wp-embedded-content" sandbox="allow-scripts" security="restricted"  title="“فیلم جامع آموزش فارسی الگوریتم ژنتیک در متلب MATLAB” — ایران متلب" src="https://iran-matlab.ir/product/%d9%81%db%8c%d9%84%d9%85-%d8%ac%d8%a7%d9%85%d8%b9-%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%d9%81%d8%a7%d8%b1%d8%b3%db%8c-%d8%a7%d9%84%da%af%d9%88%d8%b1%db%8c%d8%aa%d9%85-%da%98%d9%86%d8%aa%db%8c%da%a9-%d8%af/embed/#?secret=tH3MtkLJOB#?secret=gXPX4nS9yd" data-secret="gXPX4nS9yd" width="600" height="338" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe></p>
<p>نوشته <a href="https://matlab1.ir/%d9%81%db%8c%d9%84%d9%85-%d8%ac%d8%a7%d9%85%d8%b9-%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%d9%81%d8%a7%d8%b1%d8%b3%db%8c-%d8%a7%d9%84%da%af%d9%88%d8%b1%db%8c%d8%aa%d9%85-%da%98%d9%86%d8%aa%db%8c%da%a9-%d8%af-2/">فیلم جامع آموزش فارسی الگوریتم ژنتیک در MATLAB</a> اولین بار در <a href="https://matlab1.ir">ايران متلب</a>. پدیدار شد.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://matlab1.ir/%d9%81%db%8c%d9%84%d9%85-%d8%ac%d8%a7%d9%85%d8%b9-%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%d9%81%d8%a7%d8%b1%d8%b3%db%8c-%d8%a7%d9%84%da%af%d9%88%d8%b1%db%8c%d8%aa%d9%85-%da%98%d9%86%d8%aa%db%8c%da%a9-%d8%af-2/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>روشهای مبتنی بر انتخاب ویژگی</title>
		<link>https://matlab1.ir/%d8%b1%d9%88%d8%b4%d9%87%d8%a7%db%8c-%d9%85%d8%a8%d8%aa%d9%86%db%8c-%d8%a8%d8%b1-%d8%a7%d9%86%d8%aa%d8%ae%d8%a7%d8%a8-%d9%88%db%8c%da%98%da%af%db%8c/</link>
					<comments>https://matlab1.ir/%d8%b1%d9%88%d8%b4%d9%87%d8%a7%db%8c-%d9%85%d8%a8%d8%aa%d9%86%db%8c-%d8%a8%d8%b1-%d8%a7%d9%86%d8%aa%d8%ae%d8%a7%d8%a8-%d9%88%db%8c%da%98%da%af%db%8c/#comments</comments>
		
		<dc:creator><![CDATA[ایران متلب]]></dc:creator>
		<pubDate>Fri, 09 Jan 2015 07:44:39 +0000</pubDate>
				<category><![CDATA[آموزش]]></category>
		<category><![CDATA[الگوریتم Focus]]></category>
		<category><![CDATA[الگوریتم Las Vegas]]></category>
		<category><![CDATA[انتخاب ویژگی]]></category>
		<category><![CDATA[Bi-Directional Search]]></category>
		<category><![CDATA[binary genetic algorithm]]></category>
		<category><![CDATA[feature selection]]></category>
		<category><![CDATA[SBS (Sequential Backward Selection)]]></category>
		<category><![CDATA[SBS-Slash]]></category>
		<category><![CDATA[Sequential Search]]></category>
		<category><![CDATA[SFS (Sequential Forward Selection)]]></category>
		<category><![CDATA[تابع ارزیابی]]></category>
		<category><![CDATA[تابع تولید کننده تصادفی]]></category>
		<category><![CDATA[حد آستانه­ای برای ناسازگاری]]></category>
		<category><![CDATA[زیرمجموعه ویژگی بهینه]]></category>
		<category><![CDATA[معیارهای مبتنی بر اطلاعات]]></category>
		<category><![CDATA[معیارهای مبتنی بر خطای طبقه ­بندی کننده]]></category>
		<category><![CDATA[معیارهای مبتنی بر سازگاری]]></category>
		<category><![CDATA[معیارهای مبتنی بر فاصله]]></category>
		<category><![CDATA[معیارهای مبتنی بر وابستگی]]></category>
		<category><![CDATA[یک مساله دو کلاسه]]></category>
		<guid isPermaLink="false">http://am19.siteground.biz/~matlab18/matlab1.ir/?p=1271</guid>

					<description><![CDATA[<p>روشهای مبتنی بر انتخاب ویژگی مساله انتخاب ویژگی، یکی از مسائلی است که در مبحث یادگیری ماشین و همچنین شناسائی آماری الگو مطرح است. این مساله در بسیاری از کاربردها (مانند طبقه [&#8230;]</p>
<p>نوشته <a href="https://matlab1.ir/%d8%b1%d9%88%d8%b4%d9%87%d8%a7%db%8c-%d9%85%d8%a8%d8%aa%d9%86%db%8c-%d8%a8%d8%b1-%d8%a7%d9%86%d8%aa%d8%ae%d8%a7%d8%a8-%d9%88%db%8c%da%98%da%af%db%8c/">روشهای مبتنی بر انتخاب ویژگی</a> اولین بار در <a href="https://matlab1.ir">ايران متلب</a>. پدیدار شد.</p>
]]></description>
										<content:encoded><![CDATA[<h1 dir="RTL" style="color: #000000;"><a name="_Toc36546275"></a><span lang="FA">روشهای مبتنی بر انتخاب ویژگی</span></h1>
<p>مساله انتخاب ویژگی، یکی از مسائلی است که در مبحث <a href="https://iran-matlab.ir/product/%d8%a8%d8%b3%d8%aa%d9%87-%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%d8%ac%d8%a7%d9%85%d8%b9-%db%8c%d8%a7%d8%af%da%af%db%8c%d8%b1%db%8c-%d9%85%d8%a7%d8%b4%db%8c%d9%86-machine-learning/" rel="noopener noreferrer" target="_blank">یادگیری ماشین</a> و همچنین شناسائی آماری الگو مطرح است. این مساله در بسیاری از کاربردها (مانند طبقه بندی) اهمیت به سزائی دارد، زیرا در این کاربردها تعداد زیادی ویژگی وجود دارد، که بسیاری از آنها یا بلا استفاده هستند و یا اینکه بار اطلاعاتی چندانی ندارند. حذف نکردن این ویژگی­ها مشکلی از لحاظ اطلاعاتی ایجاد نمی­کند ولی بار محاسباتی را برای کاربرد مورد نظر بالا می­برد. و علاوه بر این باعث می­شود که اطلاعات غیر مفید زیادی را به همراه داده­های مفید ذخیره کنیم. برای مساله انتخاب ویژگی، راه حل­ها و الگوریتم­های فراوانی ارائه شده است که بعضی از آنها قدمت سی یا چهل ساله دارند. مشکل بعضی از الگوریتم­ها در زمانی که ارائه شده بودند، بار محاسباتی زیاد آنها بود، اگر چه امروزه با ظهور کامپیوترهای سریع و منابع ذخیره سازی بزرگ این مشکل، به چشم نمی­آید ولی از طرف دیگر، مجموعه­های داده­ای بسیار بزرگ برای مسائل جدید باعث شده است که همچنان پیدا کردن یک الگوریتم سریع برای این کار مهم باشد. در این بخش ما در ابتدا تعاریفی که برای انتخاب ویژگی ارائه شده­اند و  همچنین، تعاریف مورد نیاز برای درک این مساله را ارائه می­دهیم. سپس روش­های مختلف برای این مساله را بر اساس نوع و ترتیب تولید زیرمجموعه ویژگی­های کاندید و همچنین نحوه ارزیابی این زیرمجموعه­ها دسته بندی می­کنیم. سپس تعدادی از روش­های معرفی شده در هر دسته را معرفی و بر اساس اهمیت، تا جائی که مقدور باشد، آنها را تشریح و الگوریتم برخی از آنها را ذکر می­کنیم. لازم به ذکر است که بدلیل اینکه مبحث انتخاب ویژگی به مبحث طبقه بندی بسیار نزدیک است، بعضی از مسائلی که در اینجا مطرح می­شود مربوط به مبحث طبقه بندی می­باشد. توضیحات ارائه شده برای الگوریتم­های مختلف در حد آشنائی است. شما می­توانید برای کسب اطلاعات بیشتر به منابع معرفی شده مراجعه کنید.</p>
<h2>تعاریف</h2>
<p>مساله انتخاب ویژگی بوسیله نویسندگان مختلف،  از دیدگاه­های متفاوتی مورد بررسی قرار گرفته است . هر نویسنده نیز با توجه به نوع کاربرد، تعریفی را از آن ارائه داده است. در ادامه چند مورد از این تعاریف را بیان می­کنیم[6]:</p>
<ol>
<li><strong>تعریف ایده­آل­:</strong> پیدا کردن یک زیرمجموعه با حداقل اندازه ممکن، برای ویژگی­ها است، که برای هدف مورد نظر اطلاعات لازم و کافی را در بر داشته باشد. بدیهی است که هدف تمام الگوریتم­ها و روش­های انتخاب ویژگی همین زیر مجموعه است.</li>
<li><strong>تعریف کلاسیک:</strong> انتخاب یک زیرمجموعه M عنصری از میان N ویژگی، به طوریکه M &lt; N باشد و همچنین مقدار یک تابع معيار (Criterion Function) برای زیرمجموعه مورد نظر، نسبت به سایر زیرمجموعه­های هم­اندازه دیگر بهینه باشد. این تعریفی است که Fukunaga  و Narenda در سال 1977 ارائه داده­اند.</li>
<li><strong>افزایش دقت پیشگوئی:</strong> هدف انتخاب ویژگی این است که یک زیرمجموعه از ویژگی­ها برای افزایش دقت پیشگوئی انتخاب شوند. به عبارت دیگر کاهش اندازه ساختار بدون کاهش قابل ملاحظه در دقت پیشگوئی طبقه­بندی کننده­ای که با استفاده از ویژگیهای داده شده بدست می­آید.</li>
<li><strong>تخمین توزیع کلاس اصلی:</strong> هدف از انتخاب ویژگی این است که یک زیرمجموعه کوچک از ویژگی­ها انتخاب شوند، توزیع ویژگی­هایی که انتخاب می­شوند، بایستی تا حد امکان به توزیع کلاس اصلی با توجه به تمام مقادیر ویژگی­های انتخاب شده نزدیک باشد.</li>
</ol>
<p>روش­های مختلف انتخاب ویژگی، تلاش می­کنند تا از میان <sup>N</sup>2 زیر مجموعه کاندید، بهترین زیرمجموعه را پیدا کنند. در تمام این روشها بر اساس کاربرد و نوع تعریف، زیر مجموعه­ای به عنوان جواب انتخاب می­شود، که  بتواند مقدار یک تابع ارزیابی را بهینه کند. با وجود اینکه هر روشی سعی می­کند که بتواند، بهترین ویژگی­ها را انتخاب کند، اما با توجه به وسعت جواب­های ممکن، و اینکه این مجموعه­های جواب بصورت توانی با N افزایش پیدا می­کنند، پیدا کردن جواب بهینه مشکل و در N های متوسط و بزرگ بسیار پر هزینه است. به طور کلی روش­های مختلف انتخاب ویژگی را بر اساس  نوع جستجو به دسته های مختلفی تقسیم بندی می­کنند. در بعضی روش­ها تمام فضای ممکن جستجو می­گردد. در سایر روش­ها که می­تواند مکاشفه­ای و یا جستجوی تصادفی باشد، در ازای از دست دادن مقداری از کارآئی، فضای جستجو کوچکتر می­شود. برای اینکه بتوانیم تقسیم بندی درستی از روش­های مختلف انتخاب ویژگی داشته باشیم، به این صورت عمل می­کنیم که فرآیند انتخاب ویژگی­ در تمامی روش­ها را به این بخش­ها تقسیم­ می­کنیم:</p>
<ol>
<li><strong>تابع تولید کننده </strong><strong>(</strong><strong>Generation procedure)</strong><strong>:</strong> این تابع زیر مجموعه­های کاندید را برای روش مورد نظر پیدا می­کند.</li>
<li><strong>تابع ارزیابي  </strong><strong>(Evaluation function)</strong><strong> :</strong> زیرمجموعه مورد نظر را بر اساس روش داده شده، ارزیابی و یک عدد به عنوان میزان خوبی روش باز می­گرداند. روش­های مختلف سعی در یافتن زیرمجموعه­ای دارند که این مقدار را بهینه کند.</li>
<li><strong>شرط خاتمه:</strong> برای تصمیم­گیری در مورد زمان توقف الگوریتم.</li>
<li><strong>تابع تعیین اعتبار </strong><strong>(Validation procedure)</strong><strong>:</strong> تصمیم می­گیرد که آیا زیر مجموعه انتخاب شده معتبر است یا خیر؟</li>
</ol>
<p><a href="https://matlab1.ir/wp-content/uploads/2015/01/image002.jpg"><img fetchpriority="high" decoding="async" class="aligncenter size-full wp-image-1273" src="https://matlab1.ir/wp-content/uploads/2015/01/image002.jpg" alt="image002" width="557" height="239" srcset="https://matlab1.ir/wp-content/uploads/2015/01/image002.jpg 557w, https://matlab1.ir/wp-content/uploads/2015/01/image002-300x128.jpg 300w, https://matlab1.ir/wp-content/uploads/2015/01/image002-530x227.jpg 530w" sizes="(max-width: 557px) 100vw, 557px" /></a></p>
<p>&nbsp;</p>
<p>ابع تولید کننده در واقع تابع جستجو است. این تابع زیرمجموعه­های مختلف را به ترتیب تولید می­کند، تا بوسیله تابع ارزیابی، مورد ارزیابی قرا بگیرد. تابع تولید کننده از یکی از حالت­های زیر شروع به کار می­کند:</p>
<p>1)     بدون ویژگی</p>
<p>2)     با مجموعه تمام ویژگی­ها</p>
<p>3)     با یک زیرمجموعه تصادفی</p>
<p>در حالت اول ویژگی­ها به ترتیب به مجموعه اضافه می­شوند و زیرمجموعه­های جدید را تولید می­کنند. این عمل آنقدر تکرار می­شود تا به زیر مجموعه مورد نظر برسیم. به اینگونه روش­ها، روشهای پائین به بالا می­گویند.</p>
<p>در حالت دوم از یک مجموعه شامل تمام ویژگی­ها، شروع می­کنیم و به مرور و در طی اجرای الگوریتم، ویژگی­ها را حذف می­کنیم، تا به زیرمجموعه دلخواه برسیم. روش­هایی که به این صورت عمل می­کنند، روشهای بالا به پائین نام دارند.</p>
<p>یک تابع ارزیابی، میزان خوب بودن یک زیرمجموعه تولید شده را بررسی کرده و یک مقدار به عنوان میزان خوب بودن زیرمجموعه مورد نظر بازمی­گرداند. این مقدار با بهترین زیرمجموعه قبلی مقایسه می­شود. اگر زیر مجموعه جدید، بهتر از زیرمجموعه­های قدیمی باشد، زیرمجموعه جدید به عنوان زیرمجموعه بهینه، جایگزین قبلی می­شود.</p>
<p>باید توجه داشت که بدون داشتن یک شرط خاتمه مناسب، فرآیند انتخاب ویژگی ممکن است، برای همیشه درون فضای جستجو، برای یافتن جواب سرگردان بماند. شرط خاتمه می­تواند بر پایه تابع تولید کننده باشد، مانند:</p>
<p>1)     هر زمان که تعداد مشخصی ویژگی انتخاب شدند.</p>
<p>2)     هر زمان که به تعداد مشخصی تکرار رسیدیم.</p>
<p>و یا اینکه بر اساس تابع ارزیابی انتخاب شود، مانند:</p>
<p>1)     وقتیکه اضافه یا حذف کردن ویژگی، زیرمجموعه بهتری را تولید نکند</p>
<p>2)     وقتیکه به یک زیرمجموعه بهینه بر اساس تابع ارزیابی برسیم.</p>
<p>تابع تعیین اعتبار جزئی از فرآیند انتخاب ویژگی نیست، اما در عمل بایستی یک زیرمجموعه ویژگی را در شرایط مختلف تست کنیم تا ببینیم که آیا شرایط مورد نیاز، برای حل مساله مورد نظر ما را دارد یا نه؟ برای اینکار می­توانیم از داده­های نمونه­برداری شده و یا مجموعه داده های شبیه سازی شده استفاده کنیم.</p>
<p>&nbsp;</p>
<h2>3-2- روش­های مختلف انتخاب ویژگی</h2>
<p>در این بخش ابتدا روش­های مختلف انتخاب ویژگی را بر اساس دو معیار تابع تولید کننده و تابع ارزیابی طبقه بندی می­کنیم. سپس آنها را بر اساس عملکرد دسته­بندی و نحوه اجرای هر دسته را به اختصار شرح می­دهیم.</p>
<h3>3-2-1- توابع تولید کننده</h3>
<p>اگر تعداد کل ویژگی­ها برابر N باشد، تعداد کل زیرمجموعه­های ممکن برابر 2<sup>N</sup> می­شود. این تعداد برای N های متوسط هم خیلی زیاد است. بر اساس نحوه جستجو در میان این تعداد زیر مجموعه، روشهای مختلف انتخاب ویژگی را می­توان به سه دسته زیر تقسیم­بندی نمود:</p>
<p>1)     جستجوی کامل</p>
<p>2)     جستجوی مکاشفه­ای</p>
<p>3)     جستجوی تصادفی</p>
<p>در ادامه به معرفی هر کدام از این دسته­ها می­پردازیم.</p>
<p>3-2-1-1-  جستجوی کامل</p>
<p>در روش­هایی که از این نوع جستجو استفاده می­کنند، تابع تولید کننده بر اساس تابع ارزیابی استفاده شده، تمام فضای جواب (زیرمجموعه­های ممکن) را برای یافتن جواب بهینه جستجو می­کند. البتهSchlimmer استدلال آورده است که[7]: &#8220;کامل بودن جستجو به این معنی نیست که جستجو باید جامع باشد&#8221;.</p>
<p>توابع مکاشفه­ای مختلف زیادی طراحی شده­اند، تا جستجو را بدون از دست دادن شانس پیدا کردن جواب بهینه، کاهش دهند. اما با توجه به بزرگی فضای جستجو، O(2<sup>N</sup>)، این روش­ها باعث می­شوند که فضای کمتری جستجو شود. روش­ها و تکنیک­های مختلفی برای اینکار استفاده شده اند، بعضی از آنها از تکنیک بازگشت به عقب (Backtracking) نیز در جریان کار استفاده کرده­اند، مانند: branch and bound، best first search و .beam search</p>
<p>3-2-1-2-  جستجوی مکاشفه ­ای</p>
<p>در روش­های با این نوع جستجو، در هر بار اجرای الگوریتم، یک ویژگی به مجموعه ویژگی انتخاب شده، اضافه و یا از آن حذف می­شود. به همین دلیل پیچیدگی زمانی آنها محدود و کمتر از O(N<sup>2</sup>) می­باشد. در اینگونه موارد، اجرای الگوریتم خیلی سریع می­باشد و پیاده سازی آنها نیز بسیار ساده است.</p>
<p>3-2-1-3-  جستجوی تصادفی</p>
<p>روش­هایی که از این نوع جستجو استفاده می­کنند، محدوده کمتری از فضای کل حالات را جستجو می­کنند، که اندازه این محدوده  به حداکثر تعداد تکرار الگوریتم بستگی دارد. در این روش­ها پیدا شدن جواب بهینه به اندازه منابع موجود و زمان اجرای الگوریتم بستگی دارد. در هر بار تکرار، تابع تولید کننده تعدادی از زیرمجموعه­های ممکن از فضای جستجو را به صورت تصادفی انتخاب می­کند و در اختیار تابع ارزیابی قرار می­دهد. تابع تولید کننده تصادفی پارامتر­هایی دارد که بایستی تنظیم شوند، تنظیم مناسب این پارامترها در سرعت رسیدن به جواب و پیدا شدن جواب­های بهتر موثر است.</p>
<p>&nbsp;</p>
<h3>3-2-2- تابع ارزیابی</h3>
<p>پیدا شدن یک زیرمجموعه بهینه از مجموعه ویژگی­ها، به صورت مستقیم با انتخاب تابع ارزیابی بستگی دارد. چرا که اگر تابع ارزیابی به زیرمجموعه ویژگی بهینه یک مقدار نامناسب نسبت دهد، این زیرمجموعه هیچگاه بعنوان زیرمجموعه بهینه انتخاب نمی­شود. مقادیری که توابع ارزیابی مختلف به یک زیرمجموعه می­دهند، با هم متفاوت است.</p>
<p>توابع ارزیابی را می­توان به طرق مختلفی دسته بندی کرد. در اینجا ما دسته بندی­ای که توسط Dash و Liu ارائه شده است [6] را بیان می­کنیم. آنها این معیارها را به پنج دست تقسیم کرده­اند:</p>
<ol>
<li><strong>معیارهای مبتنی بر فاصل</strong><strong>ه (</strong><strong>Distance Measures</strong><strong>)</strong>: در این معیارها، مثلاً برای یک مساله دو کلاسه، یک ویژگی یا یک مجموعه ویژگی مثل X بر یک ویژگی یا یک مجموعه ویژگی دیگر مثل Yارجحیت دارد، اگر که با آن مجموعه ویژگی مقادیر بزرگتری برای اختلاف بین احتمالات شرطی دو کلاس داشته باشیم. نمونه­ای از این معیارها همان معیار فاصله اقلیدسی می­باشد.</li>
<li><strong>معیارهای مبتنی بر اطلاعا</strong><strong>ت (</strong><strong>Information Measures</strong><strong>)</strong> : این معیارها میزان اطلاعاتی را که بوسیله یک ویژگی بدست می­آید را در نظر می­گیرند. ویژگی X در این روش­ها بر ویژگی Y اولویت دارد، اگر اطلاعات بدست آمده از ویژگی X بیشتر از اطلاعاتی باشد، که از ویژگی Y بدست می­آید. نمونه­ای از این معیارها همان معیار آنتروپی می­باشد.</li>
<li><strong>معیارهای مبتنی بر وابستگی</strong><strong> (</strong><strong>Dependence Measures</strong><strong>)</strong>: این معیارها که با عنوان معیارهای همبستگی (Correlation) نیز شناخته می­شوند، قابلیت پیشگوئی مقدار یک متغیر بوسیله یک متغیر دیگر را اندازه­گیری می­کنند. ضریب (Coefficient) یکی از معیارهای وابستگی کلاسیک است و می­توانیم آنرا برای یافتن همبستگی بین یک ویژگی و یک کلاس به کار ببریم. اگر همبستگی ویژگی X با کلاس C بیشتر از همبستگی ویژگی Y با کلاس C باشد، در اینصورت ویژگی X بر ویژگی Y برتری دارد. با یک تغییر کوچک، می­توانیم وابستگی یک ویژگی با ویژگی­های دیگر را اندازه­گیری کنیم. این مقدار درجه افزونگی این ویژگی را نشان می­دهد. همه توابع ارزیابی بر پایه معیار وابستگی را می­توانیم بین دو دسته معیارهای مبتنی بر فاصله و اطلاعات تقسیم کنیم. اما به خاطر اینکه این روش­ها از یک دید دیگر به مساله نگاه می­کنند، این کار را انجام نمی­دهیم.</li>
<li><strong>معیارهای مبتنی بر سازگاری</strong><strong> (</strong><strong>Consistency Measures</strong><strong>)</strong>: این معیارها جدیدتر هستند و اخیراً توجه بیشتری به آنها شده است. این معیارها خصوصیات متفاوتی نسبت به سایر معیارها دارند، زیرا که به شدت به داده­های آموزشی تکیه دارند و در انتخاب یک زیرمجموعه از ویژگی­ها تمایل دارند، که مجموعه ویژگی­های کوچکتری را انتخاب کنند. این روش­ها زیرمجموعه­های با کمترین اندازه را بر اساس از دست دادن یک مقدار قابل قبول سازگاری که توسط کاربر تعیین می­شود، پیدا می­کنند.</li>
<li><strong>معیارهای مبتنی بر خطای طبقه ­بندی کننده</strong><strong> (</strong><strong>Classifier Error Rate Measures</strong><strong>)</strong>: روش­هایی که این نوع از تابع ارزیابی را استفاده می­کنند، با عنوان &#8220;wrapper methods&#8221; شناخته می­شوند. دقت عملکرد در این روش­ها برای تعیین کلاسی که نمونه داده شده متعلق به آن است، برای نمونه­های دیده نشده بسیار بالا است، اما هزینه­های محاسباتی در آنها نیز نسبتاً زیاد است.</li>
</ol>
<p>در جدول زیر مقایسه­ای بین انواع مختلف تابع ارزیابی، صرف نظر از نوع تابع تولید کننده مورد استفاده، انجام شده است. پارامترهایی که برای مقایسه استفاده شده­اند به صورت زیر می­باشند:</p>
<ol>
<li><strong>عمومیت </strong><strong>(Generality)</strong>: اینکه بتوان زیرمجموعه انتخاب شده را برای طبقه­بندی کننده­های متفاوت به کار ببریم.</li>
<li><strong>پیچیدگی زمانی</strong>: زمان لازم برای پیدا کردن زیرمجموعه ویژگی­ جواب.</li>
<li><strong>دقت</strong>: دقت پیشگوئی با استفاده از زیرمجموعه انتخاب شده.</li>
</ol>
<p>علامت &#8220;&#8212;&#8221; که در ستون آخر آمده است، به این معنی است که در مورد میزان دقت حاصل نمی­توانیم مطلبی بگوئیم. بجز خطای طبقه­بندی کننده، دقت سایر توابع ارزیابی به مجموعه داده مورد استفاده و طبقه بندی کننده­ای که بعد از انتخاب ویژگی برای طبقه­بندی کلاس­ها استفاده می­شود، بستگی دارد.</p>
<p><a href="https://matlab1.ir/wp-content/uploads/2015/01/tabl1.jpg"><img decoding="async" class="aligncenter size-full wp-image-1276" src="https://matlab1.ir/wp-content/uploads/2015/01/tabl1.jpg" alt="tabl1" width="695" height="155" srcset="https://matlab1.ir/wp-content/uploads/2015/01/tabl1.jpg 695w, https://matlab1.ir/wp-content/uploads/2015/01/tabl1-300x66.jpg 300w, https://matlab1.ir/wp-content/uploads/2015/01/tabl1-530x118.jpg 530w" sizes="(max-width: 695px) 100vw, 695px" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h3>دسته بندی و تشریح الگوریتم های مختلف انتخاب ویژگی</h3>
<p>در این قسمت بر اساس تابع ارزیابی و تابع تولید کننده، روش­های مختلف انتخاب ویژگی را به چند دسته تقسیم بندی می­کنیم و سپس تعدادی از روش­ها را شرح داده و الگوریتم کار را به صورت شبه کد، ذکر می­کنیم.</p>
<p>قبل از اینکه بحث را ادامه دهیم، لازم است که متغیرهای به کار رفته در شبه کدها را معرفی کنیم. این متغیرها و شرح آنها به صورت زیر می­باشد:</p>
<ul>
<li><strong>D</strong><strong>: </strong>مجموعه آموزشی</li>
<li><strong>S</strong><strong>: </strong>مجموعه ویژگی اصلی (شامل تمام ویژگی­ها)</li>
<li><strong>N</strong><strong>: </strong>تعداد ویژگی­ها</li>
<li><strong>T</strong><strong>: </strong>زیرمجموعه ویژگی انتخاب شده</li>
<li><strong>M</strong><strong>: </strong>تعداد ویژگی­های انتخاب شده یا تعداد ویژگی­هایی که لازم است انتخاب شوند.</li>
</ul>
<p>&nbsp;</p>
<p>3-2-3-1-  تابع ارزیابی مبتنی بر فاصله &#8211; تابع تولید کننده مکاشفه ای</p>
<p>مهمترین روش در این گروه Relief [8] است. در اینجا ما ابتدا این روش را به عنوان نماینده این گروه شرح می­دهیم، سپس یک مرور مختصری بر سایر روش­ها خواهیم داشت.</p>
<p>روش Relief از یک راه حل آماری برای انتخاب ویژگی استفاده می­کند، همچنین یک روش مبتنی بر وزن است که از الگوریتم­های مبتنی بر نمونه الهام گرفته است. روش کار به این صورت است که از میان مجموعه نمونه­های آموزشی، یک زیرمجموعه نمونه انتخاب می­کنیم. کاربر بایستی تعداد نمونه­ها(NoSample) در این زیرمجموعه را مشخص کرده باشد. و آنرا به عنوان ورودی به الگوریتم ارائه دهد. الگوریتم به صورت تصادفی یک نمونه از این زیرمجموعه­ را انتخاب می­کند، سپس برای هر یک از ویژگیهای این نمونه، نزدیکترین برخورد (Nearest Hit) و نزدیکترین شکست (Nearest Miss) را بر اساس معیار اقلیدسی پیدا می­کند.</p>
<p>نزدیکترین برخورد نمونه­ای است که کمترین فاصله اقلیدسی را در میان سایر نمونه­های هم­کلاس با نمونه انتخاب شده دارد. نزدیکترین شکست نیز نمونه­ای است که کمترین فاصله اقلیدسی را در میان نمونه­هایی که هم­کلاس با نمونه انتخاب شده نیستند، دارد.</p>
<p>ایده اصلی در این الگوریتم این است که هر چه اختلاف بین اندازه یک ویژگی در نمونه انتخاب شده و نزدیکترین برخورد کمتر باشد، این ویژگی بهتر است و بعلاوه یک ویژگی خوب آن است که اختلاف بین اندازه آن ویژگی و نزدیکترین شکست وی بیشتر باشد. دلیل کار هم خیلی ساده است، ویژگی­هایی که به خوبی دو کلاس (یا یک کلاس از سایر کلاس­ها) را از هم تمییز می­دهند، برای نمونه­های متعلق به دو کلاس متفاوت مقادیری نزدیک به­هم نمی­دهند و یک فاصله معنی­داری بین مقادیری که به نمونه­های یک کلاس می­دهند و مقادیری که به سایر کلاس(ها) می­دهند وجود دارد.</p>
<p>الگوریتم پس از تعیین نزدیکترین برخورد و نزدیکترین شکست، وزن­های ویژگی­ها را به روزرسانی می­کند، این به­روز­رسانی به این صورت است که مربع اختلاف بین مقدار ویژگی مورد نظر در نمونه انتخاب شده و نمونه نزدیکترین برخورد از وزن ویژگی کم می­شود و در عوض مربع اختلاف بین مقدار ویژگی در نمونه انتخاب شده و نزدیکترین شکست به وزن ویژگی اضافه می­شود. هر چه مقدار این وزن بزرگتر باشد، ویژگی مورد نظر، بهتر می­تواند نمونه­های یک کلاس را از دیگران جدا کند.</p>
<p>بعد از تعیین فاصله برای تمام نمونه­های موجود در مجموعه نمونه­ها، الگوریتم ویژگی­هایی را که وزن آنها کمتر یا مساوی با یک حد آستانه­ای است، را حذف می­کند، و سایر ویژگی­ها بعنوان زیرمجموعه ویژگی جواب باز می­گردند. مقدار حد آستانه­ای توسط کاربر تعیین می­گردد، البته ممکن است که بصورت اتوماتیک بوسیکه یک تابعی از تعداد کل ویژگی­ها تعیین شود و یا اینکه با سعی و خطا تعیین گردد. همچنین می­توان ویژگی­هایی که وزن آنها منفی است را حذف کرد.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><strong>روش استفاده شده توسط </strong><strong>Koller</strong><strong> و </strong><strong>Sahami</strong><strong>­</strong></p>
<p>روش استفاده شده توسط Koller و Sahami­ که اخیراً ارائه شده است، بر این پایه استوار است که ویژگی­هایی که داده مفید چندانی را در بر ندارند و یا اصلاً داده مفیدی را در اختیار قرار نمی­دهند و می­توان آنها را با سایر ویژگی­ها نمایش داد، یا ویژگی­هایی که بی­ربط هستند و یا داده اضافی هستند، را شناسائی و حذف می­کنیم. برای پیاده سازی این مطلب، تلاش می­کنیم تا با پوشش مارکوف آنها را پیدا کنیم، به این صورت که یک زیرمجموعه مانند T، یک پوشش مارکوف برای ویژگی <em>f<sub>i</sub></em> است، اگر <em>f<sub>i</sub></em>  برای زیرمجموعه T بصورت مشروط هم از کلاس و هم از سایر ویژگی­هایی که در T نیستند، مستقل باشد[14].</p>
<p>&nbsp;</p>
<p>3-2-3-4-  تابع ارزیابی مبتنی بر اطلاعات &#8211; تابع تولید کننده کامل</p>
<p>مهمترین روشی که در این گروه می­توانیم پیدا کنیم، روش Minimum Description Length Method (MDLM) است[16]. نویسندگان این روش تلاش می­کنند تا همه ویژگی­های بدون استفاده (بی­ربط یا اضافی) را حذف نمایند، با این دید که اگر ویژگی­های زیرمجموعه V را بتوانیم بصورت یک تابع ثابتی مانند F که وابسته به کلاس نیست، بر اساس یک زیرمجموعه ویژگی دیگر مانند U بیان کنیم. در این صورت وقتی که مقادیر ویژگی­های زیرمجموعه U شناخته شده باشند، ویژگی­های موجود در زیرمجموعه V بدون استفاده هستند.</p>
<p>از دیدگاه انتخاب ویژگی، اجتماع دو زیرمجموعه U و V، مجموعه کامل، شامل تمام ویژگی­ها را تشکیل می­دهد. و کاری که ما باید در انتخاب ویژگی انجام دهیم این است که این دو زیرمجموعه را جدا کنیم. برای انجام این کار، نویسندگان MDLM، از معیار Minimum Description Length Criterion (MDLC) که بوسیله Rissanen ارائه شده است[17]، استفاده کرده­اند. آنها فرمولی را بدست آورده­اند، که شامل تعداد بیتهای لازم برای انتقال کلاسها، پارامترهای بهینه سازی، ویژگی­های مفید و ویژگی­های غیرمفید است. الگوریتم تمام زیرمجموعه­های ممکن (2N) جستجو می­کند و بعنوان خروجی زیرمجموعه­ای را بازمی­گرداند که معیار MDLC را ارضا کند. این روش می­تواند تمام ویژگی­های مفیدی را پیدا کند که دارای توزیع نرمال باشند. برای حالتهای غیر نرمال این روش قادر نیست، ویژگی­های مفید را پیدا کند. الگوریتم زیر روش کار و فرمول­های استفاده شده را نشان می­دهد.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>تابع ارزیابی مبتنی بر وابستگی &#8211; تابع تولید کننده مکاشفه ­ای</p>
<p>دو روش عمده در این گروه می­بینیم:</p>
<p><strong>3)    </strong><strong>Probability of Error &amp; Average Correlation Coefficient (POE1ACC)</strong></p>
<p>که خود شامل هفت روش است[18]، ما در اینجا روش هفتم را که به گفته نویسنده کاملتر است را بررسی می­کنیم.</p>
<p>در این روش اولین ویژگی به این صورت تعیین می­شود که احتمال خطا را برای تمام ویژگی­ها محاسبه می­کنیم، ویژگی با کمترین احتمال خطا (P<sub>e</sub>)، به عنوان اولین ویژگی انتخاب می­شود. ویژگی بعدی، آن ویژگی است که مجموع وزن­دار P<sub>e</sub> و میانگین ضریب همبستگی(ACC) با ویژگی(های) انتخاب شده را مینیمم کند.  سایر ویژگی­ها به همین ترتیب انتخاب می­شوند. میانگین ضریب همبستگی به اینصورت است که میانگین ضریب همبستگی ویژگی کاندید با ویژگی­های انتخاب شده در آن نقطه محاسبه می­شوند.</p>
<p>&nbsp;</p>
<p>این روش می­تواند تمام ویژگی­ها را بر اساس مجموع وزن­دار درجه­بندی کند. شرط خاتمه نیز در این روش تعداد ویژگی­های مورد نیاز خواهد بود.</p>
<p><strong>4)    </strong><strong>PreSet</strong></p>
<p>این روش از تئوری مجموعه­های ناهموار (Rough) استفاده می­کند. در اینجا یک کاهش (Reduct) پیدا می­کنیم. یک کاهش مانند R از یک مجموعه P به این معنی است که نمونه­ها بوسیله آن به خوبی مجموعه P طبقه بندی شوند. پس از پیدا کردن یک کاهش، تمام ویژگی­هایی که در مجموعه کاهش داده شده وجود ندارند، را از مجموعه ویژگی حذف می­کنیم. سپس ویژگی­ها را بر اساس اهمیت آنها درجه­بندی می­کنیم. اهمیت یک ویژگی بر این اساس بیان می­شود که یک ویژگی در جریان کلاس­بندی چقدر اهمیت دارد. این معیار بر پایه صفات وابستگی ویژگی تعیین می­گردد [19].</p>
<p>&nbsp;</p>
<p>3-2-3-6-  تابع ارزیابی مبتنی بر سازگاری &#8211; تابع تولید کننده کامل</p>
<p>روش­هایی که در این گروه قرار دارند، در سالهای اخیر ارائه شده­اند. ما به صورت مختصر سه روش این گروه را بررسی می­کنیم ولی بحث اصلی ما بر روی روش اول است.</p>
<p><strong>1)     </strong><strong>Focus</strong></p>
<p>این روش یک حداقل گرا است، به این معنی که سعی می­کند که حداقل تعداد ویژگی ممکن را برای ارائه پیدا کند. این روش فرضیه­های قابل تعریف را بررسی کرده و فرضیه­ای که بتواند سازگاری را با حداقل تعداد ویژگی ممکن برقرار کند را بعنوان جواب بازمی­گرداند.</p>
<p>در ساده­ترین پیاده سازی برای این روش، برای یافتن یک ناسازگاری با یک زیرمجموعه از ویژگی­های انتخاب شده، درخت جستجو را به صورت سطح به سطح (جستجو در پهنا)، پیمایش می­کنیم. در این جریان که از مجموعه­های کوچکتر شروع می­شود، در صورتی که به یک ناسازگاری برسیم، مجموعه انتخاب شده رد می­شود و جستجو با مجموعه بعدی ادامه می­یابد. به محض اینکه به یک مجموعه برسیم که ناسازگاری نداشته باشد، جستجو متوقف شده و مجموعه یاد شده به عنوان جواب انتخاب می­شود.</p>
<p>می­توان گفت که این روش به نویز حساس است و نمی­تواند نویز را مدیریت کند، زیرا در صورتی که نویز وجود داشته باشد، هیچ زیرمجموعه­ای را نمی­توان پیدا کرد که ناسازگاری نداشته باشد و الگوریتم تمام ویژگی­ها را به عنوان جواب بازمی­گرداند. با یک تغییر کوچک می­توانیم این مساله را حل کنیم، به اینصورت که اجازه می­دهیم یک میزان معینی از ناسازگاری در مجموعه انتخاب شده وجود داشته باشد.</p>
<p>&nbsp;</p>
<p>شکل 19- الگوریتم روش Focus</p>
<p><strong> </strong></p>
<p><strong>2)     </strong><strong>Schlimmer</strong></p>
<p>این روش از یک شمارش سیستماتیک برای تابع تولید کننده و  یک معیار ناسازگاری نیز به عنوان تابع ارزیابی استفاده می­کند. همچنین با استفاده از یک تابع مکاشفه­ای سرعت جستجو را برای یافتن زیرمجموعه بهینه افزایش می­دهد. این تابع مکاشفه­ای یک معیار قابلیت اعتماد است، بر پایه این ایده که احتمال مشاهده یک ناسازگاری مشاهده شود، نسبتی از درصد مقادیری است که زیاد مشاهده شده­اند[7].</p>
<p><strong>3)     </strong><strong>MIFES1</strong></p>
<p>این روش در انتخاب ویژگی شباهت زیادی به روش Focus دارد. در اینجا مجموعه نمونه­ها را به شکل یک ماتریس ارائه می­دهیم، هر عنصر نماینده یک ترکیب یکتا از یک نمونه منفی و یک نمونه مثبت است. یک ویژگی مانند <em>f</em>  یک پوشش برای یک نمونه از ماتریس نامیده می­شود، اگر برای نمونه­های منفی و نمونه­های مثبت، مقادیر عکسی داشته باشد. این روش از یک پوشش با همه ویژگی­ها شروع می­کند، و تکرار می­شود تا وقتی که هیچ کاهشی نتوانیم برای پوشش داشته باشیم. مشکل اساسی این روش اینست که فقط برای مسائل دو کلاسه و ویژگی­های منطقی قابل استفاده است. توضیحات کاملتر راجع به پوشش و نحوه اجرای الگوریتم را می­توانید در مرجع شماره [20] پیدا کنید.</p>
<p>&nbsp;</p>
<p>3-2-3-7- تابع ارزیابی مبتنی بر سازگاری &#8211; تابع تولید کننده تصادفی</p>
<p>نماینده این گروه که جدیدتر هستند، روش LVF است[21]. این روش فضای جستجو را بصورت تصادفی با استفاده از یک الگوریتم Las Vegas جستجو می­کند، که یکسری انتخاب­های احتمالی انجام می­دهد تا با استفاده از آنها سریعتر به جواب بهینه برسیم، همچنین از یک معیار سازگاری که با معیار استفاده شده در الگوریتم Focus متفاوت است.</p>
<p>این روش برای هر زیرمجموعه کاندید، تعداد ناسازگاری را محاسبه می­کند، که بر این ایده استوار است که کلاس محتمل­تر آن است که در میان نمونه­های این زیرمجموعه ویژگی­، تعداد بیشری متعلق به آن کلاس باشند. یک حد آستانه­ای برای ناسازگاری در نظر گرفته می­شود، که در ابتدا ثابت و بصورت پیش فرض صفر است و هر زیرمجموعه­ای که مقدار ناسازگاری آن بیشتر باشد، رد می­شود.</p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class="aligncenter" src="http://ce.aut.ac.ir/~shiry/lecture/machine-learning/tutorial/Dimensionality%20Reduction/ch3_files/image022.jpg" alt="" width="369" height="292" /></p>
<p>شکل 20- الگوریتم روش LVF</p>
<p>&nbsp;</p>
<p>این روش می­تواند هر زیرمجموعه بهینه را پیدا کند، حتی برای داده­های دارای نویز، به شرط آنکه سطح نویز درست را در ابتدا مشخص کنیم. یک مزیب این روش اینست که احتیاجی نیست که کاربر مدت زیادی را برای بدست آوردن یک زیرمجموعه بهینه منتظر بماند، زیرا الگوریتم هر زیرمجموعه­ای که بهتر از بهترین جواب قبلی باشد (هم از لحاظ اندازه زیرمجموعه انتخاب شده و هم از لحاظ نرخ سازگاری)، را به عنوان جواب باز­ می­گرداند.</p>
<p>این الگوریتم کارا است، زیرا تنها مجموعه­هایی برای ناسازگاری تست می­شوند، که تعداد ویژگی­های درون آن کمتر یا مساوی بهترین زیرمجموعه­ای است که تا کنون پیدا شده است. پیاده سازی­ آن آسان است و پیدا شدن زیرمجموعه بهینه را اگر منابع موجود اجازه دهند، تضمین می­کند. یکی از مشکلات این الگوریتم این است که برای پیدا کردن جواب بهینه زمان بیشتری نسبت به الگوریتم­هایی که از توابع تولید کننده مکاشفه­ای استفاده می­کنند، نیاز دارد، چون این الگوریتم از دانش مربوط به زیرمجموعه­های قبلی استفاده نمی­کند.</p>
<p>&nbsp;</p>
<p>3-2-3-8-  تابع ارزیابی مبتنی بر خطای طبقه ­بندی کننده- تابع تولید کننده مکاشفه­ ای</p>
<p>همانطور که قبلاً نیز اشاره کردیم، به مجموعه روش­هایی که از تابع ارزیابی مبتنی بر نرخ خطای طبقه­بندی کننده استفاده می­کنند، (بدون توجه به نوع تابع تولید کننده استفاده شده) روش­های wrapperمی­گویند. در این گروه روش­های مشهور زیر را می­توانیم ببینیم:</p>
<p><strong>1)     </strong><strong>SFS (Sequential Forward Selection)</strong></p>
<p>این روش، کارش را با یک مجموعه خالی شروع می­کند، سپس در هر تکرار یک ویژگی با استفاده از تابع ارزیابی مورد استفاده، به مجموعه جواب اضافه می­کند، این کار را تکرار می­کند تا زمانیکه تعداد ویژگی لازم انتخاب شود. مشکلی که این روش با آن روبروست، اینست که ویژگی اضافه شده در صورتیکه مناسب نباشد، از مجموعه جواب حذف نمی­شود[23].</p>
<p><strong>2)     </strong><strong>SBS (Sequential Backward Selection)</strong></p>
<p>این روش برعکس SFS کارش را با مجموعه­ای شامل تمام ویژگی­ها شروع می­کند و در هر بار تکرار الگوریتم، ویژگی که بوسیله تابع ارزیابی انتخاب می­شود، را از مجموعه مورد نظر حذف می­کند. این کار را تا زمانی ادامه­ می­دهد که تعداد ویژگی­ها برابر یک تعداد معینی شود. مانند روش قبل مشکل این روش اینست که ویژگی حذف شده را دیگر به مجموعه اضافه نمی­کند، حتی اگر مناسب باشد[23].</p>
<p>روش­های دیگری که در این گروه وجود دارند، نسخه­های متفاوتی از دو روش قبلی یا ترکیب آنها هستند.</p>
<p><strong>3)     </strong><strong>SBS-Slash</strong></p>
<p>این روش بر پایه این مشاهده است که هنگامی­ که تعداد زیادی ویژگی وجود دارد، بعضی از طبقه بندی کننده­ها (مانند ID3 یا C4.5) مکرراً تعداد زیادی از آنها را استفاده نمی­کنند. الگوریتم با یک مجموعه ویژگی کار خودش را شروع می­کند (مانند SBS)، اما بعد از یک مرحله تمام ویژگی­هایی را که در این مرحله یاد گرفته است و استفاده نشده­اند، را حذف (Slashes) می­کند[24].</p>
<p><strong>4)     </strong><strong>PQSS ((p,q) Sequential Search)</strong></p>
<p>در اینجا از بعضی از خواص بازگشت به عقب (Backtracking) استفاده می­کنیم. عملکرد الگوریتم به این صورت است که در هر مرحله p ویژگی به مجموعه اضافه و q ویژگی از آن حذف می­کند. حال اگر الگوریتم از مجموعه خالی شروع ­کرده باشد، بایستی اندازه p بزرگتر از اندازه q باشد. ولی اگر از مجموعه تمام ویژگی­ها شروع شده باشد، بایستی اندازه p کوچکتر از q باشد[25].</p>
<p><strong>5)     </strong><strong>BDS (Bi-Directional Search)</strong></p>
<p>مانند روش­های قبل است با این تفاوت که جستجو را از دو طرف انجام می­دهد[25].</p>
<p><strong>6)     </strong><strong>Schemata Search</strong></p>
<p>الگوریتم کارش را با مجموعه خالی و یا مجموعه تمام ویژگی­ها شروع می­کند و در هر تکرار، بهترین زیرمجموعه را با حذف یا اضافه تنها یک ویژگی به مجموعه ویژگی، پیدا می­کند. برای اینکه هر زیرمجموعه را ارزیابی کند، از تعیین اعتبار Leave-One-Out Cross Validation (LOOCV) استفاده می­کند. در هر تکرار زیرمجموعه­ای انتخاب می­شود که کمترین خطای LOOCV را داشته باشد. کار به اینصورت ادامه می­یابد تا هیچ تغییر با تک ویژگی نتواند باعث بهتر شدن زیرمجموعه شود[26].</p>
<p><strong>7)     </strong><strong>RC (Relevance in Context)</strong></p>
<p>در اینجا این واقعیت تشریح شده است که بعضی از ویژگی­ها فقط در قسمتی از فضای کار مربوط هستند. روش کار مشابه SBS است، اما با تغییرات عمده­ای که باعث محلی شدن آن شده است(انتخاب ویژگی­های مرتبط بر اساس تصمیم گیری بوسیله نمونه­ها­) [27].</p>
<p><strong>8)     </strong><strong>Queiros and Gelsema</strong></p>
<p>شبیه SFS است اما پیشنهاد می­کند که در هر تکرار، هر ویژگی در با تنظیمات متفاوتی بوسیله اثرات متفاوت ناشی از ویژگی­های قبلی ارزیابی شود[28]. دو نمونه از این تنظیمات به اینصورت هستند:</p>
<p>i)                   همیشه فرض کنیم که ویژگی­ها مستقل هستند (ویژگی­های قبلی را در نظر نمی­گیریم).</p>
<p>ii)                 هیچگاه فرض نمی­کنیم که ویژگی­ها مستقل هستند (ویژگی­های قبلی را در نظر می­گیریم).</p>
<p>در این روش و تعدادی از روش­های قبلی در این گروه از نرخ خطای بیز به عنوان خطای طبقه بندی کننده استفاده می­کنیم.</p>
<p>&nbsp;</p>
<p>3-2-3-9-  تابع ارزیابی مبتنی بر خطای طبقه­ بندی کننده &#8211; تابع تولید کننده کامل</p>
<p>در این گروه چهار روش وجود دارد، که دو روش اول آن بوسیله Ichino  و  Sklansky ارائه شده است.</p>
<p><strong>1)     </strong><strong>Linear Classifier</strong></p>
<p><strong>2)     </strong><strong>Box Classifier</strong></p>
<p>در دو روش فوق مساله انتخاب ویژگی بوسیله برنامه نویسی صفر و یک حل شده است[29,30,31].</p>
<p><strong>3)     </strong><strong>AMB&amp;B (Approximate monotonic branch and bound)</strong></p>
<p>این روش برای حل مشکلات B&amp;B ارائه شده است، به این صورت که به تابع ارزیابی اجازه داده می­شود که غیر یکنوا باشد[32]. در اینجا به تابع تولید کننده اجازه داده می­شود که زیرمجموعه­هایی تولید کند که محدودیت تعیین شده را نقض می­کنند، اما زیرمجموعه­ای که بعنوان جواب انتخاب می­شود، نباید محدودیت ذکر شده را نقض کرده باشد.</p>
<p><strong>4)     </strong><strong>BS (Beam Search)</strong></p>
<p>این روش یک نمونه از جستجوی Best-First، است که از صف محدود شده برای محدود کردن فضای جستجو استفاده می­کند. صف از بهترین به بدترین مرتب می­شود، در اینصورت، بهترین زیرمجموعه در ابتدای صف قرار داده می­شود. تابع تولید کننده به این صورت عمل می­کند که زیرمجموعه موجود در ابتدای صف را انتخاب و کلیه زیرمجموعه­های ممکن با اضافه کردن یک ویژگی به آن را تولید می­کند و آنها را در محل مناسبشان در صف قرار می­دهد. در صورتی که هیچ محدودیتی در اندازه صف نداشته باشیم، این روش یک جستجوی جامع است. در حالتی که محدودیت طول برابر یک را برای صف داشته باشیم، این روش با SFS برابر است.</p>
<p>&nbsp;</p>
<p>3-2-3-10-  تابع ارزیابی مبتنی بر خطای طبقه ­بندی کننده &#8211; تابع تولید کننده تصادفی</p>
<p>در این گروه پنج روش وجود دارد، که به شرح ذیل می­باشند.</p>
<p><strong>1)     </strong><strong>LVW</strong></p>
<p>این روش زیرمجموعه­هایی به صورت کاملاً تصادفی با استفاده از الگوریتم Las Vegas تولید می­کند[33].</p>
<p><strong>2)     </strong><strong>GA (Genetic Algorithm)</strong></p>
<p>در این روش یک جمعیت از زیرمجموعه­های کاندید تولید می­کنیم. در هر بار تکرار الگوریتم، با استفاده از عملگرهای جهش و بازترکیبی بر روی عناصر جمعیت قبلی، عناصر جدیدی تولید می­کنیم. با استفاده از یک تابع ارزیابی، میزان شایستگی عناصر جمعیت فعلی را مشخص کرده و عناصر بهتر را به عنوان جمعیت نسل بعد انتخاب می­کنیم. پیدا شدن بهترین جواب در این روش تضمین نمی­شود ولی همیشه یک جواب خوب به نسبت مدت زمانی که به الگوریتم اجازه اجرا داده باشیم، پیدا می­کند.</p>
<p><strong>3)     </strong><strong>SA (Simulated Annealing)</strong></p>
<p>در اینجا نیز مانند الگوریتم ژنتیک، تابع تولید کننده آن از تولید تصادفی استفاده می­کند ولی در تولید تصادفی از یک جریان خاصی پیروی می­کند.</p>
<p><strong>4)     </strong><strong>RGSS (Random Generation plus Sequential Selection)</strong></p>
<p>این روش مشابه SBS و SFS است با این تفاوت که یک زیرمجموعه تصادفی تولید می­کند و سپس SBS و  SFS را با استفاده از این زیرمجموعه تولید شده اجرا می­کند. در واقع فاکتور تصادف را به دو روش ذکر شده تزریق می­کند، تا کارآئی آنها را افزایش دهد.</p>
<p><strong>5)     </strong><strong>RMHC-PF1 (Random Mutation Hill Climbing-Prototype and Feature selection)</strong></p>
<p>نمونه­های اولیه (Prototype) و ویژگی­ها در اینجا همزمان برای استفاده در طبقه بندی کننده نزدیکترین همسایه انتخاب می­شوند، همچنین برای ثبت نمونه­های اولیه و ویژگی­ها از یک بردار شرطی استفاده می­شود. تابع ارزیابی نیز، نرخ خطای طبقه­بندی کننده نزدیکترین همسایه می­باشد. در هر تکرار، بصورت تصادفی یکی از بیتهای بردار جهش داده می­شوند، تا یک بردار جدید برای تکرار بعدی تولید شود.</p>
<p>تمام روش­های این گروه پارامتر­های زیادی دارند که بایستی تنظیم شود، مثلاً LVW حد آستانه­ای برای نرخ ناسازگاری، در الگوریتم­های ژنتیک اندازه جمعیت اولیه، نرخ بازترکیبی و نرخ جهش و یا در SA، تعداد تکرار حلقه، دمای اولیه و احتمال جهش. تنظیم دقیق این پارامترها عملکرد این الگوریتم­ها را بهبود می­بخشد.</p>
<p>&nbsp;</p>
<h3>3-2-4- جمع بندی روشهای انتخاب ویژگی</h3>
<p>برای اینکه یک جمع­بندی از کلیه روش­های انتخاب ویژگی داشته باشیم، نمودار آنها را برحسب سه نوع تابع تولید کننده در شکل زیر نشان داده­ایم[6].</p>
<p>&nbsp;</p>
<p>شکل 21- طبقه بندی روش­های مختلف انتخاب ویژگی</p>
<p><img loading="lazy" decoding="async" src="http://ce.aut.ac.ir/~shiry/lecture/machine-learning/tutorial/Dimensionality%20Reduction/ch3_files/image024.jpg" alt="" width="610" height="267" /></p>
<p>نوشته <a href="https://matlab1.ir/%d8%b1%d9%88%d8%b4%d9%87%d8%a7%db%8c-%d9%85%d8%a8%d8%aa%d9%86%db%8c-%d8%a8%d8%b1-%d8%a7%d9%86%d8%aa%d8%ae%d8%a7%d8%a8-%d9%88%db%8c%da%98%da%af%db%8c/">روشهای مبتنی بر انتخاب ویژگی</a> اولین بار در <a href="https://matlab1.ir">ايران متلب</a>. پدیدار شد.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://matlab1.ir/%d8%b1%d9%88%d8%b4%d9%87%d8%a7%db%8c-%d9%85%d8%a8%d8%aa%d9%86%db%8c-%d8%a8%d8%b1-%d8%a7%d9%86%d8%aa%d8%ae%d8%a7%d8%a8-%d9%88%db%8c%da%98%da%af%db%8c/feed/</wfw:commentRss>
			<slash:comments>8</slash:comments>
		
		
			</item>
	</channel>
</rss>
