Я б дав поради:
Вичерпайте можливості лінійних моделей (наприклад, логістична регресія) перед тим, як перейти до нейронних мереж, особливо якщо у вас багато особливостей і не надто багато спостережень. Для багатьох проблем Neural Net не виконує прості лінійні класифікатори, і єдиний спосіб дізнатися, чи є ваша проблема в цій категорії, - це спробувати її і побачити.
Спершу вивчіть методи ядра (наприклад, Підтримка векторних машин (SVM), логістична регресія ядра), моделі спочатку Гаусса. В обох випадках надмірне пристосування ефективно контролюється за допомогою налаштування невеликої кількості гіперпараметрів. Для ядерних методів це часто виконується за допомогою перехресної перевірки, для моделей Гаусса процес виконується шляхом максимізації граничної ймовірності (також відомий як байєсівський "доказ" для моделі). Я виявив, що набагато простіше отримати розумну модель за допомогою цих методів, ніж з нейронними мережами, оскільки засоби уникнення перенапруги набагато простіші.
Якщо ви дійсно хочете використовувати нейронну мережу, починайте з (регульованої) радіальної базової мережі, а не з підсилювальної багатошарової перцептронової мережі (MLP).
Якщо ви використовуєте MLP, то використовуйте регуляризацію. Якщо ви зробите це, він буде менш чутливим до варіантів архітектури, таких як оптимізація кількості прихованих одиниць. Натомість все, що вам потрібно зробити, - це вибрати хороше значення для параметра регуляризації. Байєсівський "доказовий фреймворк" Маккея забезпечує хороший метод встановлення параметра регуляризації. Якщо ви використовуєте регуляризацію, то кількість спостережень і кількість змінних стає набагато меншим питанням.
Щоб виявити перевиконання, просто виконайте перехресну перевірку, щоб перевірити продуктивність узагальнення.
Що стосується класів, що мають однакові частоти, то слід пам’ятати, що якщо ви тренуєте модель з збалансованим навчальним набором, але класи не врівноважені в оперативних даних, то, швидше за все, модель мало б прогнозувала клас меншості. Якщо ви використовуєте імовірнісний класифікатор, такий як логістична регресія або нейронна мережа, ви завжди можете виправити передбачувані ймовірності, щоб врахувати це після навчання. Якщо ваш набір даних дуже незбалансований, я рекомендую диференційоване зважування шаблонів із позитивних та негативних класів із коефіцієнтами зважування, обраними шляхом перехресної перевірки.
Однак, коли класи дуже незбалансовані, зазвичай буває, що помилково-негативні та хибнопозитивні помилки мають різницю у витратах (наприклад, у медичних скринінгових тестах помилковонегативний значно гірший, ніж хибнопозитивний). Тому часто все, що вам потрібно зробити, це включити витрати на помилкову класифікацію у функцію помилок, яка використовується для навчання мережі.
Якщо ви користувач MATLAB (як я), я настійно рекомендую програмне забезпечення NETLAB (Ian Nabney та Chris Bishop) або програмне забезпечення, яке входить до книги Гауссового процесу для машинного навчання Расмуссена та Вільямса. Я ще можу настійно рекомендувати книгу "Нейронні мережі для розпізнавання образів" Кріса Бішопа для всіх, хто починає роботу з нейронних мереж. Це блискуча книга, яка охоплює матеріал з великою чіткістю та мінімальним рівнем математики, необхідної для того, щоб зрозуміти, що ви робите, і більшість із них реалізовані в програмному забезпеченні NETLAB (яке також може працювати під Octave).
HTH
PS Найкращий спосіб моделювання нейронної сітки - це, ймовірно, використання байєсівського підходу на основі гібридного Монте-Карло (HMC), розробленого Радфордом Нілом. Взагалі проблеми починаються з моделювання, коли ви намагаєтеся оптимізувати деякі параметри, і в кінцевому підсумку ви переоцінюєтесь. Найкраще рішення - ніколи нічого не оптимізувати, а замість цього маргіналізувати (інтегрувати) параметри. На жаль, ця інтеграція не може бути здійснена аналітично, тому вам потрібно використовувати підходи на основі вибірки. Однак це (а) обчислювально дорого та (б) трохи "чорне мистецтво" і вимагає глибокого розуміння та досвіду.