Оптимизация непрерывных элементов путем выбора правильного инструмента.
Что такое скейлер?
Средство масштабирования функций - это обучающий инструмент, который позволяет лучше обучать данные с помощью линейной алгебры. Некоторые целевые функции сильно зависят от них и фактически не будут работать должным образом без надлежащего масштабирования. При обработке данных масштабирование признаков также называется «нормализацией данных», и эта нормализация обычно выполняется на этапах обработки и очистки.
Масштабирующие устройства используются исключительно для непрерывных объектов, так как целью масштабатора является снижение дисперсии данных, чтобы большая часть прогнозов лежала в области с наибольшим объемом данных. Кроме того, использование скалеров определенно может повысить вашу точность.
Многие люди не осознают, сколько на самом деле существует скейлеров. Это связано с тем, что обычно скейлеры нормализации z-показателя являются наиболее эффективными. Раньше я использовал Rescaler для меньшей точности и масштабатор Unit Length для большей точности. Это еще раз демонстрирует, что иногда в Data Science
Это зависит от данных.
Средство для повторного масштабирования
Изменение масштаба или нормализация минимального и максимального значений использует минимальное и максимальное значения для масштабирования массива. Хотя это довольно круто, я не нашел в нем особой пользы для машинного обучения. Я бы сказал, проверяйте его только для информации и обучения, потому что этот скаляр обычно сбрасывает оценки и снижает точность моего опыта. В одной ситуации мне удалось использовать средство масштабирования в качестве фильтра минимума-максимума для вывода неверных данных на конечной точке. Хотя это, конечно, не прикрывает утраченную почву, я думаю, что это было определенно классное применение. Если вы хотите опробовать этот инструмент для масштабирования, его можно использовать в токарном станке!
using Lathe.preprocess: Rescalar ?(Rescalar) Rescalar scales a feature based on the minimum and maximum of the array. ──────────────────────────────────────────────────────────────────────────── array = [5,10,15] scaled_feature = Lathe.preprocess.Rescalar(array)
Чтобы масштабировать ваши функции, вам нужно сначала получить минимум и максимум x, а затем x будет вычтен на минимум в числителе, максимум минус минимум в знаменателе. А для тех, кто предпочитает видеть это в коде,
function Rescalar(array) min = minimum(array) max = maximum(array) v = [i = (i-min) / (max - min) for i in array] return(v) end
Средняя нормализация
Средняя нормализация - это именно то, на что это похоже, нормализация данных на основе среднего значения. Это, безусловно, может быть полезно, единственная проблема заключается в том, что обычно скаляр z-оценки намного лучше справляется с нормализацией данных, чем нормализатор среднего значения. К счастью, на токарном станке он тоже есть! Формула очень проста: x вычитается из среднего в числителе, максимум минус мин в знаменателе. Я не особо часто его использовал, так как обычно он дает более низкую оценку точности, чем стандартный скейлер. Независимо от того, полезен ли этот конкретный вариант,
вот код
function MeanNormalization(array) avg = Lathe.stats.mean(array) a = minimum(array) b = maximum(array) v = [i = (i-avg) / (b-a) for i in array] return(v) end
Произвольное изменение масштаба
Так что, возможно, вы знаете все о масштабировании, средней нормализации и стандартных масштабаторах, но, возможно, вы не слышали о произвольном масштабировании. В отличие от предыдущих, я нашел это весьма полезным. Произвольное масштабирование особенно полезно при небольшом разрыве квартилей, что означает, что медиана недалеко от минимального или максимального значений. И угадай что? Вот код и для этого!
function ArbitraryRescale(array) a = minimum(array) b = maximum(array) v = [x = a + ((i-a*i)*(b-a)) / (b-a) for x in array] return(v) end
Стандартный скалер
Ах да - старый добрый Standard Scaler. Стандартный масштабатор, также известный как нормализатор z-оценки, вероятно, лучший вариант для масштабирования непрерывных функций. Если вам когда-нибудь понадобится повышение точности, это способ сделать это. Я много использовал стандартные скейлеры, вероятно, каждый день я использую один в какой-то момент. Для меня стандартное масштабирование было наиболее полезным из всех скаляров, как и для большинства людей.
Линейная формула для стандартного скейлера также очень проста. Это так же просто, как вычесть среднее значение из итерации x, а затем разделить остаток на стандартное отклонение. Что касается кода, то он тоже довольно прост! :
function StandardScalar(array) q = Lathe.stats.std(array) avg = Lathe.stats.mean(array) v = [i = (i-avg) / q for i in array] return(v) end
Скалярная длина единицы
Другой вариант, который есть у нас в области машинного обучения, - это масштабирование до единичной длины. Масштабирование до единичной длины может дать результат, аналогичный нормализации z-показателя, и я определенно нашел его очень полезным. Формула довольно проста, хотя прямо сейчас в Lathe нет кодовой базы для ее поддержки ... Это потому, что скаляры единичной длины используют евклидово расстояние в знаменателе итерации x. Масштабирование общей длины может быть очень полезным для повышения точности вашей модели.
Заключение
Скаляры потрясающие. Повышение точности на пять-десять процентов может быть действительно полезным, когда вы просто запускаете функцию для изменения своей функции. Еще одним большим плюсом является то, что математика, лежащая в основе большинства скалеров, невероятно проста, что делает их еще более универсальными, учитывая, что вы даже можете делать их с помощью калькулятора.