web-dev-qa-db-fra.com

Quelle est la différence entre les packages Spark ML et MLLIB

J'ai remarqué qu'il y a deux classes LinearRegressionModel dans SparkML, une en ML et une autre dans le package MLLib.

Ces deux sont mis en œuvre très différemment - par exemple celui de MLLib implémente Serializable, tandis que l'autre non.

Par ailleurs, ame est vrai à propos de RandomForestModel.

Pourquoi y a-t-il deux classes? Quelle est la "bonne"? Et existe-t-il un moyen de convertir l'un en l'autre?

32
vyakhir

o.a.s.mllib contient l'ancienne API basée sur RDD tandis que o.a.s.ml contient une nouvelle API autour de Dataset et ML Pipelines. ml et mllib ont atteint la parité des fonctionnalités dans 2.0.0 et mllib est lentement obsolète (ce qui s'est déjà produit en cas de régression linéaire) et sera probablement supprimé dans le prochain version majeure.

Donc, à moins que votre objectif ne soit la compatibilité descendante, le "bon choix" est o.a.s.ml.

36
zero323

Spark Mllib

spark.mllib contient l'API héritée construite au-dessus des RDD.

Spark ML

spark.ml fournit une API de niveau supérieur basée sur DataFrames pour la construction de pipelines ML.

Selon [ l'annonce officielle

Depuis Spark 2.0, les API basées sur RDD du package spark.mllib sont entrées en mode de maintenance. L'API primaire d'apprentissage automatique pour Spark est désormais DataFrame) API basée sur le package spark.ml. Apache spark est recommandé d'utiliser spark.ml

  • MLlib continuera de prendre en charge l'API basée sur RDD dans spark.mllib avec des corrections de bogues.
  • MLlib n'ajoutera pas de nouvelles fonctionnalités à l'API basée sur RDD.

  • Dans les versions Spark 2.x, MLlib ajoutera des fonctionnalités à l'API basée sur DataFrames pour atteindre la parité des fonctionnalités avec l'API basée sur RDD.

  • Après avoir atteint la parité des fonctionnalités (approximativement estimée pour Spark 2.3), l'API basée sur RDD sera obsolète.
  • L'API basée sur RDD devrait être supprimée dans Spark 3.0.

Pourquoi MLlib passe-t-il à l'API basée sur DataFrame?

  • Les DataFrames fournissent une API plus conviviale que les RDD. Les nombreux avantages des DataFrames incluent Spark Sources de données, requêtes SQL/DataFrame, optimisations Tungsten et Catalyst et API uniformes dans toutes les langues.

  • L'API basée sur DataFrame pour MLlib fournit une API uniforme entre les algorithmes ML et dans plusieurs langues.

  • Les DataFrames facilitent les pipelines ML pratiques, en particulier les transformations de fonctionnalités. Voir le guide Pipelines pour plus de détails.

Plus d'informations lire doc - https://spark.Apache.org/docs/latest/ml-guide.html

8
vaquar khan