<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های حسن جوانمرد</title>
        <link>https://virgool.io/feed/@hassanjavanmard</link>
        <description></description>
        <language>fa</language>
        <pubDate>2026-06-16 18:19:24</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/1384935/avatar/moWk7X.jpeg?height=120&amp;width=120</url>
            <title>حسن جوانمرد</title>
            <link>https://virgool.io/@hassanjavanmard</link>
        </image>

                    <item>
                <title>B-U,V-O رابطه بین برازش با واریانس و بایاس و مثالی در دنیای واقعی</title>
                <link>https://virgool.io/@hassanjavanmard/b-uv-o-%D8%B1%D8%A7%D8%A8%D8%B7%D9%87-%D8%A8%DB%8C%D9%86-%D8%A8%D8%B1%D8%A7%D8%B2%D8%B4-%D8%A8%D8%A7-%D9%88%D8%A7%D8%B1%DB%8C%D8%A7%D9%86%D8%B3-%D9%88-%D8%A8%D8%A7%DB%8C%D8%A7%D8%B3-%D9%88-%D9%85%D8%AB%D8%A7%D9%84%DB%8C-%D8%AF%D8%B1-%D8%AF%D9%86%DB%8C%D8%A7%DB%8C-%D9%88%D8%A7%D9%82%D8%B9%DB%8C-wgownvkzjbsm</link>
                <description>ابتدا به طور مختصر به چند مفاهیم پایه می پردازیمبایاس چیست؟اریب (Bias)  معیاری برای نشان دادن میزان نزدیکی پارامتر جامعه به برآوردگر آن پارامتر  است.بدلیل اینکه براساس هر نمونه تصادفی، برآوردگر مربوط به پارامتر  مقدار متفاوتی خواهد داشت، انتظار داریم که با تکرار نمونه‌گیری‌ها، متوسط  مقدار برآوردگرهای حاصل، با پارامتر واقعی جامعه تقریبا برابر شود. در این  حالت میزان اریبی برآوردگر (فاصله آن از مقدار واقعی پارامتر) باید با  مقدار صفر برابر باشد. چنین برآوردگری را یک برآوردگر «نااریب» (Unbiased)  می‌گویند. در حقیقت وجود چنین خاصیتی برآوردگرهای پارامتر را به دو کلاس  برآوردگر اریب و نااریب تفکیک می‌کند.واریانس چیست؟وردایی یا واریانس (به انگلیسی: Variance)، در نظریه احتمالات و آمار، نوعی سنجش پراکندگی است. مقدار وردایی با میانگین‌گیری از مربع فاصله مقدار محتمل یا مشاهده شده با مقدار مورد انتظار محاسبه می‌شود. در مقایسه با میانگین می‌توان گفت که میانگین مکان توزیع را نشان می‌دهد، در حالی که وردایی مقیاسی است که نشان می‌دهد که داده‌ها حول میانگین چگونه پخش شده‌اند. وردایی کمتر بدین معنا است که انتظار می‌رود که اگر نمونه‌ای از توزیع مزبور انتخاب شود مقدار آن به میانگین نزدیک باشد.مفهوم کم برازش و بیش برازشمفهوک Over-fitting به این موضوع اشاره دارد که مدل ما زیادی خوب آموزش دیده است اما قابل تعمیم نیست.این اتفاق زمانی ممکن است بیفتد که مجموعه داده خیلی کوچک  یا تابع پایه بسیار پیچیده باشد و همچنین شامل داده های نویزی نیز باشد ( البته  کوچک بودن نیز به تنهایی می تواند مشکل ساز باشد حتی بدون داده های نویزی  ). به همین خاطر می گوییم ماشین نمی تواند با داده های جدید درست نتیجه  گیری کند.مفهوم کم برازش یا Under-fitting زمانی اتفاق میفتد که مدل بسیار ساده است و  برای یادگیری مناسب نیست. نمونه هایی در دنیای واقعیفرض کنید برای دانش آموزان یک مدرسه می خواهید لباس متناسب با آن ها را تهیه کنید. اگر شاخص را تمام دانش آموزان مدرسه در نظر بگیرید دارای واریانس زیادی هستید چون دانش آموزان یک مدرسه دارای مقاطع مختلفی بوده و هم چنین هر مقطع دارای دانش آموزان با جثه های متفاوت است. اگر مبنا را یک نوع از دانش آموزان مثلا با قد کوتاه یک مقطع در نظر بگیرید دارای بایاس بسیار کمی خواهید بود چون لباس تولیدی برای این دانش آموزان یکسان خواهد بود .اگر واریانس زیاد باشد دچار بیش برازش می شویم به این علت که لباس تولیدی برای تمامی دانش آموزان به دلیل جثه بزرگ یکسری از دانش آموزان به دیگر دانش آموزان قابل تعمیم نبوده و نمی توانند آن را به تن کنند و اصطلاحا لباس برای یکسری بسیار گشاد خواهد بود.اگر بایاس زیاد باشد، یعنی گستره ی تغییرات لباس دانش آموزان کم باشد برای یکسری از دانش آموزان تنها متناسب بوده و برای دیگر دانش آموزان بسیار تنگ خواهد بود</description>
                <category>حسن جوانمرد</category>
                <author>حسن جوانمرد</author>
                <pubDate>Fri, 14 Jan 2022 15:04:11 +0330</pubDate>
            </item>
                    <item>
                <title>درختان تصمیم با پشتوانه عصبی (NBDT)</title>
                <link>https://virgool.io/@hassanjavanmard/%D8%AF%D8%B1%D8%AE%D8%AA%D8%A7%D9%86-%D8%AA%D8%B5%D9%85%DB%8C%D9%85-%D8%A8%D8%A7-%D9%BE%D8%B4%D8%AA%D9%88%D8%A7%D9%86%D9%87-%D8%B9%D8%B5%D8%A8%DB%8C-nbdt-dxsfz39d4z5k</link>
                <description>سلام و وقت بخیر!متنی که مشاهده می کنید یکی از مقالات سایت paperwithcode هست که بازخوانی و ارائه شده است که لینک آن به صورت زیر می باشد:www.paperswithcode.com/paper/nbdt-neural-backed-decision-treesاین مقاله انتشار یافته سال 2021 بوده و اثر دکتر آلوین ون و همکاران است.به طور خلاصه هدف این مقاله به این شرح است:کاربردهای یادگیری ماشینی مانند امور مالی و پزشکی نیاز به پیش بینی های دقیق و قابل توجیه دارند و اکثر روش های یادگیری عمیق را از استفاده منع می کنند. در پاسخ به این نیاز که سیستم های یادگیری ماشین نمی توانند روشی توجیه کننده برای انسان ها بیاورند و خود به استخراج ویژگی ها می گردارند،قبل ها از ترکیب درخت تصمیم گیری (Decision Tree)  با یادگیری عمیق ترکیب مدل‌هایی را به دست می‌آمد که یا (1) تفسیرپذیری را فدای دقت یا (2) دقت را فدای تفسیرپذیری می‌کنند. در این مقاله با بهبود مشترک دقت و تفسیرپذیری درختان تصمیم با پشتوانه عصبی (NBDT) از این معضل جلوگیری می شود. NBDTها لایه خطی نهایی یک شبکه عصبی را با یک توالی متفاوت از تصمیمات و یک ضرر جایگزین می کنند. این کار مدل را مجبور به یادگیری مفاهیم سطح بالا می کند و اتکا به تصمیمات بسیار نامطمئن را کاهش می دهد، و 1- دقت زیادی را به همراه دارد: یعنی NBDT ها مطابق یا بهتر از شبکه های عصبی مدرن در CIFAR، ImageNet عمل می کنند و تا 16% بهتر به کلاس های دیده نشده تعمیم می یابند. علاوه بر این، از دست دادن جایگزین این مدل دقت مدل اصلی را تا 2٪ بهبود می بخشد. NBDTها همچنین 2- قابلیت تفسیر را دارند: بهبود اعتماد انسانی با شناسایی واضح اشتباهات مدل و کمک به اشکال زدایی مجموعه داده ها.بیان و حل مسئله:برای تحقق پیشرفت‌هایی که زمینه دقت و تفسیرپذیری روند کاری بیان شد، به جای تطبیق بیش از حد با فضای ویژگی، سلسله مراتب را به شبکه منطبق می‌کنند، اتکای درخت تصمیم را به تصمیم‌های بسیار نامطمئن کاهش می‌دهند و تشخیص دقیق مفاهیم سطح بالا را تشویق می‌کنند. این مزایا در بهبود مشترک دقت و قابلیت تفسیر به اوج خود می رسد.روش کار:درختان تصمیم با پشتوانه عصبی (NBDTs) لایه خطی نهایی شبکه را با درخت تصمیم جایگزین می کنند.برخلاف درخت‌های تصمیم کلاسیک یا بسیاری از طبقه‌بندی‌کننده‌های سلسله مراتبی، NBDT‌ها از احتمالات مسیر برای استنتاج برای کنترل کردن تصمیم‌های میانی بسیار نامطمئن استفاده می‌کنند، سلسله‌مراتبی را از وزن‌های مدل از پیش آموزش‌دیده برای کاهش تطابق بیش از حد(Overfitting)، و آموزش با تلفات سلسله مراتبی برای یادگیری بهتر تصمیمات سطح بالا استفاده می‌کنند.(منظور از تصمیم های سطح بالا تشخیص بین حیوانات و خودروها است)قوانین زیر برای پیاده سازی روش پیشنهادی است:1. وزن دهی قاعده تصمیم گیری  با وزن شبکه عصبی: یک درخت تصمیم مایل فقط از تصمیمات باینری پشتیبانی می کند و برای هر تصمیم از یک ابر صفحه استفاده می کند. در عوض، ما یک بردار وزنی ni را با هر گره مرتبط می کنیم.2. محاسبه احتمالات گره: احتمالات برگ های این درخت تصمیم توسط سافت مکس داده می شود.3. یک برگ را با استفاده از احتمالات مسیر انتخاب می شود.به عنوان مثال در شکل زیر ، w1 قرمز در A به برگ قرمز در B اختصاص داده شده است. میانگین گیری هر جفت گره برگ برای وزن والدین. به عنوان مثال، w1 و w2 (قرمز و بنفش) در B به طور میانگین به w5 (آبی) در C تبدیل می‌شوند سپس  برای هر جد(والد والد)، میانگین وزن گره‌های برگ در زیردرخت آن را متوسط گیری می شود. این میانگین وزن اجداد است. در اینجا، جد ریشه است، بنابراین وزن آن میانگین وزن های برگ w1، w2، w3، w4 است.تجزیه و تحلیل: شناسایی برچسب های معیوب مجموعه دادهانواع مختلفی از برچسب‌های مبهم وجود دارد مانند شکل زیر که هر یک از آنها می‌تواند به عملکرد مدل برای مجموعه داده‌های طبقه‌بندی تصویر مانند ImageNet آسیب برساند. برای یافتن این تصاویر، از آنتروپی در تصمیم‌گیری‌های NBDT استفاده می‌کنیم، که نشان‌دهنده ابهام بسیار قوی‌تر از آنتروپی در پیش‌بینی شبکه عصبی اصلی است.نتیجه گیری:در این مقاله، درخت‌ تصمیم با پشتوانه عصبی را پیشنهاد شده است که 1- دقت بهبود یافته را مشاهده می‌کنند: NBDT‌های خارج تعمیم می‌دهند (16%+)، بهبود (2%+)، و مطابقت (0.15%) یا عملکرد بهتر (1%+) وضعیت را دارند. . همچنین 2- تفسیرپذیری بهبود یافته را با ترسیم سلسله مراتبی و  استفاده از آنتروپی مسیر برای شناسایی برچسب‌های مبهم . با این کار تضاد بین دقت و قابلیت تفسیر کمرنگ تر شده و راه را برای مدل های مشترک دقیق و قابل تفسیر در استقرار در دنیای واقعی هموار می کند.</description>
                <category>حسن جوانمرد</category>
                <author>حسن جوانمرد</author>
                <pubDate>Fri, 07 Jan 2022 00:00:33 +0330</pubDate>
            </item>
                    <item>
                <title>اعتبار سنجی متقابل در یادگیری ماشین: چگونه می­توان این کار را به درستی انجام داد</title>
                <link>https://virgool.io/@hassanjavanmard/%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-%DA%86%DA%AF%D9%88%D9%86%D9%87-%D9%85%DB%8C%C2%AD%D8%AA%D9%88%D8%A7%D9%86-%D8%A7%DB%8C%D9%86-%DA%A9%D8%A7%D8%B1-%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%D8%A7%D8%AF-jw4vyfjfhi1j</link>
                <description>Cross-Validation in Machine Learning: How to Do It Rightاعتبار سنجی متقابل در یادگیری ماشین:چگونه می­توان این کار را به درستی انجام دادنویسنده: ولادمیر لیاشنکودر یادگیری ماشین (ML)، تعمیم معمولاً به توانایی یک الگوریتم برای کارآمدبودن در ورودی های مختلف دیده نشده اشاره دارد. این بدان معنی است که مدل یادگیری ماشین با کاهش عملکرد در ورودی­های جدیدی که از توزیع یکسانی با داده­های آموزشی دارند مواجه نمی­شود.برای انسان تعمیم یکی از طبیعی ترین چیزهای ممکن است. ما می­تونیم رو هوا طبقه بندی کنیم. به عنوان مثال، ما قطعاً یک سگ را می­شناسیم حتی اگر قبلاً این نژاد را ندیده باشیم. با این وجود، ممکن است این کار برای یک مدل یادگیری ماشین کاملاً یک چالش باشد. به همین دلیل است که در ساخت مدل بررسی توانایی الگوریتم برای تعمیم یک کار مهم بوده و نیاز به توجه زیادی دارد.برای این کار(تعمیم) ازروش اعتبار سنجی متقابل (CV) استفاده می­شود.در این مقاله به موارد زیر پرداخته می­شود:· اعتبار سنجی متقابل چیست: تعریف، هدف استفاده و تکنیک ها· تکنیک‌های مختلف: CV به روش برگزاری، روش k-folds، اعتبار­سنجی یک طرفه، اعتبار سنجی خارج از صفحه، k-folds دسته­ای، k-folds مکرر، k-folds تودرتو، روش اعتبارسنجی کامل· نحوه استفاده از این تکنیک ها در  sklearn:· اعتبار سنجی متقابل در یادگیری ماشینی:  sklearn، CatBoost· اعتبار سنجی متقابل در یادگیری عمیق : Keras، PyTorch، MxNet· بهترین برای شیوه­ها و کارهایی از جمله: سری های زمانی، داده های پزشکی و مالی، تصاویراعتبار سنجی متقابل چیست؟اعتبارسنجی متقابل تکنیکی برای ارزیابی یک مدل یادگیری ماشینی و آزمایش عملکرد آن است. معمولاً در کارهای یادگیری ماشین استفاده می­شود که به مقایسه و انتخاب یک مدل متناسب با مسئله مدل‌سازی پیش‌بینی‌کننده مختص خود کمک می‌کند.درک و پیاده‌سازی CV آسان است، و مشکلات کمتری نسبت به سایر روش‌های مورد استفاده برای محاسبه کارایی مدل دارد. همه اینها اعتبار سنجی متقابل را به ابزاری قدرتمند برای انتخاب بهترین مدل برای کار های یادگیری ماشین تبدیل می­کند.تکنیک های مختلفی وجود دارد که ممکن است برای اعتبارسنجی متقابل یک مدل استفاده شود. با این حال، همه آنها یک الگوریتم مشابه دارند:1. مجموعه داده را به دو بخش تقسیم می­شود: یکی برای آموزش، دیگری برای تست2. مدل را روی مجموعه آموزشی آموزش داده می­شود3. اعتبار مدل را در مجموعه تست ارزیابی می­شود4. مراحل 1 تا 3 چند بار تکرار می­شود. این تکرار به روش CVای که استفاده می­شود بستگی دارد.با توجه با اینکه تکنیک­های CV زیادی وجود دارد. معمولا برخی از آنها استفاده می شوند، برخی دیگر تنها در حد فرضیه هستند. در این بخش روش­های اعتبار سنجی متقابل توضیح داده می­شود.· روش برگزاری· روش k-folds· اعتبار­سنجی یک طرفه· اعتبار سنجی خارج از صفحه· k-folds دسته­ای· k-folds مکرر· k-folds تودرتو· روش اعتبارسنجی کاملروش برگزاریاعتبار سنجی متقابل به روش برگزاری ساده­ترین و رایج­ترین تکنیک است. ممکن است نحوه کار این روش را ندانید اما مطمئنا هر روز از آن استفاده می­کنید.الگوریتم تکنیک برگزاری:1. مجموعه داده را به دو بخش تقسیم می­شود: مجموعه آموزشی و مجموعه تست. معمولاً 80 درصد مجموعه داده به مجموعه آموزشی و 20 درصد به مجموعه آزمایشی تقسیم می­شود، اما می‌توان هر تقسیم‌بندی را که مناسب­تر است را انتخاب کرد.2. مدل بر روی مجموعه آموزشی، آموزش می­بیند.3. در مجموعه تست ارزیابی می­شود.4. نتیجه این ارزیابی ذخیره می­شود.از روش برگزاری در مجموعه داده‌های بزرگ استفاده می­شود، زیرا مدل فقط یک بار نیاز به آموزش دارد.اجرای آن واقعاً آسان است. برای مثال، می‌توان این کار را با استفاده از sklearn.model_selection.train_test_split  انجام داد.import numpy as npfrom sklearn.model_selection import  train_test_splitX, y = np.arange(10).reshape((5, 2)), range(5)X_train, X_test, y_train,   y_test = train_test_split(X, y,test_size=0.2,random_state=111)با این حال، روش برگزاری یک نقطه ضعف بزرگ دارد.به عنوان مثال، مجموعه داده ای که در توزیع کاملاً یکنواخت نیست. اگر چنین باشد، ممکن است تقسیم داده­ها در یک نقطه نامناسب قرار گیرد. به عنوان مثال، مجموعه آموزشی، بیانگری از مجموعه تست نخواهد بود. هر دو مجموعه تمرین و تست ممکن است بسیار متفاوت باشند، یکی از آنها ممکن است آسان­تر یا سخت­تر باشد.علاوه بر این، این واقعیت که ما مدل خود را فقط یک بار آزمایش می کنیم ممکن است یک نقطه چالش برانگیز برای این روش باشد. با توجه به دلایلی که قبلا ذکر شد، نتیجه به دست آمده با تکنیک برگزاری ممکن است نادرست در نظر گرفته شود.k-Foldروش k-Fold تکنیکی است که معایب روش  برگزاری را به حداقل می رساند. در این روش رویه جدیدی برای تقسیم مجموعه داده ارائه می­شود که به غلبه بر کشل  &#x27;فقط یک بار تست و نقطه چالش&#x27; کمک می­کند.الگوریتم تکنیک k-Fold:1. مجموعه داده را به k قسمت مساوی (در صورت امکان) تقسیم می­شود که به آنهاfolds گفته می شود. تعداد kبرای اجرای این الگوریتم انتخاب می­شودکه معمولاً 5 یا 10 است، اما می‌توان هر عددی را انتخاب شود به شرط آنکه کمتر از طول مجموعه داده باشد.2. ?  بسته مجموعه آموزشی خواهد بود. باقیمانده مجموعه تست خواهد بود.3. مدل بر روی مجموعه آموزشی آموزش داده می­شود. در هر تکرار اعتبار سنجی متقابل، باید یک مدل جدید مستقل از مدل آموزش داده شده در تکرار قبلی آموزش داده شود.4. در مجموعه تست ارزیابی شود.5. نتیجه اعتبارسنجی را ذخیره شود.6. مراحل 3 تا 6 kبار تکرار شود. هر بار از مجموعه باقی مانده را به عنوان مجموعه تست استفاده شود. در پایان، مدل  بایستی بر روی هر مجموعه که موجود است اعتبارسنجی شده باشد.7. برای به دست آوردن امتیاز نهایی، میانگین نتایجی در مرحله 6 مدنظر گرفته شود.برای انجام اعتبارسنجی متقاطع k Fold می توانید از sklearn.model_selection.KFold استفاده کنید.import numpy as npfrom sklearn.model_selection import KFoldX = np.array([[1, 2], [3, 4], [1, 2], [3, 4]])y = np.array([1, 2, 3, 4])kf = KFold(n_splits=2)for train_index, test_index in kf.split(X):print(&amp;quotTRAIN:&amp;quot, train_index, &amp;quotTEST:&amp;quot, test_index)X_train, X_test = X[train_index], X[test_index]y_train, y_test = y[train_index], y[test_index]به طور کلی همیشه بهتر است از تکنیک k-Fold به جای روش برگزاری استفاده شود. از آنجایی که آموزش و تست بر روی تمامی بخش­های مختلف مجموعه داده انجام می شود الگوریتم k-Fold نتیجه پایدارتر و قابل اعتمادتری به دست می­دهد. افزایش تعداد foldها برای آزمایش مدل در مجموعه‌های مختلف‌ می­توان میزان امتیاز کلی را بهبود بخشید.با این حال، روش K-Fold یک نقطه ضعف دارد. افزایش k منجر به آموزش مدل­های بیشتر می شود و فرآیند آموزش ممکن است واقعاً هزینه­بر و زمانبر باشد.اعتبارسنجی یکطرفهاعتبارسنجی متقابل یکطرفه (LOOCV) یک مورد دقیق­تر از روش اعتبارسنجیK-Fold  است، بصورتی که k برابر با n یعنی تعداد­نمونه های مجموعه داده است. در چنین حالتی k-Fold معادل تکنیک Leave one out است.الگوریتم تکنیک LOOCV:1. یک نمونه از مجموعه داده را انتخاب شود که مجموعه تست خواهد بود2.  نمونه باقیمانده مجموعه آموزشی خواهد بود3. مدل بر روی مجموعه آموزشی، آموزش داده می­شود. در هر تکرار، یک مدل جدید باید آموزش داده شود4. در مجموعه تست ارزیابی شود.5. نتیجه ارزیابی ذخیره شود6. مراحل 1 تا 5 n بار تکرار شود، همانطور که برای n نمونه، n مجموعه آموزشی و تست متفاوت داریم.7. برای به دست آوردن امتیاز نهایی، میانگین نتایج در مرحله 5 به دست آورده شود.برای LOOCV همچنین دارای یک روش داخلی است. می توان آن را در کتابخانهmodel_selection - sklearn.model_selection.LeaveOneOut پیدا کرد.import numpy as npfrom sklearn.model_selection import LeaveOneOutX = np.array([[1, 2], [3, 4]])y = np.array([1, 2])loo = LeaveOneOut()for train_index, test_index in loo.split(X):print(&amp;quotTRAIN:&amp;quot, train_index, &amp;quotTEST:&amp;quot, test_index)X_train, X_test = X[train_index], X[test_index]y_train, y_test = y[train_index], y[test_index]بزرگترین مزیت اعتبارسنجی متقابل یکطرفه این است که داده های زیادی هدر نمی­رود. فقط از یک نمونه از کل مجموعه داده به عنوان یک مجموعه تست استفاده می­شود، در حالی که بقیه مجموعه آموزشی است. اما در مقایسه با k-Fold ،  LOOCV نیاز به ساخت n مدل به جای k مدل دارد که تعداد نمونه در مجموعه داده بوده و بسیار بیشتر از k است. این بدان معناست که LOOCV از نظر محاسباتی هزینه بر تر از از k-Fold است و ممکن است زمان زیادی طول بکشد تا اعتبارسنجی متقابل مدل با استفاده از  LOOCVانجام شود.بنابراین، جامعه علوم داده یک قاعده کلی مبتنی بر شواهد تجربی و تحقیقات مختلف دارد که نشان می‌دهد اعتبار سنجی متقاطع 5 یا 10 برابری باید بر LOOCV ترجیح داده شود.اعتبارسنجی خارج از صفحهاعتبارسنجی متقابل خارج از صفحه(LpOC)  مشابه روش اعتبارسنجی یکطرفه است زیرا تمام مجموعه‌های آموزشی و تست ممکن را با استفاده از  pنمونه‌ به عنوان مجموعه آزمایشی ایجاد می‌کند. تمام موارد ذکر شده در مورد LOOCV و برای LpOC درست است.با این وجود، شایان ذکر است که بر خلافLOOCV و k-Fold مجموعه‌های تست برای LpOC اگر p بالاتر از 1 باشد، همپوشانی دارند.الگوریتم تکنیک  LpOC:1. نمونه های p را از مجموعه داده انتخاب کنید که مجموعه آزمایشی خواهد بود.2. n - p نمونه باقیمانده مجموعه آموزشی خواهد بود.3. مدل را روی مجموعه آموزشی آموزش دهید. در هر تکرار، یک مدل جدید باید آموزش داده شود4. در مجموعه تست ارزیابی شود.5. نتیجه ارزیابی ذخیره شود6. مراحل 2 تا 5  بار را تکرار شود7. برای به دست آوردن امتیاز نهایی، میانگین نتایج در مرحله 5 به دست آورده شود.می توانید Leave p out CV را با استفاده از sklearn – sklearn.model_selection.LeavePOut انجام دهید.import numpy as npfrom sklearn.model_selection import LeavePOutX = np.array([[1, 2], [3, 4], [5, 6], [7, 8]])y = np.array([1, 2, 3, 4])lpo = LeavePOut(2)for train_index, test_index in lpo.split(X):print(&amp;quotTRAIN:&amp;quot, train_index, &amp;quotTEST:&amp;quot, test_index)X_train, X_test = X[train_index], X[test_index]y_train, y_test = y[train_index], y[test_index]k-Fold دسته­ایگاهی اوقات ممکن است با عدم تعادل زیادی در تابع هدف[12]در مجموعه داده مواجه شویم. به عنوان مثال، در مجموعه داده‌های مربوط به قیمت ساعت‌های مچی، ممکن است تعداد بیشتری از ساعت‌های مچی قیمت بالایی داشته باشند. در مورد دسته­بندی، در مجموعه داده‌های گربه‌ها و سگ‌ها ممکن است تغییر زیادی به سمت طبقه سگ وجود داشته باشد.k-Fold دسته­ای گونه ای از روش استاندارد k-Fold است منتهی به گونه ای طراحی شده است که در چنین مواردی که تابع هدف تعادل ندارد موثر باشد.این روش به صورت زیر عمل می کند. K-Fold  دسته­ای مجموعه داده را بر روی k  دسته تقسیم می کند به طوری که هر foldتقریباً دارای درصد مشابهی از نمونه­های هر کلاس هدف به عنوان مجموعه کامل است. در مورد رگرسیون،  k-Fold  لایه­ای اطمینان حاصل می کند که میانگین تابع هدف تقریباً در همه دسته­ها برابر است.الگوریتم تکنیک k-Fold دسته­ای:1. تعدادی k دسته را انتخاب کنید2. مجموعه داده را به k برابر تقسیم کنید. هر فولد باید تقریباً دارای درصد مشابهی از نمونه‌های هر کلاس تابع هدف در مجموعه کامل باشد.3. k – 1  باقی­مانده مجموعه تست خواهد بود.4. مدل را روی مجموعه آموزشی آموزش دهید. در هر تکرار یک مدل جدید باید آموزش داده شود5. در مجموعه تست ارزیابی شود.6. نتیجه ارزیابی ذخیره شود7. مراحل را 3 تا 6 هزار بار تکرار کنید. هر بار از دسته باقی مانده به عنوان مجموعه تست استفاده کنید. در پایان، شما باید مدل را روی هر دسته که دارید اعتبارسنجی کرده باشید.8. برای به دست آوردن امتیاز نهایی، میانگین نتایج در مرحله 6 به دست آورده شود.همانطور که ممکن است متوجه شده باشید، الگوریتم تکنیک  k Foldدسته­ای مشابه K-Folds استاندارد است. نیازی به کدنویسی اضافی نیست زیرا این روش همه کارهای لازم را برای شما انجام می دهد.k-Fold دسته­ای همچنین یک متد داخلی در sklearn دارد  یعنی:sklearn.model_selection.StratifiedKFold.import numpy as npfrom sklearn.model_selection import StratifiedKFoldX = np.array([[1, 2], [3, 4], [1, 2], [3, 4]])y = np.array([0, 0, 1, 1])skf = StratifiedKFold(n_splits=2)for train_index, test_index in skf.split(X, y):print(&amp;quotTRAIN:&amp;quot, train_index, &amp;quotTEST:&amp;quot, test_index)X_train, X_test = X[train_index], X[test_index]y_train, y_test = y[train_index], y[test_index]تمام ویژگی­های ذکرشده روش­های Fold  برای تکنیک k-Fold دسته­ای صادق نیز است. هنگام انتخاب بین روش های مختلف  اعتبارسنجی، اطمینان حاصل شود که از روش مناسب استفاده می­شود. به عنوان مثال، در زمانی که مدل شما دچار مشکل تعادل در آموزش داده شده است، دلیل آن این است که از روشk-Fold  برای اعتبارسنجی مدلی که بر روی مجموعه داده استفاده شده است. برای جلوگیری از چنین مواردی همیشه باید یک تجزیه و تحلیل داده های اکتشافی مناسب روی داده ها انجام شود.k-Fold مکرراعتبارسنجی متقابل k-Fold  مکرر یا اعتبار سنجی به روش  زیرنمونه‌برداری تصادفی احتمالاً قوی‌ترین تکنیک اعتبارسنجی در این مقاله است که نوعی از k-Fold بوده اما در k-Folds  مکرر، k  بیانگر تعداد دسته­ها نیست، بلکه تعداد دفعاتی است که ما مدل را آموزش خواهیم داد.ایده کلی این است که در هر تکرار، نمونه‌هایی را به‌طور تصادفی از سرتاسر مجموعه داده به عنوان مجموعه تست انتخاب می‌کنیم. به عنوان مثال، اگر تصمیم بگیریم که 20درصد از مجموعه داده ها مجموعه تست باشند، 20 درصد نمونه به طور تصادفی انتخاب می شوند و 80 درصد بقیه به مجموعه تست تبدیل می شوند.الگوریتم تکنیک   k-Foldمکرر1. عدد k را انتخاب کنید برای اینکه مشخص شود چند بار مدل آموزش داده خواهد شد2. تعدادی نمونه را انتخاب کنید که مجموعه تست خواهد بود3. مجموعه داده را تقسیم کنید4. روی مجموعه آموزشی عمل یادگیری را انجام دهید. در هر تکرار اعتبارسنجی ، یک مدل جدید باید آموزش داده شود.5. در مجموعه تست ارزیابی کنید6. نتیجه اعتبارسنجی را ذخیره کنید7. مراحل 3 را 6 k بار تکرار کنید8. برای به دست آوردن امتیاز نهایی، میانگین نتایج در مرحله 6 را به دست آوردید.تکرار k-Fold مزایای واضحی نسبت به روش استاندارد K-Fold دارد. اولا، نسبت تقسیم آموزش/تست به تعداد تکرارها بستگی ندارد. دوم می توان نسبت های منحصر به فردی را برای هر تکرار تنظیم کرد. سوم، انتخاب تصادفی نمونه‌ها از مجموعه داده،  k-Fold مکرر را برای انتخاب قاطع تر سوق  می­دهد.با این حال، برخی از معایب وجود دارد. روش استاندارد k Fold تضمین می‌کند که مدل بر روی همه نمونه‌ها آزمایش می‌شود، در حالی که k-Fold مکرر بر اساس تصادفی‌سازی است که به این معنی است که برخی از نمونه‌ها ممکن است هرگز برای قرار گرفتن در مجموعه آزمایشی انتخاب نشوند. در همین حال برخی از نمونه ها ممکن است چندین بار انتخاب شوند.Sklearn به شما در پیاده سازی  اعتبارسنجیk Fold  مکرر کمک می کند. فقط ازsklearn.model_selection.RepeatedKFold استفاده کنید. در اجرای sklearn این تکنیک باید تعداد بسته­هایی که می خواهید داشته باشید (n_splits) و تعداد دفعاتی که تقسیم انجام می شود (n_repeats) را تنظیم کنید. این تضمین می کند که در هر تکرار بسته­های مختلفی خواهید داشت.import numpy as npfrom sklearn.model_selection import RepeatedKFoldX = np.array([[1, 2], [3, 4], [1, 2], [3, 4]])y = np.array([0, 0, 1, 1])rkf = RepeatedKFold(n_splits=2, n_repeats=2, random_state=42)for train_index, test_index in rkf.split(X):print(&amp;quotTRAIN:&amp;quot, train_index, &amp;quotTEST:&amp;quot, test_index)X_train, X_test = X[train_index], X[test_index]y_train, y_test = y[train_index], y[test_index]تو در تو K Foldبرخلاف سایر تکنیک‌های اعتبارسنجی که برای ارزیابی کیفیت یک الگوریتم طراحی شده‌اند، k-Foldتودرتو محبوب‌ترین راه برای تنظیم پارامترهای یک الگوریتم است.تصور کنید که ما یک پارامتر p داریم که معمولاً به الگوریتم پایه ای که ما در حال اعتبارسنجی آن هستیم بستگی دارد. به عنوان مثال، برای رگرسیون لجستیک، ممکن است این پارامتر جریمه باشد که برای تعیین نرم در جریمه استفاده می شود.الگوریتم تکنیک  k-Fold تودرتو:1. 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 بار تکرار کنید. بسته آموزشی را عوض کنید به گونه­ای که  بسته ازیابی تغییرکنداست. اکنون اندازه گیری 9 * 4 دارید7. از مرحله 2 این کار ار 10 بار تکرار کنید و از هر بسته به نوبت به عنوان بسته تست استفاده کنید.8. میانگین و انحراف معیار اندازه گیری ارزیابی را در 10 بسته تست ذخیره کنید.9. الگوریتمی بهترین عملکرد را دارد که بهترین میانگین را در بین عملکرد نمونه خارج شده در 10 بسته تست داشته باشد.این تکنیک از نظر محاسباتی گران است زیرا در طول مراحل 1 تا 10 تعداد زیادی مدل باید آموزش و ارزیابی شوند. با این حال، اعتبارسنجی  k Foldتودرتو معمولا مورد استفاده قرار می­گیرد و ممکن است در چندین کابرد یادگیری ماشین واقعاً مؤثر باشد.متأسفانه، هیچ روش داخلی درsklearn وجود ندارد که بتواند k-Fold  تودرتو را برای شما انجام دهد. این لحظه ای است که شما باید یا گوگل کنید و پیاده سازی شخصی را پیدا کنید یا خودتان آن را کدنویسی کنید.اعتبارسنجی متقابل کاملاعتبارسنجی متقابل کامل کم استفاده ترین تکنیک اعتبارسنجی است. ایده کلی این است که عدد k را که طول مجموعه آموزشی است را انتخاب می­کنیم و روی هر تقسیم ممکن که شامل k نمونه در مجموعه آموزشی است اعتبار سنجی می کنیم.مقدار آن تقسیم‌ها را می‌توان به صورت ?محاسبه کرد که n طول مجموعه داده است. اگر k بیش از 2 باشد، باید مدل خود را بارها آموزش دهیم که همانطور که قبلاً متوجه شدیم از نظر زمان و محاسبات گران قیمت است.به همین دلیل است که از اعتبارسنجی کامل یا در تحقیقات نظری استفاده می شود و یا مورد استفاده قرار می­گیرد که  فرمول مؤثری که به حداقل رساندن محاسبات وجود داشته باشد.الگوریتم اعتبار سنجی متقابل کامل:1. یک عدد k را انتخاب کنید - طول مجموعه آموزشی2. مجموعه داده را تقسیم کنید3. روی مجموعه آموزشی عمل یادگیری را انجام دهید کنید4. در مجموعه تسس ارزیابی کنید5. نتیجه اعتبارسنجی را ذخیره کنید6. مراحل 2 تا 5 ?را تکرار کنید7. برای به دست آوردن امتیاز نهایی، میانگین نتایج در مرحله 5 را به دست آوردیداعتبارسنجی متقابل در یادگیری ماشینیبیشتر تکنیک های اعتبارسنجی متقابل ذکر شده در بالا به طور گسترده در یادگیری ماشین استفاده می شود. مهم است که به خاطر داشته باشید که استفاده از تکنیک اعتبارسنجی مناسب ممکن است باعث  صرفه جویی شما در زمان شود و حتی به انتخاب بهترین مدل برای کار کمک کند.این بدان معناست که اولاً بهتر است همیشه مدل را اعتبارسنجی کنید و ثانیاً باید یک روش اعتبار سنجی مرتبط را انتخاب کنید. بنابراین، دانستن مزایا و معایب تکنیک‌های اعتبارسنجی متقابل حیاتی است.شایان ذکر است که اگر مدل را اعتبار سنجی کنید، همیشه باید راهنمای مدل را بررسی کنید زیرا برخی از الگوریتم‌های  یادگیری ماشین به عنوان مثال، CatBoost  روش‌های اعتبارسنجی خود را دارند. شما ممکن است آنها را مرتبط به وظیفه  برنامه یادگیری ماشین خود بیابید و از آنها به جای متدهایsklearn استفاده کنید.به طور کلی، همانطور که ممکن است متوجه شده باشید، بسیاری از تکنیک‌های اعتبارسنجی دارای روش‌های sklearn  هستند. به شدت توصیه می­شود که از آنها استفاده کنید زیرا این روش ها در زمان زیادی برای کارهای پیچیده­تر صرفه جویی می­کنند.اعتبارسنجی متقابل در یادگیری عمیقاعتبار سنجی متقاطع در یادگیری عمیق(DL) ممکن است کمی مشکل باشد زیرا اکثر تکنیک های اعتبارسنجی نیاز به آموزش مدل حداقل چند بار دارند.در یادگیری عمیق، معمولاً به دلیل هزینه‌های مرتبط با آموزش مدل‌های مختلف، از اعتبارسنجی اجتناب می‌شود. به جای انجام k-Fold یا سایر تکنیک‌های  اعتبارسنجی، ممکن است از یک زیرمجموعه تصادفی از داده‌های آموزشی خود به عنوان روش برگزاری برای اهداف اعتبارسنجی استفاده شود.به عنوان مثال، کتابخانه یادگیری عمیقKeras به شما امکان می دهد یکی از دو پارامتر را برای تابع fit که آموزش را انجام می دهد، ارسال کنید.validation_split درصدی از داده هایی که باید برای اعتبار سنجی نگهداری شوندvalidation_data  چند عدد از (X, y) که باید برای اعتبارسنجی استفاده شود. این پارامتر پارامترvalidation_split را نادیده می گیرد، به این معنی که شما می توانید تنها یکی از این پارامترها را در یک زمان استفاده کنید.همین رویکرد در آموزش های رسمی سایر فریمورک های DL مانند PyTorch و MxNet استفاده می شود. آنها همچنین پیشنهاد می کنند مجموعه داده را به سه بخش تقسیم کنید: آموزش، اعتبار سنجی و تست.آموزش – بخشی از مجموعه داده برای آموزشاعتبار سنجی - بخشی از مجموعه داده برای اعتبارسنجی در حین آموزشتست - بخشی از مجموعه داده برای اعتبار سنجی نهایی مدلبا این حال، اگر مجموعه داده کوچک است (شامل صدها نمونه) می توانید از اعتبارسنجی متقابل در وظایف یادگیری عمیق استفاده کنید. در این مورد، یادگیری یک مدل پیچیده ممکن است یک کار بی ربط باشد، بنابراین مطمئن شوید که کار را بیشتر پیچیده نکنید.بهترین روش ها و نکاتشایان ذکر است که گاهی اوقات انجام اعتبارسنجی متقابل ممکن است کمی مشکل باشد.به عنوان مثال، اشتباه منطقی هنگام تقسیم مجموعه داده به سادگی صورت می­گیرد که ممکن است منجر به یک اعتبارسنجی غیرقابل اعتماد شود.نکاتی را که باید هنگام اعتبارسنجی متقابل یک مدل مد نظر داشته باشید شامل موارد:· هنگام تقسیم داده ها منطقی عمل کنید (آیا روش تقسیم منطقی است)· از روش اعتبارسنجی مناسب استفاده کنید (آیا این روش برای مورد استفاده من قابل اجرا است)· هنگام کار با سری های زمانی، گذشته را ارزیابی نکنید و مد نظر قرار ندهید(به اولین نکته مراجعه کنید)· هنگام کار با داده های پزشکی یا مالی، به یاد داشته باشید که شخصا تقسیم­بندی کنید. از قرار دادن داده یک نفر هم در آموزش و هم در مجموعه تست خودداری کنید زیرا ممکن است به عنوان داده لو رفته در نظر گرفته شود· هنگام برش تکه‌ها از تصاویر بزرگ‌تر، به یاد داشته باشید که شناسه تصویر بزرگ را نیز تقسیم کنید.البته، نکات از کاری به کار دیگر متفاوت است و پوشش همه آنها تقریبا غیرممکن است. به همین دلیل است که انجام یک تجزیه و تحلیل داده های اکتشافی جامد قبل از شروع اعتبارسنجی متقابل یک مدل همیشه بهترین روش و کار است.سخن آخراعتبار سنجی متقابل ابزار قدرتمندی است. هر کارشناس داده باید با آن آشنا باشد. در واقعیت، شما نمی توانید پروژه را بدون اعتبارسنجی متقابل یک مدل به پایان برسانید.به نظر من بهترین تکنیک های اعتبارسنجیk-Fold  تودرتو و k-Fold استاندارد هستند. شخصاً از آنها در وظیفه تشخیص تقلب استفاده کردم. K-Fold  تودرتو و همچنین GridSeachCV به من کمک کردند تا پارامترهای مدل خود را تنظیم کنم. از طرف دیگر، k-Fold  برای ارزیابی عملکرد مدل من استفاده شد.در این مقاله، ما متوجه شدیم که اعتبار سنجی متقابل چیست، چه تکنیک های اعتبارسنجی وجود دارد، و چگونه آنها را پیاده سازی کنیم. در آینده الگوریتم های یادگیری ماشین قطعاً حتی بهتر از امروز عمل خواهند کرد. با این حال، اعتبار سنجی متقابل همیشه برای پشتیبان­گیری از نتایج مورد نیاز است.امیدواریم با این اطلاعات، مشکلی در تنظیم CV برای پروژه بعدی یادگیری ماشین خود نداشته باشید!منابعhttps://neptune.ai/blog/cross-validation-in-machine-learning-how-to-do-it-righthttps://www.geeksforgeeks.org/cross-validation-machine-learning/https://machinelearningmastery.com/k-fold-cross-validation/https://towardsdatascience.com/cross-validation-in-machine-learning-72924a69872fhttps://towardsdatascience.com/why-and-how-to-do-cross-validation-for-machine-learning-d5bd7e60c189https://scikit-learn.org/stable/modules/cross_validation.html</description>
                <category>حسن جوانمرد</category>
                <author>حسن جوانمرد</author>
                <pubDate>Wed, 15 Dec 2021 12:44:35 +0330</pubDate>
            </item>
            </channel>
</rss>