<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های امیرحسین باقری</title>
        <link>https://virgool.io/feed/@chap.manelee</link>
        <description></description>
        <language>fa</language>
        <pubDate>2026-04-15 02:35:37</pubDate>
        <image>
            <url>https://static.virgool.io/images/default-avatar.jpg</url>
            <title>امیرحسین باقری</title>
            <link>https://virgool.io/@chap.manelee</link>
        </image>

                    <item>
                <title>B-U,V-O</title>
                <link>https://virgool.io/@chap.manelee/b-uv-o-o8irptjdacat</link>
                <description>1. بایاس:خطای کلی مرتبط با &quot;آموزش داده ها&quot; به عنوان بایاس اصطلاحاً عنوان می شود. هنگامی که آموزش خطای داده افزایش می یابد، یا دقت آموزش داده ها کاهش می یابد، به آن بایاس بالا گفته می شود و هنگامی که خطای داده آموزش کاهش می یابد یا دقت  آموزش داده ها افزایش می یابد، به آن بایاس پایین گفته می شودبایاس بالا: خطا بالای آموزش داده ها / دقت کم آموزش داده ها.بایاس پایین: خطای کم آموزش داده ها /دقت بالا آموزش داده ها.2. واریانس:توجه داشته باشید که واریانس با &quot;تست داده ها&quot; همراه است در حالی که بایاس با &quot;آموزش داده ها&quot; همراه است. خطای کلی مرتبط با داده های تست یک واریانس نام دارد. هنگامی که خطاهای مرتبط با تست داده ها افزایش می یابد ، آن را به عنوان واریانس بالا ، و بالعکس برای واریانس کم گفته می شود.واریانس بالا:خطای داده های تست بالا / دقت داده های تست پایین.واریانس کم: خطا داده های کم تست  / دقت داده ها بالا تست .پرونده دانش آموزی به نام &#x27;علی&#x27; را که برای آزمون ورودی پزشکی تحصیل می کند در نظر بگیرید. علی در یک برنامه تقویتی ثبت نام می کند تا به هدف خود از پذیرفته شدن در یکی از کد رشته های پزشکی دست یابد. علی دو سال است به این کلاس میرود. در این کلاس علی برای ارزیابی آمادگی خود در امتحانات شبیه سازی کنکور متعدد شرکت خواهد کرد. این &#x27;داده های آموزشی&#x27; برای علی است. در نهایت، پس از دو سال مطالعه، علی کنکور خواهد داد ، که به عنوان &#x27;داده های تست علی&#x27; خواهد بود. از آنجا که  دقت خروجی علی را ارزیابی میکند.فرض کنید که در هنگام شرکت در امتحانات تمرینی، علی فوق العاده خوب عمل می کند. به عنوان داشتن بایاس پایین در نظر گرفته می شود. از آنجا که دقت آموزش بالا است و خطای آموزشی کم است. اگر علی در این تست های تمرین بد عمل کند در نظر گرفته می شود که بایاس بالایی داشته باشد.خوب واریانس مربوط به داده های تست است. کنکور به عنوان داده های تست برای علی عمل می کند. علی یا عصبی خواهد بود یا با اعتماد به نفس (بسته به آموزش) بعد از 2 سال آماده سازی فشرده ظاهر می شود که گفته می شود علی در این آزمایش صدک بالایی به دست اورده است. این یعنی واریانس کم است.  اگر علی در کنکور بدبختانه شکست بخورد از آنجا که دقت تست بالا است و خطای تست کم است این واریانس بالا است.</description>
                <category>امیرحسین باقری</category>
                <author>امیرحسین باقری</author>
                <pubDate>Fri, 14 Jan 2022 21:03:12 +0330</pubDate>
            </item>
                    <item>
                <title>الگوریتم درخت تصمیم بیزی قابل تفسیر</title>
                <link>https://virgool.io/@chap.manelee/%D8%A7%D9%84%DA%AF%D9%88%D8%B1%DB%8C%D8%AA%D9%85-%D8%AF%D8%B1%D8%AE%D8%AA-%D8%AA%D8%B5%D9%85%DB%8C%D9%85-%D8%A8%DB%8C%D8%B2%DB%8C-%D9%82%D8%A7%D8%A8%D9%84-%D8%AA%D9%81%D8%B3%DB%8C%D8%B1-g3kok9qqssbe</link>
                <description>درختان تصمیم بیزی به دلیل تفسیر احتمالی خود شناخته شده اند با این حال، ساخت آنها گاهی اوقات می تواند پرهزینه باشد. در این مقاله ما یک الگوریتم کلی درخت تصمیم بیزی ارائه می کنیم که برای مسائل رگرسیون و طبقه بندی قابل استفاده است.این الگوریتم، الگوریتم Monte Carloرا اعمال نمی کند و نیازی به مرحله هرس ندارد. در حالی که امکان ساخت فضای درخت احتمال وزنی وجود دارد، متوجه هستیم که یک درخت خاص، greedy-modal tree (GMT)، بیشتر اطلاعات موجود در مثال‌های عددی را توضیح می‌دهد.این رویکرد مشابه جنگل‌های تصادفی در مجموعه داده‌ها با معیار مختلف عمل می‌کند. به ویژه، درخت بیزی با استفاده از یک درخت منفرد (نسبتا کم عمق) به دقت مشابهی دست می یابد، که امکان یک تکنیک کاملاً قابل توضیح را فراهم می کند که اغلب پیش نیازی برای کاربردهای مالی یا صنعت پزشکی است.درخت‌های تصمیم، از تکنیک‌های یادگیری ماشینی محبوبی هستند که برای کارهای طبقه‌بندی و رگرسیون به کار می‌روند. این تکنیک با مدل نتیجه مشخص می شود که به عنوان یک ساختار درختی کدگذاری می شود.به درختان تصمیم جعبه سفید گفته می شود چون همه گره های یک درخت را می توان مشاهده و درک کرد، علاوه بر این، ساختار درختی می‌تواند خروجی را با محاسبات بسیار کمتری نسبت به سایر تکنیک‌های یادگیری ماشینی پیچیده‌تر بازگرداند.در این مقاله، به طور صریح کل فرآیند تولید درخت را مدل‌سازی می‌کنیم، در حالی که تنها امتیاز احتمالی پارتیشن‌های ممکن را ارائه می‌کنیم. این به ما امکان می دهد به جای تکیه بر یک الگوریتم اکتشافی، جنبه هرس را به صورت احتمالی مشاهده کنیم.نمای کلی درختان بیزیما   D = {(x i , y i )}به عنوان مجموعه داده ای از n که مشاهدات مستقل هستند معرفی میکنیم.x = (x 1 , ..., x d )  در فضای  Rdویژگی های هر یک از مشاهدات را توضیح می دهد که y به صورت تصادفی از Yx انتخاب می شود.توزیع Y x نوع مسئله ای را که ما حل می کنیم تعیین می کند: یک متغیر تصادفی گسسته به یک مسئله طبقه بندی تبدیل می شود در حالی که یک متغیر تصادفی پیوسته به یک مسئله رگرسیونی تبدیل می شود. تابع بتا به ویژه برای محاسبه احتمال نمونه های طبقه بندی در این مقاله مفید خواهد بودمجموعه داده D از یک فرآیند تولید داده نمونه برداری می شود. ما این فرآیند را به دو مرحله تقسیم می کنیم: اول، یک نقطه x در Rd نمونه برداری می شود. دوم، نتیجه Yx با توجه به x نمونه برداری می شود. در این مقاله ما هیچ دانش قبلی از تولید مکان های x را در نظر نمی گیریم. از این رو، ما بر روی توزیع Yx تمرکز خواهیم کرد.فرض می شود که این توزیع شرطی در زیر یک ساختار درختی کدگذاری شده است ایجاد شده به دنبال مجموعه ای از قوانین بازگشتی ساده بر اساس {xi}ni=1، یعنی فرآیند تولید درخت: با شروع از ریشه، تعیین می کنیم که آیا این کار را می کنیم گره فعلی را با دو برگ تحت یک احتمال از پیش تعریف شده گسترش دهیدبا توجه به فرآیند بالا، واضح است که بلوک ساختمانی درختان تصمیم بیزی در نظر گرفتن پارتیشن‌هایی از Rd است که نتایج را تحت یک رویکرد احتمالی بهتر توضیح می‌دهند. همه نقاط در یک مجموعه از یک پارتیشن Π توزیع نتیجه یکسانی دارند، یعنی Y به x بستگی ندارد. بنابراین، با فرض یک پیش از پارامترهای توزیع Y، می‌توانیم احتمال هر مجموعه را در یک پارتیشن به دست آوریم. از آنجایی که همه مشاهدات مستقل فرض می شوند، احتمال تقسیم کل L(D|Π) با ضرب احتمالات هر مجموعه به دست می آید.درختان نمودارهای غیر چرخه ای جهت دار هستند که از گره هایی با یک ریشه واحد و حرکت بعدی تشکیل شده اند هر دو گره متصل توسط یک مسیر منحصر به فرد به هم متصل می شوند. طبق طبقه بندی ما گره ها به صورت برگ یا جوانه هستند. در حالی که برگها شامل گره های پایانی هستند اطلاعات مدل، جوانه ها به گره های فرزند اضافی اشاره می کنند. اگر شماره از گره های فرزند همیشه دو است، ما درخت را یک درخت باینری می نامیم. هر جوانه حاوی سوال یا قاعده ای که پاسخ آن به یکی از فرزندانش می انجامد. شروع از ریشه که تنها گره بدون والد است، مسیر درخت را دنبال می کنیم تا به یک برگ می رسیم.روش GMT پیشنهادی یک درخت تصمیم بیزی است که زمان آموزش را کاهش می دهد با اجتناب از هر گونه نمونه برداری از زنجیره مارکوف مونت کارلو یا مرحله هرس. نتایج مثال عددی GMT ​​دارای قدرت پیش بینی مشابه RF هستند. این رویکرد ممکن است در جایی مفید باشد که توانایی توضیح مدل a نیاز به این دلیل که قابلیت تفسیری مشابه DT را دارد اما عملکردی دارد مشابه RF از این رو، مزایای GMT ​​این است که می تواند به راحتی انجام شود قابل درک است و برای آموزش زمان کمتری نسبت به RF نیاز دارد. علاوه بر این، توانایی تعیین یک احتمال قبلی ممکن است به ویژه برای برخی از مسائل مناسب باشد و راه کارآمدتری برای کشف درختان معنی دار و بهبود کارایی است.</description>
                <category>امیرحسین باقری</category>
                <author>امیرحسین باقری</author>
                <pubDate>Fri, 07 Jan 2022 11:44:50 +0330</pubDate>
            </item>
                    <item>
                <title>اعتبار سنجی متقابل در یادگیری ماشینی: چگونه آن را به درستی انجام دهیم؟</title>
                <link>https://virgool.io/@chap.manelee/%D8%A7%D8%B9%D8%AA%D8%A8%D8%A7%D8%B1-%D8%B3%D9%86%D8%AC%DB%8C-%D9%85%D8%AA%D9%82%D8%A7%D8%A8%D9%84-%D8%AF%D8%B1-%DB%8C%D8%A7%D8%AF%DA%AF%DB%8C%D8%B1%DB%8C-%D9%85%D8%A7%D8%B4%DB%8C%D9%86%DB%8C-%DA%86%DA%AF%D9%88%D9%86%D9%87-%D8%A2%D9%86-%D8%B1%D8%A7-%D8%A8%D9%87-%D8%AF%D8%B1%D8%B3%D8%AA%DB%8C-%D8%A7%D9%86%D8%AC%D8%A7%D9%85-%D8%AF%D9%87%DB%8C%D9%85-tq3kkm49pgps</link>
                <description>در یادگیری ماشینی (ML)، تعمیم معمولاً به توانایی یک الگوریتم برای مؤثر بودن در ورودی های مختلف اشاره دارد. یعنی مدل ML با کاهش عملکرد در ورودی های جدید از توزیع یکسان داده های آموزشی مواجه نمی شود.برای انسان تعمیم به طور طبیعی و فطی انجام میشود. ما می توانیم به سرعت طبقه بندی را انجام دهیم. به عنوان مثال، ما قطعاً یک سگ را می شناسیم حتی اگر قبلاً این نژاد را ندیده باشیم. اما  برای یک مدل MLکاملاً یک چالش می باشد. به همین دلیل است که بررسی توانایی الگوریتم برای تعمیم، یک کار مهم است که در ساخت مدل نیاز به توجه زیادی دارد.برای این کار از Cross-Validation (CV) استفاده می کنیم.در این مقاله به موارد زیر خواهیم پرداخت:Cross-Validation چیست:تعریف، هدف استفاده و تکنیک‌های مختلف CV شامل:Hold-hold-outk-foldsLeave-one-outLeave-p-outStratified k-foldsRepeatedنحوه استفاده از این تکنیک ها: sklearnاعتبار سنجی متقابل در یادگیری ماشینی: sklearn، CatBoostاعتبار سنجی متقابل در یادگیری عمیق: Keras، PyTorch، MxNetبهترین شیوه ها و نکات: سری های زمانی، داده های پزشکی و مالی و تصاویراعتبارسنجی متقابل چیست؟اعتبار سنجی متقابل تکنیکی برای ارزیابی یک مدل یادگیری ماشین و آزمایش عملکرد آن است. CVمعمولاً در کارهای کاربردی ML استفاده می شود. و به مقایسه و انتخاب یک مدل مناسب برای مسئله مدل‌سازی پیش‌بینی‌کننده خاص کمک می‌کند.درک و پیاده سازی CV آسان است و تمایل به بایاس کمتری نسبت به سایر روش‌های مورد استفاده برای شمارش امتیازهای کارایی مدل دارد. همه اینها اعتبارسنجی متقابل را به ابزاری قدرتمند برای انتخاب بهترین مدل برای کارهای خاص تبدیل می کند.تکنیک های مختلفی وجود دارد که ممکن است برای اعتبارسنجی متقابل یک مدل استفاده شود. با این حال، همه آنها یک الگوریتم مشابه دارند:1- مجموعه داده را به دو بخش تقسیم کنید: یکی برای آموزش، دیگری برای آزمایش.2- مدل را روی مجموعه آموزشی, آموزش دهید.3- اعتبار مدل را در مجموعه آزمایشی تأیید کنید.مراحل 1 تا 3 را چند بار تکرار کنید. تعداد تکرار به روش CV که استفاده می کنید بستگی دارد.همانطور که می دانید، تکنیک های CV زیادی وجود دارد. برخی از آنها به طور معمول استفاده می شوند، برخی دیگر فقط در تئوری کار می کنندروش های اعتبارسنجی متقابلی که در این مقاله پوشش داده خواهد شد:Hold-out.K-folds.Leave-one-out.Leave-p-out.Stratified K-folds.Repeated K-folds.Nested K-folds.Complete.Hold-outاعتبار سنجی متقابل Hold-out ساده ترین و رایج ترین تکنیک است. خیلی از مواقع از این روش استفاده میکنیم اما شاید ندانیم که این یک روش Hold-outاست.الگوریتم تکنیک Hold-out1- مجموعه داده را به دو بخش تقسیم کنید: مجموعه آموزشی و مجموعه تست. معمولاً 80 درصد مجموعه داده به مجموعه آموزشی و 20 درصد به مجموعه تست می‌رود، اما می‌توانید تقسیم‌بندی که مناسب‌تر است را انتخاب کنید.2- مدل را روی مجموعه آموزشی آموزش دهید.3- در مجموعه تست اعتبار سنجی کنید.4- نتیجه اعتبارسنجی را ذخیره کنید.ما معمولاً از روش Hold-out در مجموعه داده‌های بزرگ استفاده می‌کنیم، زیرا فقط یک بار نیاز به آموزش مدل دارد.اجرای روش Hold-outواقعاً آسان است. برای مثال، می‌توانید این کار را با استفاده از sklearn.model_selection.train_test_split انجام دهید.با این حال، Hold-outیک نقطه ضعف بزرگ دارد.به عنوان مثال، مجموعه داده ای که از نظر توزیع کاملاً یکنواخت نیست، ممکن است پس از تقسیم در یک نقطه ناهموار قرار بگیرید. به عنوان مثال، اگر مجموعه آموزشی نشان دهنده مجموعه تست نباشد هر دو مجموعه آموزشی و تست ممکن است بسیار متفاوت باشند، یکی از آنها ممکن است آسان تر یا سخت تر باشد.علاوه بر این، این واقعیت که ما مدل خود را فقط یک بار آزمایش می کنیم ممکن است یک گلوگاه برای این روش باشد. با توجه به دلایلی که قبلا ذکر شد، نتیجه به دست آمده با تکنیک Hold-outممکن است نادرست در نظر گرفته شود.روش k-FoldK-Fold CV تکنیکی است که معایب روش Hold-out را به حداقل می رساند. k-Foldروش جدیدی را برای تقسیم مجموعه داده معرفی می کند که به غلبه بر &quot;تست فقط یک بار گلوگاه&quot; کمک می کند.الگوریتم تکنیک k-Fold1- تعداد kدسته را انتخاب کنید. معمولاً 5 یا 10 است، می‌توانید هر عددی را انتخاب کنید که کمتر از طول مجموعه داده باشد.2- مجموعه داده را به k قسمت مساوی (در صورت امکان) تقسیم کنید (به آنها folds گفته می شود).3- k – 1 folds را انتخاب کنید که مجموعه آموزشی خواهد بود. fold باقیمانده مجموعه تست خواهد بود.4- مدل را روی مجموعه آموزشی آموزش دهید. در هر تکرار از اعتبارسنجی متقابل، باید یک مدل جدید مستقل از مدل آموزش داده شده در تکرار قبلی آموزش دهید.5- در مجموعه تست اعتبار سنجی کنید.6- نتیجه اعتبارسنجی را ذخیره کنید.7- مراحل 3 تا 6 را k بار تکرار کنید. هر بار از foldباقی مانده به عنوان مجموعه تست استفاده کنید. در پایان، شما باید مدل را روی هر fold که دارید اعتبارسنجی کرده باشید.8- برای به دست آوردن امتیاز نهایی، نتایجی که در مرحله 6 به دست آوردید را میانگین گیری نمایید.برای انجام اعتبارسنجی متقابل k-Fold می توانید از sklearn.model_selection.KFoldاستفاده کنید.به طور کلی همیشه بهتر است به جایHold-out از تکنیک k-Fold استفاده کنید. از آنجایی که آموزش و تست بر روی چندین بخش مختلف مجموعه داده انجام می شود، به صورت مو به مو، مقایسه k-Fold نتیجه پایدارتر و قابل اعتمادتری به دست می دهد. اگر تعداد fold ها را برای تست مدل بر روی بسیاری از زیر مجموعه‌های مختلف افزایش دهیم، می‌توانیم امتیاز کلی را قوی‌تر کنیم.با این حال، روش k-Fold یک نقطه ضعف دارد. افزایش k منجر به آموزش مدل های بیشتر می شود و فرآیند آموزش ممکن است واقعاً گران و زمان بر باشد.روش Leave-one-outاعتبار سنجی متقابل(LOOCV) یک مورد شدید از K-Fold CV است. تصور کنید که k  برابر با n باشد که n تعداد نمونه های مجموعه داده است. چنین مورد k-Fold معادل تکنیک Leave-one-out  است.الگوریتم تکنیکLOOCV1- یک نمونه از مجموعه داده را انتخاب کنید که مجموعه آزمایشی خواهد بود.2- n – 1 نمونه باقیمانده مجموعه آموزشی خواهد بود.3- مدل را روی مجموعه آموزشی آموزش دهید. در هر تکرار، یک مدل جدید باید آموزش داده شود.4- در مجموعه تست اعتبار سنجی کنید.5- نتیجه اعتبارسنجی را ذخیره کنید.مراحل 1 تا 5 را n بار تکرار کنید، همانطور که برای nنمونه، n مجموعه آموزشی و تست متفاوت داریم.برای به دست آوردن امتیاز نهایی، نتایجی را که در مرحله 5 به دست آوردید، میانگین گیری نمایید.روش استفاده از این تکنیک در sklearn به روش زیر می باشد.بزرگترین مزیت اعتبارسنجی متقابل Leave-one-out این است که داده های زیادی را هدر نمی دهد. ما فقط از یک نمونه از کل مجموعه داده به عنوان یک مجموعه آزمایشی استفاده می کنیم، در حالی که بقیه مجموعه تست است. اما وقتی با k-Fold CV مقایسه می‌شود، LOOCV نیاز به ساخت n مدل به جای k مدل دارد، در نظر داشته باشید که nمخفف تعداد نمونه‌های مجموعه داده است و بسیار بیشتر از kاست. این بدان معناست که LOOCV از نظر محاسباتی هزینه بر تر از k-Fold است، ممکن است زمان زیادی برای اعتبارسنجی متقابل مدل با استفاده ازLOOCVنیاز باشد.بنابراین، جامعه علوم داده یک قاعده کلی بر اساس شواهد تجربی و تحقیقات مختلف دارد که نشان می‌دهد اعتبارسنجی متقابل 5 یا 10 fold CV باید بر LOOCV ترجیح داده شود.روش Leave-p-outاعتبار سنجی متقابل P-out (LpOC) شبیه LOOC CV است زیرا تمام مجموعه های آموزشی و تست ممکن را با استفاده ازp نمونه به عنوان مجموعه تست ایجاد می کند. تمام موارد ذکر شده در مورد LOOCVو برای LpOC درست است.با این حال، شایان ذکر است که بر خلاف LOOCV و k-Fold مجموعه‌های تست برای LpOC اگر p بالاتر از 1 باشد، همپوشانی دارند.الگوریتم تکنیک LpOC1- نمونه های pرا از مجموعه داده انتخاب کنید که مجموعه تست خواهد بود.2- n - pنمونه باقیمانده مجموعه آموزشی خواهد بود.3- مدل را روی مجموعه آموزشی آموزش دهید. در هر تکرار، یک مدل جدید باید آموزش داده شود.4- در مجموعه تست اعتبار سنجی کنید.5- نتیجه اعتبارسنجی را ذخیره کنید.6- مراحل 2 تا 5 را Cpn (ترکیب p از n) بار تکرار کنید.7- برای به دست آوردن امتیاز نهایی، میانگین نتایجی را که در مرحله 5 به دست آوردید محاسبه نمایید.می‌توانید Leave-p-out CV را با استفاده ازsklearn– sklearn.model_selection.LeavePOutانجام دهید.LpOC تمام معایب LOOCV را دارد، اما با این وجود، به اندازه LOOCVقوی نیست.روش Stratified k-Foldگاهی اوقات ممکن است با عدم تعادل زیادی در مقدار هدف در مجموعه داده مواجه شویم. به عنوان مثال، در مجموعه داده‌های مربوط به قیمت ساعت‌های مچی، ممکن است تعداد بیشتری از ساعت‌های مچی قیمت بالایی داشته باشند. در مورد طبقه‌بندی، در مجموعه داده‌های گربه‌ها و سگ‌ها ممکن است تغییر زیادی به سمت طبقه سگ وجود داشته باشد.K-Fold طبقه بندی شده نوعی از تکنیک استاندارد K-Fold CV است که به گونه ای طراحی شده است که در چنین مواردی مانع از تعادل هدف موثر باشد.K-Fold به صورت زیر عمل می کند، Stratified k-Fold مجموعه داده را به k دسته تقسیم می کند به طوری که هر دسته تقریباً دارای درصد مشابهی از نمونه های هر کلاس هدف به عنوان مجموعه کامل است. در مورد رگرسیون، Stratified k-Fold اطمینان حاصل می کند که میانگین مقدار هدف تقریباً در همه دسته ها برابر است.الگوریتم تکنیک طبقه بندی k-fold1- تعدادی k-foldرا انتخاب کنید.2- مجموعه داده را به k دسته تقسیم کنید. هر fold باید تقریباً دارای درصد مشابهی از نمونه‌های هر کلاس هدف در مجموعه کامل باشد.3-  k – 1 folds را انتخاب کنید که مجموعه آموزشی خواهد بود. fold باقیمانده مجموعه تست خواهد بود.4- مدل را روی مجموعه آموزشی آموزش دهید. در هر تکرار یک مدل جدید باید آموزش داده شود.5- در مجموعه تست اعتبار سنجی کنید.6- نتیجه اعتبارسنجی را ذخیره کنید.7- مراحل را 3 تا 6 را k بار تکرار کنید. هر بار از foldباقی مانده به عنوان مجموعه تست استفاده کنید. در پایان، شما باید مدل را روی هر fold که دارید اعتبارسنجی کرده باشید.8- برای به دست آوردن امتیاز نهایی، میانگین نتایجی که در مرحله 6 به دست آوردید، محاسبه نمایید.همانطور که ممکن است متوجه شده باشید، الگوریتم تکنیک Stratified k-Fold مشابه K-Folds استاندارد است. شما نیازی به کدنویسی اضافی ندارید زیرا این روش همه کارهای لازم را برای شما انجام می دهد.Stratified k-Fold به روش زیر در Sklearnانجام میشود.تمام موارد ذکر شده در بالا در مورد K-Fold CV برای تکنیک Stratified k-Foldصادق است. هنگام انتخاب بین روش های مختلف CV، مطمئن شوید که از روش مناسب استفاده می کنید. به عنوان مثال، ممکن است فکر کنید که مدل شما عملکرد بدی دارد، صرفاً به این دلیل که از K-Fold CV برای اعتبارسنجی مدلی استفاده می‌کنید که بر روی مجموعه داده با عدم تعادل کلاس آموزش داده شده است. برای جلوگیری از آن، همیشه باید یک تجزیه و تحلیل داده های اکتشافی مناسب روی داده های خود انجام دهید.روش Repeated k-Foldاعتبارسنجی متقابل k-Fold تکراری یا نمونه ‌برداری تصادفی فرعی تکراری احتمالاً قوی ‌ترین تکنیک از تمام تکنیک‌ های CV در این مقاله است. که یک تغییر از k-Fold است اما در مورد K-Folds تکراری k تعداد fold ها نیست. تعداد دفعاتی است که ما مدل را آموزش خواهیم داد.ایده کلی این است که در هر تکرار، نمونه‌هایی را به ‌طور تصادفی از سرتاسر مجموعه داده به عنوان مجموعه تست انتخاب می‌کنیم. به عنوان مثال، اگر تصمیم بگیریم که 20٪ از مجموعه داده ها مجموعه تست ما باشد، 20٪ نمونه به طور تصادفی انتخاب می شوند و 80٪ بقیه به مجموعه آموزشی تبدیل می شوند.الگوریتم تکنیک Repeated k-Fold1- k را انتخاب کنید ( تعداد دفعاتی که مدل آموزش داده می شود).2- تعدادی نمونه را انتخاب کنید که مجموعه تست خواهد بود.3- مجموعه داده را تقسیم کنید.4- روی مجموعه آموزشی تمرین کنید. در هر تکرار اعتبارسنجی متقاطع، یک مدل جدید باید آموزش داده شود.5- در مجموعه تست اعتبار سنجی کنید.6- نتیجه اعتبارسنجی را ذخیره کنید.7- مراحل را 3-6 را k بار تکرار کنید.8- برای به دست آوردن امتیاز نهایی، میانگین نتایجی که در مرحله 6 به دست آوردید، محاسبه نمایید.K-Fold تکراری مزایای واضحی نسبت به استاندارد k-Fold CV دارد. اول، نسبت تقسیم آموزش به تست به تعداد تکرارها بستگی ندارد. دوم، ما حتی می توانیم نسبت های منحصر به فردی را برای هر تکرار تنظیم کنیم. سوم، انتخاب تصادفی نمونه‌ ها از مجموعه داده‌ ها، Repeated k-Fold را برای بایاس انتخابی مقاوم می‌سازد.با این حال، برخی از معایب وجود دارد، k-Fold CV تضمین می ‌کند که مدل روی همه نمونه‌ها تست می‌شود، در حالی که K-Fold تکراری بر اساس تصادفی‌سازی است که به این معنی است که برخی از نمونه‌ها ممکن است هرگز برای قرار گرفتن در مجموعه تست انتخاب نشوند. در همان زمان، برخی از نمونه ها ممکن است چندین بار انتخاب شوند.Sklearn به شما در پیاده سازی Repeated k-Fold CV کمک می کند. فقط از sklearn.model_selection.RepeatedKFold استفاده کنید. در اجرای sklearn این تکنیک باید تعداد فولدهایی که می خواهید داشته باشید (n_splits ) و تعداد دفعاتی که تقسیم انجام می شود (n_repeats ) را تنظیم کنید. این مشخص می کند که در هر تکرار فولدهای مختلفی داشته باشید.روش Nested k-Foldبرخلاف سایر تکنیک‌ های CV، که برای ارزیابی کیفیت یک الگوریتم طراحی شده‌اند، Nested k-Fold CV محبوب ‌ترین راه برای تنظیم پارامترهای یک الگوریتم است.تصور کنید که ما یک پارامتر p داریم که معمولاً به الگوریتم پایه ای که ما در حال اعتبارسنجی متقابل آن هستیم بستگی دارد. به عنوان مثال، برای رگرسیون لجستیک، ممکن است پارامتر جریمه باشد که برای تعیین هنجار مورد استفاده در جریمه استفاده می شود.الگوریتم تکنیک Nested k-Fold1- k را انتخاب کنید ( تعداد فولدها، به عنوان مثال، 10).2- یک پارامتر pرا انتخاب کنید. فرض کنید الگوریتم ما رگرسیون لجستیک است و pپارامتر جریمه p = {&#x27;l1&#x27;, &#x27;l2&#x27;, &#x27;elasticnet&#x27;, &#x27;none&#x27;}3- مجموعه داده را به 10 فولد تقسیم کنید و یکی از آنها را برای تست رزرو کنید.4- یکی از فولدهای آموزشی را برای اعتبار سنجی رزرو کنید.5- برای هر مقدار p روی 8 فولد آموزشی باقیمانده آموزش دهید و روی فولد اعتبارسنجی ارزیابی کنید. اکنون 4 اندازه گیری دارید.6- مراحل 4-5 را 9 بار تکرار کنید. بچرخانید که کدام فولد آموزشی، فولد اعتبارسنجی است. اکنون 4 * 9 اندازه گیری دارید7- pرا انتخاب کنید که میانگین خطای آموزش را روی 9 دسته به حداقل می رساند. از آن p برای ارزیابی روی مجموعه تست استفاده کنید.8- از مرحله 2 ، 10 بار تکرار کنید و از هر فولد به نوبت به عنوان فولد تست استفاده کنید.9- میانگین و انحراف معیار اندازه گیری ارزیابی را در 10 فولد تست ذخیره کنید.10- الگوریتمی که بهترین عملکرد را داشت، الگوریتمی بود که بهترین میانگین عملکرد خارج از نمونه را در 10 فولد آزمایشی داشت.این تکنیک از نظر محاسباتی گران است زیرا در طول مراحل 1 تا 10 تعداد زیادی مدل باید آموزش و ارزیابی شوند. با این حال، Nested k-Fold CV معمولا استفاده می شود و ممکن است در چندین کار ML واقعاً مؤثر باشد.متأسفانه، هیچ روش داخلی در sklearn وجود ندارد که بتواند CV Nested k-Foldرا برای شما انجام دهد. این لحظه ای است که شما باید یا گوگل کنید و پیاده سازی شخصی را پیدا کنید یا خودتان آن را کدنویسی کنید.Complete Cross-ValidationCV کامل کم استفاده ترین تکنیک CV است. ایده کلی این است که ما یک عدد k - طول مجموعه آموزشی را انتخاب می کنیم و روی هر تقسیم ممکن شامل kنمونه در مجموعه آموزشی اعتبار سنجی می کنیم.مقدار آن تقسیم‌ها را می‌توان به صورت ترکیب n از k محاسبه کرد که n طول مجموعه داده است. اگر k بالاتر از 2 باشد، باید مدل خود را چندین بار آموزش دهیم که همانطور که قبلاً متوجه شدیم از نظر زمان فرآیند گران قیمت و از جنبه محاسبات پیچیده است.به همین دلیل است که از CV کامل یا در تحقیقات نظری استفاده می شود و یا در صورت وجود فرمول مؤثری که به حداقل رساندن محاسبات کمک می کند.الگوریتم اعتبار سنجی متقاطع کامل:1- یک عدد kرا انتخاب کنید ( طول مجموعه آموزشی).2- مجموعه داده را تقسیم کنید.3- روی مجموعه آموزشی تمرین کنید.4- در مجموعه تست اعتبار سنجی کنید.5- نتیجه اعتبارسنجی را ذخیره کنید.6- مراحل 2 تا 5 را به اندازه ترکیب n از k تکرار کنید.7- برای به دست آوردن امتیاز نهایی، میانگین نتایجی که در مرحله 5 به دست آوردید، محاسبه نمایید.اعتبار سنجی متقابل در یادگیری ماشینیبیشتر تکنیک های اعتبار سنجی متقابل ذکر شده در بالا به طور گسترده در ML استفاده می شود. مهم است که به خاطر داشته باشید که استفاده از تکنیک CVمناسب ممکن است در زمان شما صرفه جویی کند و به انتخاب بهترین مدل برای کار کمک کند.این بدان معناست که اول این که بهتر است همیشه مدل را اعتبارسنجی متقابل کنید و دوم این که باید یک روش CV مربوطه را انتخاب کنید. بنابراین، دانستن مزایا و معایب تکنیک های اعتبارسنجی متقابل حیاتی است.شایان ذکر است که اگر می‌خواهید مدل را اعتبار سنجی متقابل کنید، همیشه باید دفترچه راهنمای مدل را بررسی کنید زیرا برخی از الگوریتم‌های ML، به عنوان مثال، CatBoost روش‌های CV داخلی خود را دارند. ممکن است آنها را مربوط به وظیفه ML خود بیابید و به جای روش های داخلی sklearn از آنها استفاده کنید.به طور کلی، همانطور که ممکن است متوجه شده باشید، بسیاری از تکنیک‌های CV دارای روش‌های داخلی sklearn هستند. من به شدت توصیه می کنم از آنها استفاده کنید زیرا این روش ها در زمان برای کارهای پیچیده تر صرفه جویی زیادی می کنند.اعتبار متقابل در یادگیری عمیقاعتبار سنجی متقابل در یادگیری عمیق (DL ) ممکن است کمی مشکل باشد زیرا اکثر تکنیک های CV حداقل چند بار نیاز به آموزش مدل دارند.در یادگیری عمیق، معمولاً به دلیل هزینه ‌های مرتبط با آموزش مدل ‌های مختلف، از CVاجتناب می‌کنید. به جای انجام k-Fold یا سایر تکنیک های CV، ممکن است از یک زیرمجموعه تصادفی از داده های آموزشی خود به عنوان hold-out برای اهداف اعتبار سنجی استفاده کنید.به عنوان مثال، کتابخانه یادگیری عمیق Keras به شما امکان می دهد یکی از دو پارامتر را برای تابع fit که آموزش را انجام می دهد، ارسال کنید.validation_split: درصدی از داده هایی که باید برای اعتبار سنجی hold-out شوند.validation_data: یک تاپل از (X, y) که باید برای اعتبارسنجی استفاده شود. این پارامتر, validation_split را نادیده می گیرد، به این معنی که شما می توانید تنها یکی از این پارامترها را در یک زمان استفاده کنید.همین رویکرد در آموزش های رسمی سایر فریمورک های DL مانند PyTorch و MxNet استفاده می شود. آنها همچنین پیشنهاد می کنند مجموعه داده را به سه بخش تقسیم کنید: آموزش، اعتبار سنجی و تست.آموزش : بخشی از مجموعه داده برای آموزش.اعتبار سنجی : بخشی از مجموعه داده برای اعتبارسنجی در حین آموزش.تست : بخشی از مجموعه داده برای اعتبار سنجی نهایی مدل.با این حال، اگر مجموعه داده کوچک است (شامل صدها نمونه) می توانید از اعتبارسنجی متقابل در وظایف DL استفاده کنید. در این مورد، یادگیری یک مدل پیچیده ممکن است یک کار بی ربط باشد، بنابراین مطمئن شوید که کار را بیشتر پیچیده نکنید.بهترین روش ها و نکاتشایان ذکر است که گاهی اوقات انجام اعتبارسنجی متقابل ممکن است کمی مشکل باشد.به عنوان مثال، اشتباه منطقی هنگام تقسیم مجموعه داده بسیار آسان است که ممکن است منجر به یک CVغیرقابل اعتماد شود.ممکن است نکاتی را بیابید که باید هنگام اعتبارسنجی متقابل یک مدل همچنان که در زیر آمده مد نظر داشته باشید:1- هنگام تقسیم داده ها منطقی باشید (آیا روش تقسیم منطقی است).2- از روش CVمناسب استفاده کنید (آیا این روش برای مورد استفاده من قابل اجرا است).3- هنگام کار با سری های زمانی، گذشته را ارزیابی نکنید (به اولین نکته مراجعه کنید).4- هنگام کار با داده های پزشکی یا مالی، به یاد داشته باشید که آن را بر اساس شخص تقسیم کنید. از داشتن داده برای یک نفر هم در آموزش و هم در مجموعه تست خودداری کنید زیرا ممکن است به عنوان نشت داده در نظر گرفته شود.5- هنگام برش تکه‌ها از تصاویر بزرگ تر، به یاد داشته باشید که با شناسه تصویر بزرگ تقسیم کنید.البته، نکات از کار به کار متفاوت است و پوشش همه آنها تقریبا غیرممکن است. به همین دلیل است که انجام یک تجزیه و تحلیل داده های اکتشافی جامد قبل از شروع اعتبارسنجی متقابل یک مدل همیشه بهترین روش است.بررسی نهاییاعتبار سنجی متقابل ابزار قدرتمندی است. هر دانشمند داده باید با آن آشنا باشد. در زندگی واقعی، شما نمی توانید پروژه را بدون اعتبارسنجی متقابل یک مدل به پایان برسانید.به نظر من بهترین تکنیک های CV Nested k-Fold و استاندارد k-Fold هستند. من شخصاً از آنها در پروژه تشخیص تقلب استفاده کردم. K-Fold تودرتو و همچنین GridSeachCVبه من کمک کرد تا پارامترهای مدل خود را تنظیم کنم. از طرف دیگر، k-Fold برای ارزیابی عملکرد مدل من استفاده شد.در این مقاله، ما متوجه شدیم که اعتبارسنجی متقابل چیست، چه تکنیک‌های CV در طبیعت وجود دارد و چگونه آنها را پیاده‌سازی کنیم. در آینده الگوریتم های MLقطعاً حتی بهتر از امروز عمل خواهند کرد. با این حال، اعتبار سنجی متقابل همیشه برای پشتیبان گیری از نتایج شما مورد نیاز است.امیدواریم با این اطلاعات، مشکلی در تنظیم CV برای پروژه بعدی یادگیری ماشینی خود نخواهید داشت!منابع1. https://www.geeksforgeeks.org/cross-validation-machine-learning/2. https://machinelearningmastery.com/k-fold-cross-validation/3. https://towardsdatascience.com/cross-validation-in-machine-learning-72924a69872f4. https://towardsdatascience.com/why-and-how-to-do-cross-validation-for-machine-learning-d5bd7e60c1895. https://scikit-learn.org/stable/modules/cross_validation.html</description>
                <category>امیرحسین باقری</category>
                <author>امیرحسین باقری</author>
                <pubDate>Fri, 17 Dec 2021 11:41:40 +0330</pubDate>
            </item>
            </channel>
</rss>