- Spark大數據商業實戰三部曲:內核解密|商業案例|性能調優
- 王家林
- 1058字
- 2019-12-12 17:29:52
2.5 Spark 2.2 MLlib
Spark 2.2版本中新增了基于DataFrame的機器學習;Spark 2.2對R語言的機器學習新增了更多算法的支持,如Random Forest(隨機森林)、Gaussian Mixture Model(高斯混合模型)、Naive Bayes(樸素貝葉斯)、Survival Regression(生存回歸分析)以及K-Means(K-均值)等算法。
Apache Spark 2.2.0版本中MLlib的更新如下。
1.基于DataFrame的API的新算法
SPARK-14709:LinearSVC(線性SVM分類器)(Scala/Java/Python/R)。
SPARK-19635:基于DataFrame的API(Scala/Java/Python)中的ChiSquare測試。
SPARK-19636:基于DataFrame的API(Scala/Java/Python)的相關性。
SPARK-13568:用于估算缺失值的計算特征變換器(Scala/Java/Python)。
SPARK-18929:為GLM增加Tweedie分布(Scala/Java/Python/R)。
SPARK-14503:FPGrowth頻繁模式挖掘和關聯規則(Scala/Java/Python/R)。
2.現有的算法增加到Python和R API
SPARK-18239:梯度增強樹。
SPARK-18821:二分K均值。
SPARK-18080:區域敏感哈希(LSH)(Python)。
SPARK-6227:PySpark的分布式PCA和SVD(基于RDD的API)。
3.主要的BUG修復
SPARK-19110:DistributedLDAModel.logPrior正確性修復。
SPARK-17975:EMLDAOptimizer失敗產生的異常ClassCastException(由GraphX檢查點錯誤引起)。
SPARK-18715:修正二項式GLM中AIC計算的錯誤。
SPARK-16473:二分K均值失敗,訓練使用一定的輸入次數時,提示“java.util. NoSuchElementException: key not found”。
SPARK-19348:pyspark.ml.Pipeline在多線程使用下損壞。
SPARK-20047:箱約束邏輯回歸。
4.廢棄功能
SPARK-18613:spark.ml LDA類不應在API中公開spark.mllib。在spark.ml.LDAModel中已棄用oldLocalModel和getModel。
5.行為變化
SPARK-19787:DeveloperApi ALS.train()使用默認的regParam值0.1,而不是1.0,以匹配常規ALS API的默認regParam設置。
2.5.1 基于DataFrame的Machine Learning API
我們可以從下載的Spark源碼中看到加入了spark.ml包(原來的spark.mllib仍然存在),這是在新版本中加入的基于DataFrame的機器學習代碼包,存儲在DataFrames中的向量和矩陣現在使用更高效的序列化,減少了調用MLlib算法的開銷。現在spark.ml包代替基于RDD的ML成為主要的SparkMLAPI。有一個很重要的功能是,現在可以保存和加載Spark支持的所有語言的Machine Learning pipeline和model了。
2.5.2 R的分布式算法
Apache Spark 2.2.0版本中SparkR的更新如下。
SparkR在2.2.0版本中為現有的Spark SQL功能增加了廣泛的支持。
1.主要更新的功能點
SPARK-19654:R的結構化流式API。
SPARK-20159:在R中支持完整的Catalog API。
SPARK-19795:列函數to_json、from_json。
SPARK-19399:在DataFrame上合并,并在列上合并。
SPARK-20020:支持DataFrame檢查點。
SPARK-18285:R中的多列近似數。
2.廢棄功能
SPARK-20195:棄用createExternalTable。
3.行為變化
SPARK-19291:為SparkR高斯混合模型增加了對數似然,但這導致SparkR 2.1版本與2.2版本不兼容:從SparkR 2.1保存的高斯混合模型可能不會加載到SparkR 2.2中。計劃未來推出SparkR的向后兼容性保證。
4.已知的問題
SPARK-21093:在SparkR中,多次執行有時會失敗。
Spark 2.X版本對SparkR的最大改進是用戶自定義函數,包括dapply、gapply和lapply,前兩者可以用于執行基于分區的用戶自定義函數(如分區域模型學習),而后者可用于超參數整定。
Spark 2.X對R語言的機器學習增加了幾種算法:Random Forest(隨機森林)、Gaussian Mixture Model(高斯混合模型)、Naive Bayes(樸素貝葉斯)、Survival Regression(生存回歸分析)以及K-Means(K-均值)等。支持多項邏輯回歸,來提供與glmnet R相似的功能。
同時對Python的機器學習也增加了一些算法,如LDA(線性判別式分析Linear Discriminant Analysis)、高斯混合模型、廣義線性回歸等。