◆ Это библиотека машинного обучения, основанная на ядре Spark и обладающая преимуществами Spark.
◆ Базовые вычисления оптимизированы и зачастую более эффективны, чем обычное кодирование.
◆ Реализует различные алгоритмы машинного обучения, позволяющие обучать модели и прогнозировать.
◆ Логистическая регрессия Наивная байесовская линейная регрессия Дерево решений SVM Разложение матрицы LDA
MLlib — это библиотека машинного обучения (ML) Spark. Цель — сделать практическое машинное обучение масштабируемым и простым. На высоком уровне он предоставляет следующие инструменты:
Из Искры 2.0начинать,spark.mllib
Пакет основан наRDDизAPIВошел в режим обслуживания Режим. Sparkиз Основное машинное обучениеAPIсейчас этоspark.ml
Пакет основан наDataFrameизAPI
искра.mllib
на основеRDDизAPIи исправления ошибок“Spark ML» не является официальным названием, но иногда используется для обозначения библиотек, основанных на MLlib. DataFrameизAPI。Это в основномдапотому чтона основеDataFrameизAPIиспользоватьизorg.apache.spark.ml Scala
имя пакета,и «Spark ML Терминал «Трубопроводы», который мы изначально использовали, чтобы подчеркнуть концепцию трубопровода.
Нет,MLlib включает API на основе RDD и API на основе DataFrame. Однако API на основе RDD сейчас находится в режиме обслуживания.,APIВсе Нетодеяло Устарело,также НетдаMLlib
MLlib использует пакет линейной алгебры Breeze, который использует netlib-java для оптимизации численной обработки. Если собственная библиотека 1 недоступна во время выполнения, вы увидите предупреждающее сообщение и будет использоваться чистая реализация JVM.
Из-за проблем с лицензированием собственных двоичных файлов среды выполнения мы не включаем собственный агент netlib-java по умолчанию. Чтобы настроить netlib-java/Breeze для использования оптимизированных под систему двоичных файлов, включите com.github.fommil.netlib:all:1.1.2 (или создайте Spark с -Pnetlib-lgpl) в качестве зависимости вашего проекта и прочтите файл netlib-java. Документация содержит дополнительные инструкции по установке для вашей платформы.
Самые популярные собственные BLAS, такие как Intel MKL, OpenBLAS, могут использовать несколько потоков в одной операции, что может конфликтовать с моделью выполнения Spark.
Настройка этих реализаций BLAS для использования одного потока для операций может фактически повысить производительность (см. SPARK-21305). Обычно лучше всего сопоставить это количество ядер, используемых каждой конфигурацией задачи Spark, которое по умолчанию равно 1 и обычно оставляется равным 1.
Чтобы узнать, как настроить количество потоков, используемых этими реализациями BLAS, обратитесь к следующим ресурсам: Intel MKL и OpenBLAS.
Чтобы использовать MLlib в Python, вам понадобится NumPy 1.4 или выше.
В следующем списке представлены некоторые новые функции и улучшения, добавленные в MLlib в версии Spark 2.3:
Иерархии классов и функций сводок модели логистической регрессии были изменены, чтобы сделать их более понятными и лучше приспособленными для добавления сводок по нескольким классам. Это критическое изменение пользовательского кода, который приводит LogisticReprofitTrainingSummary к BinaryLogisticReprofitTrainingSummary. Пользователи должны использовать метод model.binarySummary. Дополнительные сведения см. в SPARK-17139 (обратите внимание, что это экспериментальный API). Это не влияет на метод дайджеста Python, который по-прежнему отлично работает для случаев с несколькими элементами и двоичными данными.
Имеет целочисленный тип, индексацию на основе 0 и значения двойного типа.
локальный векторизбазовый классдаVector,Мы предоставляем две реализации:DenseVector
и SparseVector
◆ Локальные векторы хранятся на локальных узлах, и их базовым типом данных является вектор. Он имеет два подмножества: плотное и разреженное.
Обычно мы используем фабричный класс Vectors для генерации Например:
◆ Vectors.dense(1.0,2.0,3.0) в основном использует плотные
◆ Vectors.sparse(3,(0,1),(1,2),(2,3)) Просто поймите разреженность
Вектор (1.00.03.0) может быть представлен в плотном формате как 1.00.03.0 или в разреженном формате как (3, 02, 1.03.0), где 3 — размер вектора.
локальный вектор, связанный с меткой/ответом, плотный или разреженный В MLlib используется для алгоритмов контролируемого обучения. Мы используем двойное хранилище меток, чтобы мы могли использовать помеченные точки в регрессии и классификации. Для двоичной классификации метка должна быть 0 (отрицательная) или 1 (положительная). Для многоклассовой классификации метки должны представлять собой индексы классов, отсчитываемые от нуля: 0, 1, 2,…
Отмеченные точки представлены классами случаев. LabeledPoint
выражать
◆ Ранее мы ввели «обучение с учителем». Мы знаем, что обучение с учителем осуществляется в форме данных (x, y), где y — метка, а X — вектор признаков. То же самое относится и к данным метки. Давайте посмотрим на этот код.
LabeledPoint(1.0,Vectors.dense(1.0,2.0,3.0))
локальная Матрица имеет индекс строки и столбца, а также значения двойного типа целочисленного типа, хранящиеся на одной машине. MLlib поддерживает плотные матрицы, значения элементов которых хранятся в одном двойном массиве в порядке по столбцам, а также разреженные матрицы с ненулевыми значениями элементов, хранящиеся в порядке по столбцам в формате Compressed Sparse Column (CSC).
Подобно векторам, локальным типом матрицы является Матрица, которая делится на два типа: плотную и разреженную. Также используйте Используйте фабричный метод Matrices для его создания. Но имейте в виду, что матрицы MLlib хранятся по столбцам. Например, следующая команда создает единичную матрицу 3x3:
Matrices.dense(3,3,Array(1,0,0,0,1,0,0,0,1))
Аналогично, как создать разреженную матрицу
Matrices.sparse(3,3,Array(0,1,2,3),Array(0,1,2),Array(1,1,1))
◆ Распространение и хранение моментальных данных в нескольких RDD. Для преобразования данных распределенной матрицы требуется глобальная функция перемешивания. Самая базовая распределенная матрица — RowMatrix.
распределенная матрица со строками длинного типа, индексами столбцов и значениями двойного типа,распределенныйхранится в одном или несколькихRDDсередина。выбиратьправильныйизформат для хранения большихираспределенныйматрицадаочень важноиз。Воляраспределенныйматрица Конвертироватьдля Неттакой жеиз Возможно, формат должен быть глобальным.shuffle,Это довольно дорого. На данный момент реализовано четыре типа распределенных матриц.
Базовый тип называется RowMatrix. A RowMatrix — это построчно распределенная матрица без значимых индексов строк, например коллекция собственных векторов. Он поддерживается СДР своих строк, где каждая строка является локальным вектором. Мы предполагаем, что количество столбцов RowMatrix не очень велико, поэтому драйверу разумно передать один локальный вектор или использовать для хранения/работы один узел. IndexedRowMatrix похож на RowMatrix, но имеет индексы строк, которые можно использовать для идентификации строк и выполнения соединений. CoordinateMatrixдаккоординатный список (COO) Распределенная матрица, хранящаяся в формате, поддерживаемом RDD ее записей. BlockMatrix — это распределенная матрица, поддерживаемая RDD MatrixBlock, который представляет собой кортеж (Int, Int, Matrix).
◆ DataFrame набора данных RDD — это форматы распределенных наборов данных Spark. Все три могут в определенной степени трансформироваться друг в друга и иметь собственную сферу применения. Среди них RDD — самая базовая и простая форма набора данных.
◆ RDD (Resilient Distributed Datasets), эластичный распределенный набор данных, представляет собой простейшую структуру и наиболее часто используемую форму набора данных в Spark. Его можно понимать как абстракцию данных памяти, сформированную путем простой инкапсуляции входных данных.
◆ В отличие от хранилища ветвей RDD, в котором нет концепции столбцов, Dataset вводит концепцию столбцов, аналогичную структуре файла CSV. Похоже на простую 2D-таблицу.
Структура DataFrame аналогична Dataset, и обе они представляют концепцию столбцов. В отличие от Dataset, каждая строка в DataFrame снова инкапсулируется с помощью объекта Row. Конкретное значение необходимо получить с помощью метода объекта.
◆ Общий алгоритм Классификация, регрессия, кластеризация и т. д.
◆ Разработка функций Уменьшение размерности, преобразование, выбор, извлечение признаков и т. д.
◆Математические инструменты Статистика вероятностей, матричные операции и т. д.
◆ трубопровод и т. д.
MLlib использует структуру данных в форме RDD, а ml — структуру DataFrame.
◆ Представители Spark надеются постепенно заменить MLlib на ml. ◆ Учитывайте и то, и другое в руководстве.
Если не указано иное, MLlib относится к компоненту машинного обучения Spark.
◆ Например, провести анализ данных по массовой аренде и продаже домов, а также спрогнозировать цены на жилье и арендную плату. ◆ Типичный набор данных: набор данных о ценах на жилье в Бостоне. ◆ В основном используйте традиционные алгоритмы интеллектуального анализа данных, такие как алгоритмы регрессии.
◆ Например, системы обработки естественного языка, системы рекомендаций и т. д. ◆ Система рекомендаций требует сбора данных в режиме реального времени, статистики, планирования задач и регулярного обновления модели обучения. ◆ Основная реализация: Spark Streaming +MLlib.