Автор: Десислава Христова
Интерактивните визуализации в машинното обучение позволяват да постигнем по-добра динамика във визуалния анализ на данни. Този тип графики дават възможност за разучаване, манипулиране и взаимодействие с данните по интересен и полезен начин. Те притежават динамични аспекти като селектиране, hover, zoom in/zoom out възможности и др., които дават контрол и позволяват бързо и лесно извличане на полезна информация.
Фокусът в тази статия ще е върху различните библиотеки на Python за изграждане на интерактивни визуализации - как те се използват и по какъв начин могат да бъдат полезни в машинното обучение.
Интерактивните визуализации ни позволяват да се докоснем до данните, като предоставят голям набор от начини за взаимодействие с тях. Можем да селектираме елементи, променяме стойности с помощта на отделни компоненти (например плъзгач, падащ списък, отметка) и т.н.
За разлика от тях, статичните не се променят с времето и единствено показват състоянието на данните в определен момент. Не могат да бъдат манипулирани директно, което ограничава възможностите при работа. Например ако искаме да видим как един параметър влияе на резултатите, е необходимо да създаваме постоянно отделни статични визуализации за всяка стойност на съответния параметър. Вместо това би било по-лесно и компактно да се изгради една единствена интерактивна графика, която да притежава такива компоненти, с които да можем да манипулираме стойността на определени параметри и да анализираме последващото изменение на резултата.
Има създадени множество библиотеки за интерактивни визуализации с Python. Те позволяват бързо изграждане на графики и по-лесен начин за разучаване на данните. Някои от по-популярните, които ще разгледаме в тази статия, са Bokeh, HoloViews, hvPlot, bqplot и plotly. За примерите, които ще видите по-надолу в статията, са използвани 5 извадки:
Bokeh е много популярна библиотека за интерактивни визуализации с Python. Тя дава възможност по елегантен начин да изградим висококачествени графики. Създават се стъпка по стъпка, като първо започваме от фигурата, след което добавяме елементи към нея и ги настройваме.
Ключови особености:
Примери:
Извадка: Telecom churn
На тази визуализация можем да видим диаграма на разсейването, изобразяваща връзката между общия брой разговори, проведени през деня, и общата сума, която клиентът е бил таксуван. Различните цветове показват дали съответният потребител има активирана гласова поща в плана си или няма. Благодарение на интерактивните елементи на Bokeh, с отметка може да се регулира какво да бъде изобразено на диаграмата.
Извадка: Telecom churn
На тези 2 визуализации са представени стълбовидни диаграми, като едната е стандартна, а другата групирана. В първия случай сравняваме точността на различните класификатори, а във втория прецизност, пълнота и f1 оценка. Веднага става ясно, че Random Forest и Decision Tree са с най-високи резултати.
Във всичките примери можем да видим по-конкретна информация благодарение на hover функционалността. Има и възможност за zoom in и zoom out чрез използването на box zoom и wheel zoom.
Holoviews е с отворен код, което улеснява много създаването на интерактивни визуализации. Тази библиотека може да се комбинира с Matplotlib, Bokeh или Plotly, като изисква много по-малко редове код за изграждане на графиките.
Ключови особености:
Примери:
Извадка: Telecom churn
Този пример показва learning curve диаграми на различни класификатори, като е използван падащ списък. Това е полезно, защото не създаваме отделна графика за всеки случай, а динамично се променят резултатите в зависимост от избора на класификатор. От визуализацията става ясно, че Decision Tree се справя най-добре с нови данни и резултатите са по-добри при по-голям обем на извадката.
Извадка: Bike sharing
На тази графика можем да видим комбинация от диаграма на разсейването и хистограми за всяка от характеристиките - температура и влажност на въздуха. Инструментите, които са достъпни в менюто позволяват zoom in/zoom out функционалност и селектиране на части от визуализацията. В примера се вижда, че между двете характеристики не съществува линейна зависимост.
Извадка: Telecom churn
Представена е диаграма на разсейването, която показва връзката между общия брой минути и общия брой обаждания за деня, които са правили клиенти на телекомуникационната фирма. Графиката е изградена така, че когато се селектират част от данните на нея, се визуализират веднага върху съседната диаграма. Има също и zoom in/zoom out възможности, което придава по-голяма яснота точно за кои точки става въпрос.
hvPlot е създадена на базата на HoloViews и Bokeh, като са необходими дори още по-малко редове код, за да се постигат същите резултати както с другите библиотеки. Тя притежава всички стандартни типове графики и дава много възможности за тяхното персонализиране.
Ключови особености:
Примери:
Извадка: Bike sharing
В този пример е показана връзката между температурата и влажността на въздуха, като стойностите са нормализирани. Ясно се вижда в кои части плътността е по-голяма. Чрез падащ списък може да се променя визуализацията спрямо отделните сезони.
Извадка: Bike sharing
На тази визуализация са изобразени 3 графики на плътността на разпределението на параметрите температура, влажност на въздуха и скорост на вятъра. Библиотеката hvPlot дава възможност чрез избор на стойност от легендата, да се селектират графиките, които искаме да бъдат по-ясно показани, за да може фокусът да е върху тях.
Извадка: Bike sharing
Тук можем да видим диаграма на разсейването, показваща връзката между температурата и скоростта на въздуха за определен сезон. Изборът на сезон става чрез промяна на стойността на плъзгача. Това ни позволява да добием представа за разликите в данните при отделните сезони.
Plotly e изградена на базата на d3.js и благодарение на друга библиотека - Cufflinks, може да се използва директно с DataFrame структурата на Pandas. С тази библиотека много бързо и лесно се създават красиви интерактивни визуализации. Има всички основни типове графики на разположение, но възможностите ѝ са ограничени откъм интерактивни компоненти. Това се компенсира обаче от друг инструмент на компанията - Dash, с който може да се правят много по-сложни визуализации. Plotly също предлагат и Chart Studio, където с помощта на графичен интерфейс могат да се създават красиви интерактивни графики.
Примери:
Извадка: Salary data
Графично е представена линейна регресия за предсказване на заплати на служители в зависимост от трудовия им стаж. Plotly има меню с инструменти, от което са достъпни zoom in/zoom out, pan, hover функционалности и др. Позволява също така тази визуализация да се експортира онлайн, след което да се обработи чрез Plotly Chart Studio.
Извадка: Wine quality red
Представените диаграми тип "кутия" показват разпределението на променливите летлива киселинност и лимонена киселина в червеното вино чрез основни статистически показатели. От легендата може да се скрива конкретна графика. Чрез hover възможността можем да видим стойностите на минимума, максимума, медианата и квартилите. В двата случая стойностите са разположени предимно около минималната.
Това е специална библиотека на Python, предназначена за изграждането на 2D интерактивни графики. Тя е създадена за проекта на Jupyter и при нея всяка част от фигурата е интерактивен компонент, който може да се манипулира. Тя позволява само с няколко реда код да се изградят страхотни визуализации, които имат възможност да притежават и графичен интерфейс.
Примери:
Извадка: Bike buyers
На тази визуализация са изобразени хистограми, показващи честотното разпределение на купувачи на велосипеди в зависимост от тяхната възраст и пол. Тук имаме възможност чрез използването на един от интерактивните селектори на bqplot - BrushIntervalSelector, да маркираме само определени интервали, като под графиката са изведени индексите на избраните данни от променливата.
Извадка: Telecom churn
На кръговата диаграма са представени резултати от матрица на неточностите при оценка на Decision Tree класификатор за предсказване на отлива на клиенти. Показано е отношението на метриките True Positive, True Negative, False Positive и False Negative спрямо общия брой стойности. В 85.60% от случаите, класификаторът е предсказал правилно тези клиенти, които не са се отказали от услугите, а в 8.40% е предсказал правилно тези, които са се отказали. Останалите 6%, включващи False Positive и False Negative, са грешно предсказаните стойности на класификатора.
Библиотеките за интерактивни визуализации с Python не се изчерпват до тук. Съществуват и още такива като например Pygal, Gleam и mpld3, които също предоставят много възможности на специалистите, занимаващи се с машинно обучение.
Примерите с визуализациите можете да свалите от тук.
Можете да използвате Jupyter Notebook или друг подобен инструмент, за да ги изпълните.
Интерактивните визуализации дават на анализатора повече начини за манипулиране на данните без да е необходимо при всяка промяна да се създава нова графика. Използването им значително улеснява предварителния анализ на данните и графичното представяне на резултатите от моделите за машинно обучение.
Включете се в курса по машинно обучение и анализ на данни с Python.