Уважаеми непрекъснати скалери и прилагането им към машинно обучение

Въведение

Най-важният фактор във вашия модел винаги ще бъдат вашите данни. Данните, дадени на даден модел, в крайна сметка ще определят колко добре се представя този модел и следователно функциите са неразделна част от създаването на модел, който се представя наистина добре. Има няколко начина за подобряване на валидността на модела чрез коригиране на различни аспекти на данните. Има два различни типа функции, при които тези видове промени често са от полза, и това са категорични характеристики и непрекъснати характеристики. За категорични характеристики използваме енкодери. За непрекъснати характеристики използваме скалери. Въпреки че по някакъв начин те служат на различни цели, в крайна сметка като техники за предварителна обработка и двете се приписват на по-високия продукт на точност на валидиране. Прегледах енкодерите в миналото, така че днес ще поемем по обратната траектория. Ако искате да научите повече за енкодерите, имам и статия за това, която можете да прочетете тук:



Скалерите са невероятно важен инструмент за специалистите по данни. Тези скалери се използват върху данни, за да ги направят по-интерпретируеми от алгоритми за машинно обучение. Този тип математика може да ни помогне да правим обобщения и да правим заключения от данните много по-категорично. Вероятно най-известният от непрекъснатите скалери има много важно приложение както в статистиката, така и в машинното обучение и това е нормалният или стандартен скалер.

Стандартният скалер стандартизира нашите данни, като определя колко стандартни отклонения са нашите данни от средната стойност на съвкупността. За да демонстрираме това, ще наблюдаваме неговата формула и ще обясним как точно това подобрява способността ни да определяме количествено непрекъснатите характеристики. Ще се докоснем и до други непрекъснати скалери, както полезни за машинното обучение и науката, така и не толкова полезни.

Стандартният мащабер

Както споменах преди, стандартният скалер най-вероятно е най-известният скалер. По-скоро удобно, този скалер също е просто нормалното разпределение. Нормалното разпределение е идеално въведение и основополагащ принцип за инференциалната и гаусовата статистика, така че е много важно като учени да подчертаем важността и използването на този скалер. Ако искате да научите повече за нормалното разпределение, имам статия, която мисля, че го обяснява доста добре, която можете да прочетете тук:



Нека прегледаме накратко какво означава нормалното разпределение. Функцията на плътност на вероятността (PDF) за това разпределение се обозначава с:

x̄-µ / σ

Тоест, извадка минус средната стойност на популацията, разделена на стандартното отклонение на популацията. Изследвайки тази математика, ние намираме разликата между нашата извадка и средната стойност и след това виждаме колко стандартни отклонения могат да се поберат в нея. Ето защо нормалното разпределение е визуализация на стандартните отклонения от средната стойност. Като се има предвид, че по-голямата част от съвкупността е в центъра близо до средната стойност (ето защо тя е средната), това е причината да виждаме формата на парабола, често свързвана с разпределения и данни. Нашето стандартно отклонение дава параметъра за това колко разпръснати са нашите данни, а средната стойност осигурява средния брой за този параметър, който да се приложи към всяка проба.

Тази техника е доказано изключително ефективна в машинното обучение. В интерес на истината, повечето тръбопроводи, които използват непрекъснати данни като този, е много вероятно да включват тази форма на стандартизация. По същия начин, ако работите по проект, това вероятно е най-добрият инструмент за този вид работа. Ето просто писане на стандартен скалер в Julia:

function standard_scale(x::Vector{<:Number})
               σ = std(x)
               μ = mean(x)
               [i = (i-μ) / σ for i in x]::Vector{<:Number}
end

Устройство за измерване на дължина на единица

Скалер, който е много по-малко известен, е скалерът за единица дължина. Съжалявам за друга връзка, но има друг ресурс, който написах за скалери на единица дължина и машинно обучение за тези, които искат да научат повече:



Докато обикновено програмите за преразпределяне, произволно преразпределяне и нормализаторите на средни стойности се връщат назад към стандартизацията, скалерът за единица дължина стои сам по себе си в света на машинното обучение. Това работи, като разделя всеки елемент на евклидовата дължина на вектора.

Ето пример за този скалер в Julia:

function unitl_scale(data::AbstractVector)
    zeroes = [i = 0 for i in data]
    euclidlen = euclidian(zeroes, data)
    [i = i / euclidlen for i in data]
end

Средна нормализация

Нормализацията на средната стойност е друг инструмент за мащабиране, който има някои полезни приложения. Като цяло обаче има по-добри опции и това е скалер, който не съм виждал много използван от моя опит. Като се има предвид това, определено може да има моменти, когато този вид нормализация може да бъде полезна и да бъде подходящ избор пред средния стандартен скалер.

function mean_norm(array::Array{<:Number})
        avg = mean(array)
        b = minimum(array)
        a = maximum(array)
        [i = (i-avg) / (a-b) for i in array]
end

Докато нормализацията чрез нормалното разпределение включва определяне на броя на стандартните отклонения от средната стойност, нормализацията на средната стойност включва използване на формиране на скалата чрез изваждане на най-малката стойност в данните от най-голямата стойност. Всичко, което се заменя в тази формула, когато се сравнява със стандартния скалер, е, че стандартното отклонение се заменя с a — b.

Премащабиране

Премащабирането е една от по-простите опции и обикновено не се вижда в Data Science. Това не означава, че този скалер няма цел, но вместо това ролята в Data Science със сигурност е била доста минимална. Със сигурност би било интересно, ако имаше някои неизмерени употреби за този скалер, но за момента това със сигурност не е скалер, който използвам. Независимо от това, доста е страхотно да се види математиката зад някои от тези скалери, така че бих искал поне да напиша един. Ето пример за Rescaler, написан на julia:

function rescaler(x::Array{<:Any})
    min = minumum(x)
    max = maximum(x)
    [i = (i-min) / (max - min) for i in x]
end

Това вероятно е инструментът за мащабиране, който е най-малко вероятно да бъде приложен към Data Science. Като се има предвид това, никога не се знае; и това със сигурност все още е интересна формула, за която трябва да знаете. За щастие, те също са доста прости математически, като само минимумът и максимумът са необходими за мащабиране на данните.

Заключителни мисли

Мащабирането на данни е основен градивен елемент на статистически принципи и определено е много важно нещо, с което трябва да се запознаете за всеки, който може да иска да се аклиматизира с Data Science. Лесно е да попаднете в капана просто да използвате стандартния скалер за всяко приложение и никога да не изследвате другите налични инструменти. Това със сигурност е разумно, тъй като често стандартният скалер ще бъде най-добрият инструмент за работата. Въпреки това бих казал, че със сигурност има много смисъл да се направи известно проучване на този фронт.

Овладяването на тези различни скалери със сигурност може да осигури значителна полза за голяма точност на прогнозиране при много различни обстоятелства. Освен това наличието на разнообразни познания и твърдото разбиране на различните скалери може да бъде полезно за разбиране какво се случва, когато нещата се объркат с тях. Надявам се, че тази статия е била полезна в предоставянето на някакъв контекст на този фронт, благодаря ви, че прочетохте!