<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های Melika</title>
        <link>https://virgool.io/feed/@melika_sce</link>
        <description></description>
        <language>fa</language>
        <pubDate>2026-06-17 08:26:14</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/34286/avatar/DlyuRF.jpeg?height=120&amp;width=120</url>
            <title>Melika</title>
            <link>https://virgool.io/@melika_sce</link>
        </image>

                    <item>
                <title>هر آنچه باید درباره Cross validation در یادگیری ماشین بدانیم</title>
                <link>https://virgool.io/@melika_sce/%D9%87%D8%B1-%D8%A2%D9%86%DA%86%D9%87-%D8%A8%D8%A7%DB%8C%D8%AF-%D8%AF%D8%B1%D8%A8%D8%A7%D8%B1%D9%87-cross-validation-%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-%D8%A8%D8%AF%D8%A7%D9%86%DB%8C%D9%85-x11p51tnm2gt</link>
                <description>در یادگیری ماشین (ML) تعمیم پذیری معمولا به توانایی الگوریتم در موثر بودن هنگام دریافت ورودی های متنوع اشاره دارد، این بدان معنی است که مدل MLدر هنگام مواجه با ورودی های جدید با توزیع یکسان با داده های آموزشی با کاهش دقت مواجه نمیشود.برای انسان ها تعمیم دادن طبیعی ترین چیز ممکن است. به عنوان مثال، ما قطعاً میتوانیم یک سگ را تشخیص دهیم حتی اگر قبلاً سگی از آن نژاد را ندیده باشیم. با این وجود، ممکن است تعمیم دادن برای یک مدل ML یک چالش تمام عیار باشد. به همین دلیل است که بررسی توانایی الگوریتم برای تعمیم دادن یک کار مهم است وساخت چنین مدلی نیاز به توجه زیادی دارد.برای ایجاد تعمیم از cross validationیا به اختصار CV استفاده می کنیم.در این مقاله به موارد زیر خواهیم پرداخت:تعریف Cross validation و هدف استفاده از این تکنیکتکنیک های مختلف hold-out, k-folds, Leave-one-out, Leave-p-out, Stratified k-folds, Repeated k-folds, Nested k-folds, Complete CVنحوه استفاده از این تکنیک ها: sklearnاعتبار سنجی متقابل در یادگیری ماشینی:   sklearn, CatBoost اعتبار سنجی متقابل در یادگیری عمیق: Keras, PyTorch, MxNet بهترین شیوه ها و نکات: سری های زمانی، داده های پزشکی و مالی، تصاویرتعریف Cross validation (CV):اعتبار سنجی متقابل تکنیکی برای ارزیابی یک مدل یادگیری ماشین و آزمایش عملکرد آن است. CV معمولاً در کارهای کاربردی MLاستفاده می شود. CV کمک می کند تا مدل های مختلف را مقایسه و مناسب ترین را با توجه به مسئله پیش بینی خود انتخاب کنیم.درک CV آسان است، پیاده‌سازی آن آسان است و بایاس کمتری نسبت به سایر روش‌های مورد استفاده برای تخمین امتیاز کارایی مدل دارد. همه اینها اعتبارسنجی متقابل را به ابزاری قدرتمند برای انتخاب بهترین مدل برای کار خاص تبدیل می کند.تکنیک های مختلفی وجود دارد که ممکن است برای اعتبارسنجی متقابل یک مدل استفاده شود. با این حال، همه آنها یک الگوریتم مشابه دارند:1. تقسیم دیتاست به دو بخش آموزش و تست2. آموزش مدل با استفاده از داده های آموزشی3. ارزیابی مدل بر روی داده های تست4. تکرار چند باره مراحل 1 تا 3 (تعداد تکرار به شیوه  CV مورد استفاد ما بستگی دارد)همانطور که می دانید، تکنیک های CV زیادی وجود دارد. برخی از آنها به طور رایج استفاده می شوند، برخی دیگر فقط در کار های تئوری استفاده میشوند. بیایید روش‌های اعتبارسنجی متقابل را که در این مقاله پوشش داده خواهد شد، بررسی کنیم.· Hold-out· K-folds· Leave-one-out· Leave-p-out· Stratified K-folds· Repeated K-folds· Nested K-folds· Complete1.روش Hold-out: اعتبار سنجی متقابل Hold-out ساده ترین و رایج ترین تکنیک است. شاید ندانید که اسم آن روش hold-out است اما مطمئناً هر روز از آن استفاده می کنید.الگوریتم تکنیک hold-out:1. دیتاست را به دو بخش آموزش و تست تقسیم کنید، معمولا 80 درصد دیتاست برای آموزش و 20 درصد آن برای تست کنار گذاشته می شود، البته شما می توانید هر تقسیم بندی را انتخاب کنید که برای شما مناسب تر است2. مدل را با استفاده از داده های آموزشی(train)، آموزش می دهیم3. مدل را با داده های ارزیابی (validation) ، ارزیابی می کنیم4. نتایج validation را ذخیره می کنیمما معمولاً از روش hold-out براي ديتاست هاي بزرگ استفاده می‌کنیم، زیرا اين روش فقط یک بار نیاز به آموزش مدل دارد.اجراي hold-out بسيار آسان است، براي مثال ميتوانيد ازsklearn.model_selection.train_test_split  براي اين كار استفاده كنيد.با اين حال روش hold-out يك نقطه ضعف بزرگ داردبه عنوان مثال ميتوان به مجموعه داده ای که از نظر توزیع كاملا یکنواخت نیست اشاره كرد. در اين شرايط ممکن است پس از تقسیم در یک نقطه ناهموار قرار بگیریم. به عنوان مثال، مجموعه آموزشی مجموعه تست را نشان نخواهد داد. هر دو مجموعه تمرین و تست ممکن است بسیار متفاوت باشند و یکی از آنها ممکن است آسان تر یا سخت تر باشد. علاوه بر این، این حقيقت که ما مدل خود را فقط یک بار آزمایش می کنیم ممکن است یک گلوگاه برای این روش باشد.با توجه به دلایل ذکر شده در بالا، ممکن است نتیجه به دست آمده با تکنیک Hold-out نادرست در نظر گرفته شود.2. روش k-Fold: اين روش تكنيكي است كه معايب تكنيك hold-outرا كمينه مي كند، k-fold روش جديدي براي تقسيم ديتاست معرفي مي كند كه مشكل گلوگاه در تست يكباره را حل مي كند.الگوریتم تکنیک k-fold:1. تعداد kدسته را انتخاب کنید، معمولا k، 5 یا 10 است، اما می‌توانید هر عددی را انتخاب کنید که کمتر از طول دیتاست باشد.2. مجموعه داده را به kقسمت مساوی (در صورت امکان) تقسیم کنید (به آنها folds گفته می شود)3.در مرحله بعد k – 1 دسته (folds) را انتخاب کنید که همان مجموعه آموزشی ما خواهد بود. دیتای باقیمانده مجموعه آزمایشی  ما خواهد بود4. مدل را روی مجموعه آموزشی آموزش دهید. در هر تکرار cross validation، باید یک مدل جدید مستقل از مدل آموزش داده شده در تکرار قبلی آموزش دهید.5. روی دیتاست تست ارزیابی را انجام دهید6. نتیجه ارزیابی را ذخیره کنید7. مراحل 3 تا 6 را kبار تکرار کنید. هر بار از دسته های باقی مانده به عنوان مجموعه تست استفاده کنید. در پایان، شما باید مدل را روی هر دسته که دارید اعتبارسنجی کرده باشید.8. برای به دست آوردن امتیاز نهایی، میانگین نتایجی که در مرحله 6 به دست آوردید را محاسبه کنید.برای اجرای k-fold cross validation میتواند از sklearn.model_selection.KFold استفاده کنید.به طور کلی همیشه بهتر است به جای Hold-out از تکنیک k-Fold استفاده کنیم. از آنجایی که آموزش و تست بر روی چندین بخش مختلف مجموعه داده انجام می شود، در مقایسه دو روش، k-Fold نتیجه پایدارتر و قابل اعتمادتری ایجاد میکند. اگر تعداد fold را افزایش دهیم تا مدل را روی بسیاری از زیر مجموعه‌های مختلف داده آزمایش کنیم، می‌توانیم امتیاز نهایی را قوی‌تر کنیم.با این حال، روش k-Fold یک نقطه ضعف دارد. افزایش k منجر به آموزش مدل های بیشتر می شود و فرآیند آموزش ممکن است واقعاً گران و زمان بر باشد.3. روش  Leave-one-out cross validation :روش leave one out یا به اختصار LOOCV یک مورد شدید از K-Fold CVاست. تصور کنید که k برابر با n باشد که n تعداد نمونه های دیتاست است. چنین  k-Fold ای معادل تکنیک Leave-one-out خواهد بود.الگوریتم تکنیک LOOVCV:1. یک نمونه (sample) از دیتاست را به عنوان داده تست خود انتخاب کنید.2. در این مرحلهN-1 نمونه باقی مانده داده آموزش ما خواهد بود.3. مدل را روی مجموعه آموزشی آموزش دهید، در هر تکرار، یک مدل جدید باید آموزش داده شود4.  روی داده تست ارزیابی را انجام دهید5. نتیجه ارزیابی را ذخیره کنید6. مراحل1 تا 5، n  بار تکرار کنید (برای n نمونه، n  مجموعه آموزشی و تست متفاوت داریم)7. برای به دست آوردن امتیاز نهایی، میانگین نتایجی که در مرحله 5 به دست آوردید را محاسبه کنید.کتابخانه sklearnبرای روش LOOCV هم یک متود دارد که میتوانید آن را در model_selection، در بخش sklearn.model_selection.LeaveOneOutپیدا کنید.بزرگترین مزیت  Leave-one-out cross validation این است که داده زیادی را هدر نمی دهد. ما فقط از یک نمونه از کل مجموعه داده به عنوان مجموعه تست استفاده می کنیم، در حالی که بقیه نمونه ها متعلق به مجموعه آموزشی است. اما در مقایسه با k-Fold CV، LOOCV نیاز به ساخت nمدل به جای k مدل دارد، و ما می دانیم که n که مخفف تعداد نمونه در مجموعه داده ها است بسیار بیشتر از k است. این بدان معناست که LOOCV از نظر محاسباتی گرانتر از k-Fold است، ممکن است زمان زیادی طول بکشد تا اعتبار سنجی متقابل با استفاد از روش LOOCV انجام شود. همچنین، جامعه علوم داده یک قاعده کلی بر اساس شواهد تجربی و تحقیقات مختلف دارد که نشان می‌دهد اعتبارسنجی متقابل به روش k-fold با 5 یا 10 fold باید بر LOOCV ترجیح داده شود.4. روش Leave-p-out:   روش leave-p-out cross validation یا به اختصار LPOCV مشابه LOOCV است زیرا p نمونه را به عنوان مجموعه تست و باقی را به عنوان مجموعه آموزشی در نظر میگیرد، هر آنچه که برای LOOCV گفته شد برای LPOCV نیز صادق است. با این حال، شایان ذکر است که بر خلاف LOOCV و k-Fold ، در LPOCV اگر p بیشتر از 1 باشد مجموعه داده های تست همپوشانی خواهند داشت.الگوریتم تکنیک LPOCV:1. ابتدا P نمونه از دیتاست انتخاب کرده و به عنوان دیتاست تست در نظر میگیریم2.سپس N-p نمونه باقی مانده دیتاست آموزش خواهند بود3. مدل را روی مجموعه آموزشی آموزش دهید. در هر تکرار، یک مدل جدید باید آموزش داده شود4. روی مجموعه داده های تست مدل را ارزیابی کنید5. نتیجه ارزیابی را ذخیره کنید6. مراحل 2 تا 5 را به تعداد Cpnتکرار کنید7. برای بدست آوردن امتیاز نهایی میانگین نتایجی که در مرحله 5 بدست آوردید را محاسبه کنیدمیتوانید Leave-p-out CV را با استفاده از sklearn.model_selection.LeavePOut اجرا کنیدروش LPOCV  تمام معایب LOOCV را دارد، اما، با این وجود به اندازه LOOCV قوی است.5. روش Stratified k-Fold: گاهی ممکن است با عدم توازن زیادی در مقدار هدف در دیتاست مواجه شویم به عنوان مثال در دیتاست مربوط به قیمت ساعت‌های مچی، ممکن است تعداد بیشتری از ساعت‌های مچی قیمت بالایی داشته باشند یا در مورد مسائل classification، در مجموعه داده‌های گربه‌ و سگ‌ها ممکن است تغییر زیادی به سمت کلاس سگ ها وجود داشته باشد.تکنیک K-Fold طبقه بندی شده نوعی از تکنیک استاندارد K-Fold CV است که به گونه ای طراحی شده است که در چنین مواردی از عدم تعادل هدف تاثیر نپذیرد، این روش به صورت زیر عمل می کند:تکنیک k-fold طبقه بندی شده مجموعه داده را به k دسته تقسیم می کند به طوری که هر دسته تقریباً دارای درصد مشابهی از نمونه های هر کلاس هدف است. در مورد رگرسیون، Stratified k-Fold اطمینان حاصل می کند که میانگین مقدار هدف تقریباً در همه دسته ها برابر است.الگوریتم تکنیک stratified k-fold:1. یک عدد برای k انتخاب کنید2. دیتاست را به k دسته تقسیم کنید، هر دسته باید تقریباً دارای درصد مشابهی از نمونه‌های هر کلاس هدف باشد3.سپس K-1دسته را به عنوان دیتاست آموزشی انتخاب کنید و باقی مانده دیتا ها را به عنوان دیتاست تست در نظر بگیرید4. مدل را بر روی مجموعه داده های آموزشی، آموزش دهید5. روی مجموعه داده های تست مدل را ارزیابی کنید6. نتیجه ارزیابی را ذخیره کنید7. مراحل 3 تا 6 را k بار تکرار کنید، هر بار از دسته باقی مانده به عنوان مجموعه تست استفاده کنید8.  در پایان، شما باید مدل را روی هر دسته ای که دارید اعتبارسنجی کرده باشید9. برای به دست آوردن امتیاز نهایی، میانگین نتایجی که در مرحله 6 به دست آوردید را محاسبه کنیدهمانطور که ممکن است متوجه شده باشید، الگوریتم تکنیک Stratified k-Fold مشابه K-Folds استاندارد است و شما نیازی به کدنویسی اضافی ندارید زیرا این روش همه کارهای لازم را برای شما انجام می دهد.روش Stratified k-Fold هم یک متود در sklearn -  sklearn.model_selection.StratifiedKFold داردتمام موارد ذکر شده در بالا در مورد K-Fold CV برای تکنیک Stratified k-Fold نیز صادق است. هنگام انتخاب بین روش های مختلف CV، مطمئن شوید که از روش مناسب استفاده می کنید. به عنوان مثال، ممکن است فکر کنید که مدل شما عملکرد بدی دارد، فقط به این دلیل که از K-Fold CV برای اعتبارسنجی مدلی استفاده می‌کنید که روی مجموعه داده با عدم تعادل در کلاس ها آموزش داده شده است. برای جلوگیری از آن، همیشه باید یک تجزیه و تحلیل مناسب روی داده های خود انجام دهید.6. روش Repeated k-Fold:روش Repeated k-Fold cross-validation  یا  Repeated random sub-samplings CV احتمالا قوی ترین تکنیک CV در این مطلب است.  در این روش k تعداد دسته ها نیست بلکه تعداد دفعاتی است که ما مدل را آموزش میدهیم.ایده کلی این است که در هر تکرار، نمونه‌هایی را به‌طور تصادفی از سرتاسر مجموعه داده به عنوان مجموعه تست انتخاب می‌کنیم. به عنوان مثال، اگر تصمیم بگیریم که 20٪ از مجموعه داده ها مجموعه تست ما باشد، 20٪ نمونه به طور تصادفی انتخاب می شوند و 80٪ بقیه به مجموعه آموزشی تبدیل می شوند.الگوریتم تکنیک repeated k-fold:1.ابتدا K را انتخاب کنید (تعداد دفعاتی که مدل آموزش می بیند)2. تعدادی نمونه را به عنوان مجموعه آموزشی انتخاب کنید3. دیتاست را تقسیم کنید4. مدل را روی مجموعه داده های آموزشی، آموزش دهید، در هر تکرار اعتبارسنجی متقابل باید یک مدل جدید آموزش داده شود5. روی مجموعه داده های تست مدل را ارزیابی کنید6. نتیجه ارزیابی را ذخیره کنید7. مراحل 3 تا 6 را k مرتبه تکرار کنید8. برای بدست آوردن امتیاز نهایی میانگین نتایجی که در مرحله 6 به دست آوردید را محاسبه کنیدروش Repeated k-fold مزایای روشنی نسبت به k-fold استاندارد دارد، اولا، نسبت تقسیم داده تست و آموزش به تعداد تکرارها بستگی ندارد. ثانیا، ما حتی می توانیم نسبت های منحصر به فردی را برای هر تکرار تنظیم کنیم. ثالثاً، انتخاب تصادفی نمونه‌ها از مجموعه داده‌ها، Repeated k-Fold را برای سوگیری انتخاب قوی‌تر می‌کند.با این حال، برخی از معایب وجود دارد. k-Fold CV تضمین می‌کند که مدل روی همه نمونه‌ها آزمایش می‌شود، در حالی که repeated k-fold بر اساس تصادفی‌سازی است که به این معنی است که برخی از نمونه‌ها ممکن است هرگز برای قرار گرفتن در مجموعه آزمایش انتخاب نشوند و همزمان ممکن است برخی از نمونه ها چندین بار انتخاب شوند.کتابخانه Sklearn به شما در پیاده سازی Repeated k-Fold CV کمک می کند. فقط نیاز است از sklearn.model_selection.RepeatedKFold استفاده کنید. در اجرای sklearn این تکنیک باید تعداد دسته هایی که می خواهید داشته باشید (n_splits) و تعداد دفعاتی که تقسیم انجام می شود (n_repeats) را تنظیم کنید. بدین ترتیب تضمین میشود که در هر تکرار دسته های مختلفی خواهید داشت.7. روش Nested k-Fold: برخلاف سایر تکنیک‌های CV که برای ارزیابی کیفیت یک الگوریتم طراحی شده‌اند، Nested k-Fold CV محبوب‌ترین راه برای تنظیم پارامترهای یک الگوریتم است. تصور کنید که ما یک پارامتر p داریم که معمولاً به الگوریتم پایه ای که ما برای اعتبارسنجی متقابل انتخاب می کنیم بستگی دارد. به عنوان مثال، برای رگرسیون لجستیک، ممکن است پارامتر جریمه را انتخاب کنیم که برای تعیین norm مورد استفاده در جریمه استفاده می شود.الگوریتم تکنیک Nested k-Fold:1.ابتدا  K را انتخاب کنید (تعداد دسته ها، فرض کنید ما مقدار 10 را برای k در نظر گرفته ایم)2. پارامتر p را انتخاب کنید (فرض کنید الگوریتم ما logistic regression است و p پارامتر penalty و برابر باp = {‘l1’, ‘l2’, ‘elasticnet’, ‘none’} است)3. دیتاست را به 10 دسته تقسیم کنید و یکی از آن ها را به عنوان دیتا تست رزرو کنید4. یکی از دسته ها را به عنوان دیتا اعتبارسنجی (validation) رزرو کنید5. برای هر مقدار p روی 8 دسته آموزشی باقیمانده آموزش را انجام دهید و روی دسته اعتبارسنجی آن را ارزیابی کنید. اکنون 4 اندازه گیری دارید6. مراحل 4 تا 5 را 9 بار تکرار کنید. دسته آموزش و اعتبار سنجی را با هم عوض کنید، هم اکنون 9*4  اندازه گیری دارید7. حال P را طوری انتخاب کنید که میانگین خطای تمرین را بیش از 9 برابر به حداقل برساند. از آن p برای ارزیابی روی مجموعه تست استفاده کنید8. از مرحله 2، 10 بار مراحل را تکرار کنید و از هر دسته به نوبت به عنوان دسته تست استفاده کنید9. میانگین و انحراف معیار اندازه گیری شده روی 10 دسته تست را ذخیره کنید10. الگوریتمی که بهترین عملکرد را دارد، الگوریتمی بود که بهترین میانگین در میان این 10 دسته تست را داشتهاین تکنیک از نظر محاسباتی گران تمام میشود زیرا در طول مراحل 1 تا 10 تعداد زیادی مدل باید آموزش و ارزیابی شوند. با این حال، Nested k-Fold CVمعمولا استفاده می شود و حتی ممکن است در چندین کار یادگیری ماشین واقعاً مؤثر باشد.متأسفانه، هیچ متود تعریف شده ای در sklearn وجود ندارد که بتواند Nested k-Fold را برای شما انجام دهد. این همان لحظه ای است که مجبورید در گوگل درباره پیاده سازی آن توسط فردی دیگر سرچ کنید و یا خودتان شخصا آن را پیاده سازی کنید.8. روش Complete Cross-Validation:روش Complete Cross-Validation کم استفاده ترین تکنیک CV است. ایده کلی این روش این است که ما یک عدد k (طول مجموعه آموزشی) را انتخاب می کنیم و روی هر تقسیم ممکن حاوی k نمونه در مجموعه آموزشی اعتبار سنجی می کنیم. مقدار آن تقسیم‌ها را می‌توان به صورت Cnk محاسبه کرد که nطول مجموعه داده است. اگر k بالاتر از 2 باشد، باید مدل خود را چندین بار آموزش دهیم و همانطور که قبلاً متوجه شدیم یک فرایند گران قیمت و با محاسباتی زیاد است.به همین دلیل است که Complete Cross-Validation در تحقیقات نظری و یا در صورت وجود فرمول موثری که به حداقل رساندن محاسبات کمک کند، استفاده می شود.الگوریتم تکنیک Complete Cross-Validation:1. ابتدا K را انتخاب کنید (طول داده اموزشی)2. دیتاست را تقسیم کنید3. روی مجموعه آموزشی، مدل را آموزش دهید4. روی مجموعه داده های تست مدل را ارزیابی کنید5. نتیجه ارزیابی را ذخیره کنید6. مراحل 2 تا 5 را به تعداد Cnk تکرار کنید7. برای به دست آوردن امتیاز نهایی، میانگین نتایجی که در مرحله 5 به دست آوردید را محاسبه کنیداستفاده از Cross-validation در يادگيري ماشين:بیشتر تکنیک های اعتبار سنجی متقابل ذکر شده در بالا به طور گسترده در يادگيري ماشين استفاده می شوند. مهم است که بدانيد استفاده از تکنیک مناسب CV ميتواند در زمان شما صرفه جویی کند و به انتخاب بهترین مدل برای کار کمک کند. این بدان معناست که اولاً، بهتر است همیشه مدل را اعتبار سنجي متقابل کنید و ثانیاً باید یک روش CV را انتخاب کنید. بنابراین، دانستن مزایا و معایب تکنیک‌های اعتبارسنجی متقابل حیاتی است.شایان ذکر است که اگر می‌خواهید مدل را اعتبارسنجي متقابل کنید، همیشه باید دفترچه راهنمای مدل را بررسی کنید زیرا برخی از الگوریتم‌های ML، به عنوان مثال، CatBoost روش‌های CV داخلی خود را دارند. ممکن است آنها را مربوط به وظیفه ML خود بیابید و به جای روش های داخلی sklearn از آنها استفاده کنید.به طور کلی، همانطور که ممکن است متوجه شده باشید، بسیاری از تکنیک‌های CV دارای متود هايي در sklearn هستند. من به شدت توصیه می کنم از آنها استفاده کنید زیرا این روش ها برای کارهای پیچیده تر زمان زیادی را صرفه جویی می کنند.استفاده از Cross-validation در يادگيري عميق:اعتبار سنجی متقابل در یادگیری عمیق (DL) ممکن است کمی مشکل باشد زیرا اکثر تکنیک های CV حداقل چند بار نیاز به آموزش مدل دارند.در یادگیری عمیق، معمولاً به دلیل هزینه‌های مرتبط با آموزش مدل‌های مختلف، از CV اجتناب کنید. به جای انجام k-Fold یا سایر تکنیک های CV، ممکن است از یک زیرمجموعه تصادفی از داده های آموزشی خود به عنوان نگهدارنده برای اهداف اعتبار سنجی استفاده کنید.به عنوان مثال، کتابخانه یادگیری عمیق Keras به شما امکان می دهد یکی از دو پارامتر را برای تابع fit که آموزش را انجام می دهد، ارسال کنید.1.  validation_split: درصدی از داده هایی که باید برای اعتبار سنجی نگهداری شوند2.  validation_data: تاپلی از (X, y) که باید برای اعتبارسنجی استفاده شود. این پارامتر validation_split را override میکند، به این معنی که شما می توانید تنها یکی از این پارامترها را در یک زمان استفاده کنید.همین رویکرد در آموزش های رسمی سایر فریمورک های DLمانند PyTorch و MxNet استفاده می شود. همچنین در این آموزش ها پیشنهاد می شود که مجموعه داده را به سه بخش تقسیم کنید: آموزش، اعتبار سنجی و آزمایش.(train-validation-test)1. آموزش – بخشی از مجموعه داده برای آموزش2. اعتبار سنجی - بخشی از مجموعه داده برای اعتبارسنجی در حین آموزش3. تست - بخشی از مجموعه داده برای اعتبار سنجی نهایی مدلبا این حال، اگر مجموعه داده کوچک است (شامل صدها نمونه) می توانید از اعتبارسنجی متقابل در وظایف DL استفاده کنید. در این مورد، یادگیری یک مدل پیچیده ممکن است یک کار بی ربط باشد، بنابراین مطمئن شوید که کار را بیشتر پیچیده نکنید.بهترین روش ها و نکات:شایان ذکر است که گاهی اوقات انجام اعتبارسنجی متقابل ممکن است کمی مشکل باشد. به عنوان مثال، اشتباه منطقی هنگام تقسیم مجموعه داده بسیار آسان است که ممکن است منجر به یک CV غیرقابل اعتماد شود.نکاتی که ممکن است برای انجام cross-validation مفید باشد در ادامه آورده شده است:1. هنگام تقسیم داده ها منطقی باشید (آیا روش تقسیم منطقی است)2. از روش CV مناسب استفاده کنید (آیا این روش برای مورد استفاده من قابل اجرا است)3. هنگام کار با سری های زمانی، گذشته را تأیید نکنید (به اولین نکته مراجعه کنید)4. هنگام کار با داده های پزشکی یا مالی، به یاد داشته باشید که به صورت شخصی تقسیم کنید. از داشتن داده برای یک نفر هم در آموزش و هم در مجموعه تست خودداری کنید زیرا ممکن است به عنوان نشت داده در نظر گرفته شود5. به یاد داشته باشید هنگام برش تصاویر بزرگ‌تر به تکه های کوچک تر، شناسه ی تکه های کوچکتر همان شناسه تصویر بزرگ تر استالبته نکات از کابرد به کاربرد متفاوت است و پوشش همه آنها تقریبا غیرممکن است. به همین دلیل بهترین روش انجام یک تجزیه و تحلیل کامل بر روی داده ها  قبل از شروع اعتبارسنجی است.جمع بندی:اعتبار سنجی متقابل ابزار قدرتمندی است. هر دانشمند داده باید با آن آشنا باشد. در زندگی واقعی، شما نمی توانید پروژه ای را بدون cross-validation بر روی یک مدل به پایان برسانید.به نظر من بهترین تکنیک های CV، Nested k-Fold و k-Fold استاندارد هستند. من شخصاً از آنها در پروژه تشخیص تقلب استفاده کردم. K-Fold تودرتو و همچنین GridSeachCV به من کمک کرد تا پارامترهای مدل خود را تنظیم کنم. از طرف دیگر، k-Fold برای ارزیابی عملکرد مدل من استفاده شد.در این مقاله، ما متوجه شدیم که اعتبارسنجی متقابل چیست، چه تکنیک‌های CV در طبیعت وجود دارد و چگونه آنها را پیاده‌سازی کنیم. در آینده قطعاً الگوریتم های ML حتی بهتر از امروز عمل خواهند کرد. با این حال، اعتبار سنجی متقابل همیشه برای پشتیبان گیری از نتایج شما مورد نیاز است.امیدواریم با این اطلاعات، مشکلی در تنظیم CV برای پروژه بعدی یادگیری ماشینی خود نخواهید داشت!منابع:https://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>Melika</category>
                <author>Melika</author>
                <pubDate>Tue, 14 Dec 2021 17:23:45 +0330</pubDate>
            </item>
                    <item>
                <title>دروازه ورود به یادگیری ماشین</title>
                <link>https://virgool.io/@melika_sce/%D8%AF%D8%B1%D9%88%D8%A7%D8%B2%D9%87-%D9%88%D8%B1%D9%88%D8%AF-%D8%A8%D9%87-%DB%8C%D8%A7%D8%AF%DA%AF%DB%8C%D8%B1%DB%8C-%D9%85%D8%A7%D8%B4%DB%8C%D9%86-hkxgwbu9dpn4</link>
                <description>فرآیند اندیشه، تفکر و طرز کار مغز از گذشته‌های بسیار دور مورد توجه فیلسوفان و دانشمندان در همه جای جهان بوده‌است و یونانیان در این امر پیشتاز و به دنبال ساخت یک مغز مکانیکی بودند، در ادامه ریاضی دانان نیز سعی در منطقی کردن فرآیند تفکر با استفاده از علائم ریاضی بودند. اما تولد هوش مصنوعی به سال 1950 و با مقاله معروف آلن تورینگ برمیگردد او یکی از تاثیرگذارترین افراد در حوزه هوش مصنوعی است و همچنین تست تورینگ را پیشنهاد داد که معیاری برای تشخیص هوشمندی ماشین است. یکی از اولین پروژه‌های عملی هوش مصنوعی، ایده گرفتن از مفهوم شبکه عصبی و نورون‌ها بود. که در سال 1950 در دانشگاه هاروارد انجام شد و اولین شبکه عصبی شامل 40 نورون ساخته شد (نورون‌ها واحد‌هایی یک‌شکل در مغز هستند که پیام‌های عصبی را منتقل می‌کنند)هوشمندی را از دو منظر می‌توان مورد بررسی قرار داد، از منظر اول هوشمندی یا در رفتار است یا در تفکر و از منظر دوم هوشمندی در انسان‌گونه بودن یا در منطقی بودن (rationality) است. اگر همه حالات را در نظر بگیریم به چهار تعریف زیر برای هوش مصنوعی میرسیم:منطقی فکر کند.منطقی رفتار کند.مانند انسان فکر کند.مانند انسان رفتار کند.بعد از انتخاب هوشمندی مورد نظر قدم بعدی ساخت عامل هوشمند است که می تواند سخت افزاری یا نرم افزاری باشد و بر حسب محیطی که عامل قرار است در آن مورد استفاده قرار گیرد، می‌تواند دارای اجزای مختلفی باشد. برای مثال، عاملی که با انسان در ارتباط است باید توانایی دریافت و درک زبان طبیعی را داشته باشد و عامل فیزیکی ممکن است نیازمند بازوهای حرکتی برای انجام اعمال انتخابی باشد.هم‌اکنون هوش مصنوعی حوزه‌های بسیاری را شامل می‌شود و همچنان در حال بزرگ‌تر شدن است. امروزه هر برنامه‌ای که هوشمندی داشته باشد یا به نوعی رفتار انسان را تقلید کند، به عنوان هوش مصنوعی پذیرفته می‌شود. یادگیری ماشین بعد از هوش مصنوعی موضوعیت پیدا کرد و آن را می‌توان زیر مجموعه ای از هوش مصنوعی در نظر گرفت.یکی از مهم‌ترین ویژگی‌های یادگیری ماشین، یادگیری با استفاده از داده و بدون استفاده از دستورات مستقیم است. در انواع دیگر هوش مصنوعی ممکن است شاهد نوعی از هوشمندی باشیم که از داده‌ها استفاده نمی‌کند. ویژگی دیگر یادگیری ماشین، تغییر خود با دیدن داده‌های جدید است؛ یعنی همانند انسان با کسب تجربیات جدید رفتار خود را تغییر می‌دهد.طبق صحبت های دکتر فروغی یکی از مسائلی که میتواند حاصل خوبی داشته باشد پیدا کردن مسائل عمیق هر حوزه و ایجاد ارتباط و پیشنهاد راه حل با توجه به دروس تئوری دانشگاه است به این صورت که فرد با دید پژوهشی مشکلات سیستم را حل کند.امروزه می توان در صنعت، دانشگاه، حوزه سلامت، اقتصاد و تجارت، کسب و کارها و ...، از یادگیری ماشین برای پیشبرد اهداف خود استفاده کرد،  زبان پایتون و Rاز محبوب‌ترین زبان‌های قابل استفاده برای یادگیری ماشین هستند و کتابخانه‌های بسیار قدرتمندی در این زبان‌ها برای رفع نیازهای علاقه‌مندان این حوزه در حال گسترش است.یکی از سایت های مفید در حوزه یادگیری ماشین سایت Kaggle است. بیشتر شهرت این سایت به دلیل مسابقاتی است که در آن برگزار می‌شود و ارزش جوايز آن بعضاً به چندصد هزار دلار می‌رسد، از ویژگی‌های دیگر سایت Kaggle می‌توان به داشتن آموزش‌هایی ابتدایی برای شروع کار با داده، دسترسی دادن به دیتاست‌های مختلف و قابلیت مشاهده کدها و تحلیل‌های دیگران برای آموزش بهتر یادگیری ماشین اشاره کرد. پلتفرم های دیگری نیز در کنار این وب‌سایت شروع به فعالیت و برگزاری مسابقات کرده‌اند که می‌توان به CodaLab ، Signate و DrivenData اشاره کرد.موقعیت‌های شغلی مرتبط با یادگیری ماشین:تحلیل‌گر داده (Data Analyst): اهمیت اطلاعات در عصر اطلاعات در حال افزایش است، تحلیل‌گر داده معماری مناسب برای جمع‌آوری اطلاعات یک سازمان را طراحی می‌کند و پایگاه داده مناسب برای كار روي داده خام را انتخاب می‌کند؛ بعد از جمع آوري داده ها و انجام عمليات مختلف اطلاعات مفيدي از داده ها استخراج مي كند، نتيجه فعاليت ‌های تحلیل‌گر داده می‌تواند گزارش‌های کلی یا روابط بین داده‌ها باشد.دانشمند داده (Data Scientist): دانشمند داده سطح بالاتری از تحلیلگر داده دارد و نیازمند دانش آماری و ریاضیاتی و برنامه‌نویسی قوی‌تری نسبت به تحلیلگر داده استمهندس داده (Data Engineer): مهندس داده با كلان داده ها كار مي كند و پس از انتخاب منابع داده، آنها را یکپارچه كرده و برای نگهداری بهینه آن‌ها برنامه‌ریزی می‌کند.مهندس یادگیری ماشین (Machine Learning Engineer): مهندس یادگیری ماشین در واقع نقطه تلاقی مهندسی نرم‌افزار و علم داده استطبق صحبت های مهندس ستوده، داشتن دانش کافی نسبت به موضوع مورد مطالعه از اهمیت بالایی برخوردار است.یادگیری ماشین در اکثر کاربردهای فعلی، یک برنامه کامپیوتری است که به داده دسترسی پیدا می‌کند و از آن برای آموزش خود استفاده می‌کند. آرتور ساموئل تعریف دیگری برای یادگیری ماشین ارائه داده است که عبارت است از: زمینه‌ای از تحقیقات که به کامپیوترها توانایی یادگیری بدون برنامه‌نویسی صریح را می‌دهد.داده‌ها عنصر محوری یادگیری ماشین هستند و ماشین‌ها از داده‌ها یاد می‌گیرند، به این صورت که ما داده‌ها را به عنوان ورودی به الگوریتم می‌دهیم تا خروجی مورد نیازمان را دریافت کنیم.انواع داده ها:کلمات: این نوع داده میتواند به صورت نوشتاری یا صوت در اختیار الگورتیم‌های کامپیوتری قرار بگیرد.تصاویر: غنی‌ترین منبع تجربه ما انسان‌ها از واقعیت را قوای بینایی‌مان در اختیارمان قرار داده است. از این رو توانایی استخراج اطلاعات از داخل تصاویر امکان فوق‌العاده‌ای را در اختیار یک عامل هوش مصنوعی می‌گذارد و هدف معمولاً تشخیص شیء یا اشیای موجود در تصاویر است.جداول: این نوع داده ساختارمند است و در بسیاری از سیستم‌های نرم‌افزاری یافت می‌شود. برای مثال یک بانک را در نظر بگیرید که نام و کدملی افراد، موجودی حساب‌های آن‌ها و ... را در جدولی نگهداری می‌کند. بانک می‌تواند با کمک یادگیری ماشین از روی این داده‌ها پیش‌بینی کند که درخواست وام یک مشتری را قبول یا رد کند، داده های جدولی میتوانند دسته ای یا عددی باشد.سری زمانی: در مورد بعضی از انواع داده، تغییرات آن و در نتیجه مقدار آن در طول زمان اهمیت ویژه‌ای دارد. ماشین می‌تواند با دیدن تغییرات ویژگی مشخصی از یک داده در طول زمان، الگوی تغییرات آن را یاد بگیرد و به مسائلی که برحسب زمان‌اند، مثل پیش‌بینی مقدار آن ویژگی در یک زمان مشخص پاسخ دهد.الگوریتم‌های یادگیری ماشین، مثل انسان با کمک تجربه یاد می‌گیرند. داده همان تجربه‌ای است که به عنوان ورودی به الگوریتم داده می‌شود.  تام میشل یادگیری ماشین را از دید مهندسی به این شکل تعریف کرده است: اگر کارایی برنامه در انجام تکلیف T که با سنجه P ارزیابی می‌شود، با تجربه E افزایش یابد، می‌گوییم که برنامه یاد گرفته است از تجربه E با توجه به تکلیف T و سنجه P استفاده کند. (تکلیف T همان مساله‌ای است که ما انتظار داریم بتوانیم با یادگیری ماشین حل کنیم، تجربه E همان نمونه های ما هستند و سنجه P عیاری برای بررسی و اندازه‌گیری میزان دقت الگوریتم ما می باشد.)انواع یادگیری ماشین:یادگیری بانظارت: در این نوع از یادگیری، نمونه‌هایی که برای آموزش الگوریتم استفاده می‌شوند، دارای برچسب هستند و مدل یادگیری‌ماشین با استفاده از داده‌هایی که از قبل برچسب مشخصی دارند، الگوهای اساسی را تا زمانی که به دقت رضایت‌بخشی برای ما برسد، پیدا می‌کند. الگوریتم‌های یادگیری نظارت‌شده، به دو دسته طبقه‌بندی (classification) و رگرسیون (regression) دسته‌بندی می‌شوند.یادگیری بی‌نظارت: تفاوت این نوع از یادگیری با یادگیری نظارت‌شده، تنها در نبودن برچسب‌ها است، الگوریتم‌های یادگیری نظارت‌شده، به سه دسته خوشه‌بندی (clustering)، کاهش ابعاد (dimensionality reduction) و استخراج قانون وابستگی (association rule mining) تقسیم‌بندی می‌شود.یادگیری تقویتی: این روش با ذهنیت آزمون و خطا کار می‌کند. عامل هوشمند طبق حالت جاری ، حرکتی انجام می‌دهد و بر اساس آن حرکت بازخورد دریافت می‌کند؛ این بازخورد ممکن است مثبت یا منفی (پاداش یا تنبیه) باشد و عامل با این بازخورد خط‌مشی خود را تغییر می‌دهد. (این روش از یادگیری نزدیک‌ترین حالت به یادگیری انسان است)پایتون یک زبان برنامه نویسی است و از زمان اختراعش تا امروز به عنوان یک زبان برنامه نویسی سطح بالا در توسعه‌ی برنامه‌های وب و موبایل و همچنین در آنالیز داده و محاسبات علمی به کار رفته است. برخلاف C و C++ که زبان‌های کامپایلری هستند، پایتون زبانی مفسری است. به غیر از پایتون زبان‌های دیگری مانند R، Scala، Julia، Matlab و SQL نیز برای علوم داده استفاده می‌شوند؛ اما پایتون به خصوص در صنعت از همه پر‌کاربرد‌تر است زیرا کتابخانه‌ها و ابزار‌هایی قوی و متعدد دارد، کد های پایتون قابل فهم است، جامعه توسعه‌دهندگان بزرگی دارد و چند پارادایمی است.پایتون و R دو زبان پرطرفدار در حوزه‌ی علم داده هستند. اشتراکات زیادی از جمله رایگان و متن باز بودن بین دو زبان وجود دارد. مستندات هر دو زبان با کمک کاربران نوشته‌ شده است و هر دو اجتماعات فعالی در اینترنت دارند. اما هرکدام برتری‌هایی نسبت به دیگری دارند: پایتون کتابخانه‌های متعدد و قوی‌ای دارد، تقریبا هر ۱۸ ماه یک بار نسخه‌ی جدید و با ثباتی از پایتون عرضه می‌شود، پایتون دارای نوشتار ساده است. R توانایی کشیدن نمودارهای با کیفیت و متنوعی را دارد، به سرعت در حال توسعه است و تقریبا برای همه‌ی تکنیک‌های آماری پکیج دارد. اما تفاوت اصلی میان این دو، کاربرد بیشتر پایتون در صنعت است. به صورتی که اکثر شرکت‌ها برای بخش production از پایتون استفاده می‌کنند و R بیشتر به استفاده‌های آکادمیک محدود شده است.پرکاربردترین کتابخانه‌های پایتون:نامپاي (Numpy): داده های در قالب های متفاوت در نهایت باید به شکل آرایه عددی در بیایند، با استفاده از نامپای، پردازش و محاسبات روی آرایه‌ها سریعتر انجام می‌شود. در نامپای اعضای یک آرایه همه از یک نوع می‌باشند و این ویژگی باعث می‌شود تا آرایه‌ها حجم کمتری در رم اشغال کنند. نامپای همچنین توابع بسیاری برای انجام انواع عملیات بر روی آرایه‌ها دارد که نسبت به توابع خود پایتون سریع‌تر اجرا می‌شوند.پانداس (Pandas): در پانداس ساختار اصلی داده به شکل دیتافریم (data frame) است که در واقع یک آرایه دو‌بعدی است که در آن سطر‌ها و ستون‌ها عنوان دارند. نامپای امکانات بسیاری در اختیار ما قرار می‌دهد که برای محاسبات سریع بر روی داده‌های جدولی می‌توان از آن استفاده کرد.مت پلات ليب (Matplotlib): ساخت نمودارهایی که بتوانند اطلاعات را به خوبی انتقال دهند یکی از مهمترین کارها در تحلیل داده است، این کتابخانه بیشتر در ساخت نمودارهای ۲ بعدی کاربرد دارد و رابط کاربری آن بسیار شبیه به متلب است. بسیاری از نمودار‌های پرکاربرد را می‌توان با مت‌پلات‌لیب ایجاد کرد و امکانات بسیاری برای شخصی‌سازی در آن گنجانده شده است.سايكت لرن (Scikit-learn): معروف‌ترین و پرکاربردترین کتابخانه یادگیری ماشین در پایتون می‌باشد، هدف از ساخت سایکت‌لرن تمرکز بر مدل‌سازی داده به جای دستکاری و مرتب‌سازی و خلاصه کردن داده می‌باشد.سایکت لرن واسط کاربری بسیار منسجمی دارد و کار با آن بسیار آسان است.علاوه بر موارد ذکر شده، کتابخانه‌های بسیار قدرتمند دیگری برای زمینه‌های دیگر کار با داده در پایتون وجود دارد. برای مصور سازی داده می‌توان از پلاتلی (Plotly) و سیبورن (Seaborn) هم استفاده کرد. برای امور یادگیری عمیق، پایتورچ (Pytorch) ، تنسورفلو (TensorFlow) و کراس (Keras) بیشتر مورد استفاده قرار می‌گیرند. برای پردازش متن nltk و اسپیسی (Spacy) کارایی بیشتری دارند و در زمینه پردازش عکس می‌توان از کتابخانه‌های اوپن سیوی (OpenCV) و سایکت ایمیج (scikit-image) نام برد.چالش های مربوط به داده:  تعداد ناکافی داده – داده بی کیفیتچالش های الگوریتمی:بيش برازش (Overfitting): اگر مدل داده هاي آموزش را زياد از حد بياموزد نميتواند عملكرد خوبي روي داده هاي دنياي واقعي (تست) داشته باشد و چنين مدلي عموميت خود را از دست داده استكم برازش (Underfitting): اگر مدل نتواند از داده هاي آموزش به خوبي ياد بگيرد دچار كم برازش شده است.مسئله زمان: فرایند آموزش مدل به زمان‌بر بودن معروف است. الگوریتم‌ها برای یادگیری زمان زیادی مصرف می‌کنند؛ بنابراین باید مدلی انتخاب کنیم که پیچیدگی زمانی خوبی داشته باشد.گام‌هایی که در یک پروژه یادگیری ماشین طی می‌شود:دریافت و بررسی دادهآماده‌سازی دادهانتخاب و آموزش مدل مناسبتست و ارزیابیامروزه شاهد پیشرفت‌های بزرگی در زمینه هوش مصنوعی هستیم اما همچنان با آنچه در فیلم‌ها و داستان‌ها از یک عامل هوشمند متصوریم که در انجام کارهای گوناگون از توانایی مشابه انسان برخوردار است فاصله داریم. عامل‌های هوشمندی که امروزه ساخته می‌شوند معمولا در حل یک مسئلهٔ خاص به هوشمندی رسیده‌اند.در ادامه تحولات شگفتی که برای هوش مصنوعی پیش‌بینی می‌شود، از نقطه‌ای نام برده می‌شود که هم با شکوه و هم دلهره برانگیز است و آن نقطه تکینگی فناوری (technological singularity) است. زمانی که پیشرفت تکنولوژی به نقطه‌ای غیرقابل کنترل و برگشت‌ناپذیر برسد که تمدن انسانی را تحت تاثیر قرار دهد. البته که تخمین‌هایی که دانشمندان درباره زمان تحقق هوش مصنوعی عمومی یا تکینگی فناوری داشته‌اند بعضا خوش‌بینانه بوده است. هربرت سایمون که از پیشگامان هوش مصنوعی به شمار می‌رود و هم برنده جایزه تورینگ و هم برنده نوبل اقتصاد است در سال ۱۹۶۵ نوشته بود: «تا بیست سال دیگر، ماشین‌ها قادر خواهند بود هر کاری که انسان انجام می‌دهد را انجام دهند». با این حال قابل ذکر است که بسیاری از صاحب نظران معتقدند تا سال‌های دهه ۲۰۴۰-۲۰۵۰ شاهد چنین تحولات شگرفی خواهیم بود.شركت هاي پيش رو در حوزه هوش مصنوعي: Deep mind - OpenAI- Facebook AI- Google AIمنبع: https://quera.ir/college/land/college/8522/</description>
                <category>Melika</category>
                <author>Melika</author>
                <pubDate>Mon, 22 Nov 2021 23:54:48 +0330</pubDate>
            </item>
            </channel>
</rss>