Разница между org.apache.spark.ml.classification и org.apache.spark.mllib.classification

Я пишу искровое приложение и хотел бы использовать алгоритмы в MLlib. В API-интерфейсе API я нашел два разных класса для одного и того же алгоритма.

Например, существует одна LogisticRegression в org.apache.spark.ml.classification также LogisticRegressionwithSGD в org.apache.spark.mllib.classification.

Единственное различие, которое я могу найти, заключается в том, что тот, что находится в org.apache.spark.ml, наследуется от Estimator и может использоваться при перекрестной проверке. Я был в замешательстве, что они размещены в разных пакетах. Кто-нибудь знает причину этого? Спасибо!

Ответы

Ответ 1

Это билет JIRA

И From Проект Doc:

В настоящее время MLlib охватывает базовый выбор алгоритмов машинного обучения, например, логистическую регрессию, деревья решений, чередующиеся наименьшие квадраты и k-средства. Нынешний набор API-интерфейсов содержит несколько недостатков дизайна, которые мешают нам продвигаться вперед адрес практического машинного обучения трубопроводов, сделайте MLlib сам масштабируемым проектом.

Новый набор API будет работать под org.apache.spark.ml, а o.a.s.mllib будет устаревшим после переноса всех функций на o.a.s.ml.

Ответ 2

искра mllib guide говорит:

spark.mllib содержит оригинальный API, созданный поверх RDD.

spark.ml предоставляет API более высокого уровня, построенный поверх DataFrames для построения ML-конвейеров.

и

Использование spark.ml рекомендуется, потому что с DataFrames API более универсален и гибкий. Но мы будем продолжать поддерживать spark.mllib вместе с разработкой spark.ml. Пользователям должно быть удобно использовать функции spark.mllib и ожидать появления новых функций. Разработчики должны вносить новые алгоритмы в spark.ml, если они хорошо подходят к концепции трубопровода ML, например, экстракторы функций и трансформаторы.

Я думаю, что док объясняет это очень хорошо.