Правило большого пальца (Rule of Thumb)
Правило большого пальца (эмпирическое правило диапазона) – это удобный метод оценки диапазона по Стандартному отклонению (Standard Deviation). Это говорит нам о том, что диапазон обычно примерно в четыре раза превышает стандартное отклонение.
Итак, если ваше стандартное отклонение равно 2, вы можете предположить, что ваш диапазон составляет около восьми.
Используя эмпирическое правило диапазона, также можно оценить стандартное отклонение. Просто разделите диапазон на четыре.
Эмпирическое правило диапазона лучше всего работает для данных из Нормального распределения (Normal Distribution), где размер выборки близок к тридцати. Для выборок, которые либо намного меньше, либо намного больше тридцати, либо не соответствуют нормальному распределению, это может быть очень плохой догадкой.
Правило предполагает, что большинство значений находится в области, охватываемой четырьмя стандартными отклонениями, то есть в пределах двух стандартных отклонений выше или ниже среднего. Это позволяет нам определять необычные значения как те, которые не попадают в этот диапазон. Мы называем максимальное обычное значение средним значением плюс два стандартных отклонения, а минимальное обычное значение – средним минус два стандартных отклонения.
Правило большого пальца в Глубоком обучении
В контексте Машинного обучения (ML) правилами большого пальца называют параметры Модели (Model), принятые по умолчанию:
- Количество Слоев (Layer): начните с двух скрытых слоев (исключая последний).
- Количество узлов промежуточных слоев: число в геометрической прогрессии: 2, 4, 8, 16, 32 и т.д. Первый слой должен составлять примерно половину числа объектов входных данных. Размер следующего слоя – половина предыдущего.
- Количество узлов (размер) выходного слоя для классификации: при Двоичной классификации (Binary Classification) размер равен единице. Для Мультиклассовой классификации (Multi-Class Classification) размер – это количество классов.
- Размер выходного слоя для Регрессии (Regression): если ответ один, то размер тоже. Для регрессии с несколькими ответами размер – это количество ответов.
- Активация для промежуточных слоев: используйте активацию
relu
. - Активация для выходного слоя: используйте Сигмоид (Sigmoid) для двоичной классификации, Softmax для мультиклассового классификатора и линейный для регрессии.
- Выпадающие слои (Dropout Layer): добавляйте выпадающие слои после каждого слоя, кроме входного (определяется отдельно). Установите коэффициент отсева на 0,5. Показатель отсева > 0,5 контрпродуктивен. Если мы считаем, что коэффициент 0,5 регулирует слишком много узлов, увеличим размер слоя вместо того, чтобы уменьшать частоту выпадения до менее 0,5. Если вы чувствуете себя обязанным это сделать, установите коэффициент отсева <0,2.
- Предварительная обработка данных: предполагается, что наши Предикторы (Predictor) X являются числовыми, и мы уже преобразовали любые категориальные столбцы в однократное Горячее кодирование (One-Hot Encoding). Перед использованием данных для обучения модели выполните масштабирование данных. UseMinMaxScaler из
sklearn.preprocessing
. Если это не работает, добавьте StandardScaler в ту же библиотеку. Масштабирование необходимо для y в регрессии. - Разделение данные для обучения, проверки, валидации: используйте train_test_split из sklearn.model_selection. См. Пример ниже.
- Веса (Weights) классов: если у нас несбалансированные данные, установим веса классов, чтобы сбалансировать потери в вашей модели .fit. Для двоичного классификатора веса должны быть: {0: количество единиц / размер данных, 1: количество нулей / размер данных}. Для крайне несбалансированных данных (редкие события) вес класса может не работать. Будьте осторожны, добавляя его.
- Оптимизатор: используйте
adam
со скоростью обучения по умолчанию. - Потеря классификации: для двоичной классификации используйте binary_crossentropy. Для мультиклассовой классификации используйте
categorical_crossentropy
, если метки имеют горячее кодирование, в противном случае используйтеsparse_categorical_crossentropy
, если метки являются целыми числами. - Потеря регрессии: используйте Среднеквадратическая ошибку (MSE).
- Метрики для классификации: используйте точность, которая показывает процент правильных классификаций. Для несбалансированных данных также включайте
tf.keras.metrics.Recall()
иtf.keras.metrics.FalsePositives()
. - Метрика регрессии: используйте
tf.keras.metrics.RootMeanSquaredError()
. - Эпохи (Epoch): начните с 20, чтобы увидеть, показывает ли обучение модели уменьшение потерь и повышение точности. Если нет минимального успеха с 20 эпохами, двигайтесь дальше. Если вы добились минимального успеха, сделайте число эпох, равное 100.
- Размер Пакета (Batch): выберите размер пакета из геометрической прогрессии 2, 4, 8 и т.д. Для несбалансированных наборов данных используйте бо́льшее значение, например 128, в противном случае начните с 16.
Фото: katya, Chitta Ranjan
Автор оригинальной статьи: Stephanie Glen