Разница между 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, например, экстракторы функций и трансформаторы.
Я думаю, что док объясняет это очень хорошо.