14 инструмента с отворен код, за да се възползвате максимално от машинното обучение

Филтриране на нежелана поща, разпознаване на лица, механизми за препоръки - когато имате голям набор от данни, върху които искате да извършите прогнозен анализ или разпознаване на шаблони, машинното обучение е пътят. Разпространението на безплатен софтуер с отворен код улесни прилагането на машинното обучение както на единични машини, така и в мащаб, както и на повечето популярни езици за програмиране. Тези инструменти с отворен код включват библиотеки за Python, R, C ++, Java, Scala, Clojure, JavaScript и Go.

Apache Mahout

Apache Mahout предоставя начин за изграждане на среди за хостване на приложения за машинно обучение, които могат да се мащабират бързо и ефективно, за да отговорят на търсенето. Mahout работи главно с друг добре известен проект на Apache, Spark, и първоначално е създаден да работи с Hadoop в името на стартирането на разпределени приложения, но е разширен и за работа с други разпределени back back като Flink и H2O.

Mahout използва специфичен за домейн език в Scala. Версия 0.14 е основен вътрешен рефактор на проекта, базиран на Apache Spark 2.4.3 по подразбиране.

Съставяне

Compose, от Innovation Labs, е насочен към общ проблем с моделите за машинно обучение: етикетиране на сурови данни, което може да бъде бавен и досаден процес, но без който моделът за машинно обучение не може да даде полезни резултати. Compose ви позволява да пишете в Python набор от функции за етикетиране на вашите данни, така че етикетирането може да се извършва възможно най-програмно. Различни трансформации и прагове могат да бъдат зададени на вашите данни, за да улеснят процеса на етикетиране, като например поставяне на данни в кошчета въз основа на дискретни стойности или квантили.

Основни инструменти за ML

Рамката на Core ML на Apple ви позволява да интегрирате модели за машинно обучение в приложения, но използва свой собствен различен формат на модел за обучение. Добрата новина е, че не е необходимо да предварително да обучавате модели във формат Core ML, за да ги използвате; можете да конвертирате модели от почти всяка често използвана рамка за машинно обучение в Core ML с Core ML Tools.

Core ML Tools работи като пакет на Python, така че се интегрира с богатството от библиотеки и инструменти за машинно обучение на Python. Моделите от TensorFlow, PyTorch, Keras, Caffe, ONNX, Scikit-learn, LibSVM и XGBoost могат да бъдат конвертирани. Моделите на невронни мрежи също могат да бъдат оптимизирани за размер, като се използва квантуване след обучение (например до малка битова дълбочина, която все още е точна).

Кортекс

Cortex предоставя удобен начин за обслужване на прогнози от модели за машинно обучение с помощта на Python и TensorFlow, PyTorch, Scikit-learn и други модели. Повечето пакети на Cortex се състоят само от няколко файла - вашата основна Python логика, файл cortex.yaml, който описва какви модели да се използват и какви видове изчислителни ресурси да се разпределят, и файл requirements.txt за инсталиране на всички необходими изисквания на Python. Целият пакет е разположен като контейнер на Docker в AWS или друга хостинг система, съвместима с Docker. Ресурсите за изчисление се разпределят по начин, който отразява дефинициите, използвани в Kubernetes за същите, и можете да използвате графични процесори или ASIC на Amazon Inferentia за ускоряване на обслужването.

Инструменти за функции

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

GoLearn

GoLearn, библиотека за машинно обучение за езика Go на Google, е създадена с двойни цели за простота и адаптивност, според разработчика Стивън Уитуърт. Простотата се крие в начина, по който данните се зареждат и обработват в библиотеката, която се моделира след SciPy и R. Персонализирането се крие в това как някои от структурите на данни могат лесно да бъдат разширени в приложение. Whitworth също е създал обвивка Go за библиотеката Vowpal Wabbit, една от библиотеките, намерени в инструментариума Shogun.

Gradio

Едно често срещано предизвикателство при изграждането на приложения за машинно обучение е изграждането на здрав и лесно персонализиран потребителски интерфейс за обучението на модели и механизмите за обслужване на прогнози. Gradio предоставя инструменти за създаване на уеб базирани потребителски интерфейси, които ви позволяват да взаимодействате с вашите модели в реално време. Няколко включени примерни проекта, като входни интерфейси към класификатора на изображения Inception V3 или модела за разпознаване на почерк MNIST, ви дават представа как можете да използвате Gradio със собствените си проекти.

H2O

H2O, сега в третата си голяма ревизия, предоставя цяла платформа за машинно обучение в паметта, от обучение до обслужване на прогнози. Алгоритмите на H2O са насочени към бизнес процеси - например измами или прогнози за тенденции, а не, да речем, анализ на изображения. H2O може да взаимодейства самостоятелно с HDFS магазини, върху YARN, в MapReduce или директно в екземпляр на Amazon EC2.

Hadoop mavens могат да използват Java за взаимодействие с H2O, но рамката също така осигурява обвързване за Python, R и Scala, което ви позволява да взаимодействате и с всички библиотеки, налични на тези платформи. Можете също така да се върнете към REST повикванията като начин за интегриране на H2O в повечето произволни тръбопроводи.

Орикс

Oryx, с любезното съдействие на създателите на дистрибуцията Cloudera Hadoop, използва Apache Spark и Apache Kafka, за да стартира модели за машинно обучение на данни в реално време. Oryx предоставя начин за изграждане на проекти, които изискват решения в момента, като препоръчителни машини или откриване на аномалии на живо, които се информират както от нови, така и от исторически данни. Версия 2.0 е почти завършен редизайн на проекта, като компонентите му са свързани свободно в ламбда архитектура. По всяко време могат да се добавят нови алгоритми и нови абстракции за тези алгоритми (например за избор на хиперпараметри).

Мълния PyTorch

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

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

Scikit-learn

Python се превърна в език за програмиране за математика, наука и статистика, поради лекотата на приемане и широчината на библиотеките, достъпни за почти всяко приложение. Scikit-learn използва тази широчина, като надгражда няколко съществуващи пакета на Python - NumPy, SciPy и Matplotlib - за математическа и научна работа. Получените библиотеки могат да се използват за интерактивни приложения „работна среда“ или да се вграждат в друг софтуер и да се използват отново. Комплектът се предлага под лиценз BSD, така че е напълно отворен и може да се използва многократно.

Шогун

Шогун е един от най-дълготрайните проекти в тази колекция. Създаден е през 1999 г. и написан на C ++, но може да се използва с Java, Python, C #, Ruby, R, Lua, Octave и Matlab. Последната основна версия, 6.0.0, добавя естествена поддръжка за Microsoft Windows и езика Scala.

Макар и популярен и широкообхватен, Shogun има конкуренция. Друга библиотека за машинно обучение, базирана на C ++, Mlpack, съществува само от 2011 г., но се изповядва, че е по-бърза и по-лесна за работа (чрез по-интегриран набор от API), отколкото конкурентните библиотеки.

Spark MLlib

Библиотеката за машинно обучение за Apache Spark и Apache Hadoop, MLlib може да се похвали с много често срещани алгоритми и полезни типове данни, проектирани да работят със скорост и мащаб. Въпреки че Java е основният език за работа в MLlib, потребителите на Python могат да свързват MLlib с библиотеката NumPy, потребителите на Scala могат да пишат код срещу MLlib, а потребителите на R могат да се включват в Spark от версия 1.5. Версия 3 на MLlib се фокусира върху използването на DataFrame API на Spark (за разлика от по-стария RDD API) и предоставя много нови функции за класификация и оценка.

Друг проект, MLbase, надгражда MLlib, за да улесни получаването на резултати. Вместо да пишат код, потребителите правят заявки чрез декларативен език а SQL.

Weka

Weka, създадена от Групата за машинно обучение в Университета на Уайкато, се таксува като „машинно обучение без програмиране“. Това е работен плот с графичен интерфейс, който дава възможност на устройствата за обработка на данни да сглобяват тръбопроводи за машинно обучение, да обучават модели и да изпълняват прогнози, без да се налага да пишете код. Weka работи директно с R, Apache Spark и Python, последният чрез директна обвивка или чрез интерфейси за общи цифрови библиотеки като NumPy, Pandas, SciPy и Scikit-learn. Голямото предимство на Weka е, че осигурява удобен за разглеждане интерфейс за всеки аспект от вашата работа, включително управление на пакети, предварителна обработка, класификация и визуализация.