遷移指南:MLlib(機器學習)
- 從 MLlib 2.4 升級到 3.0
- 從 MLlib 2.2 升級到 2.3
- 從 MLlib 2.1 升級到 2.2
- 從 MLlib 2.0 升級到 2.1
- 從 MLlib 1.6 升級到 2.0
- 從 MLlib 1.5 升級到 1.6
- 從 MLlib 1.4 升級到 1.5
- 從 MLlib 1.3 升級到 1.4
- 從 MLlib 1.2 升級到 1.3
- 從 MLlib 1.1 升級到 1.2
- 從 MLlib 1.0 升級到 1.1
- 從 MLlib 0.9 升級到 1.0
請注意,此遷移指南說明了特定於 MLlib 的項目。在將 MLlib 遷移到基於 DataFrame API 的更高版本時,可以套用許多 SQL 遷移項目。請參閱 遷移指南:SQL、資料集和 DataFrame。
從 MLlib 2.4 升級到 3.0
重大變更
OneHotEncoder
在 2.3 中已標示為不建議使用,在 3.0 中已移除,而OneHotEncoderEstimator
現在已重新命名為OneHotEncoder
。org.apache.spark.ml.image.ImageSchema.readImages
在 2.3 中已標示為不建議使用,在 3.0 中已移除,請改用spark.read.format('image')
。org.apache.spark.mllib.clustering.KMeans.train
參數 Intruns
在 2.1 中已標示為不建議使用,在 3.0 中已移除。請改用不含runs
的train
方法。org.apache.spark.mllib.classification.LogisticRegressionWithSGD
在 2.0 中已標示為不建議使用,在 3.0 中已移除,請改用org.apache.spark.ml.classification.LogisticRegression
或spark.mllib.classification.LogisticRegressionWithLBFGS
。org.apache.spark.mllib.feature.ChiSqSelectorModel.isSorted
在 2.1 中已標示為不建議使用,在 3.0 中已移除,不供子類別使用。org.apache.spark.mllib.regression.RidgeRegressionWithSGD
在 2.0 中已標示為不建議使用,在 3.0 中已移除,請使用org.apache.spark.ml.regression.LinearRegression
,其中elasticNetParam
= 0.0。請注意,RidgeRegressionWithSGD
的預設regParam
為 0.01,但LinearRegression
的預設值為 0.0。org.apache.spark.mllib.regression.LassoWithSGD
已在 2.0 中標示為已棄用,並在 3.0 中移除,請使用org.apache.spark.ml.regression.LinearRegression
搭配elasticNetParam
= 1.0。請注意,LassoWithSGD
的預設regParam
為 0.01,但LinearRegression
的預設值為 0.0。org.apache.spark.mllib.regression.LinearRegressionWithSGD
已在 2.0 中標示為已棄用,並在 3.0 中移除,請改用org.apache.spark.ml.regression.LinearRegression
或LBFGS
。org.apache.spark.mllib.clustering.KMeans.getRuns
和setRuns
已在 2.1 中標示為已棄用,並在 3.0 中移除,自 Spark 2.0.0 起已無作用。org.apache.spark.ml.LinearSVCModel.setWeightCol
已在 2.4 中標示為已棄用,並在 3.0 中移除,非使用者預期用途。- 自 3.0 起,
org.apache.spark.ml.classification.MultilayerPerceptronClassificationModel
延伸MultilayerPerceptronParams
以公開訓練參數。因此,MultilayerPerceptronClassificationModel
中的layers
已從Array[Int]
變更為IntArrayParam
。使用者應使用MultilayerPerceptronClassificationModel.getLayers
,而非MultilayerPerceptronClassificationModel.layers
來擷取層級大小。 org.apache.spark.ml.classification.GBTClassifier.numTrees
已在 2.4.5 中標示為已棄用,並在 3.0 中移除,請改用getNumTrees
。org.apache.spark.ml.clustering.KMeansModel.computeCost
已在 2.4 中標示為已棄用,並在 3.0 中移除,請改用ClusteringEvaluator
。org.apache.spark.mllib.evaluation.MulticlassMetrics
中的成員變數precision
已在 2.0 中標示為已棄用,並在 3.0 中移除。請改用accuracy
。- 在
org.apache.spark.mllib.evaluation.MulticlassMetrics
中已於 2.0 版中標示為不建議使用的成員變數recall
,已在 3.0 版中移除。請改用accuracy
。 - 在
org.apache.spark.mllib.evaluation.MulticlassMetrics
中已於 2.0 版中標示為不建議使用的成員變數fMeasure
,已在 3.0 版中移除。請改用accuracy
。 - 已於 2.0 版中標示為不建議使用的
org.apache.spark.ml.util.GeneralMLWriter.context
,已在 3.0 版中移除,請改用session
。 - 已於 2.0 版中標示為不建議使用的
org.apache.spark.ml.util.MLWriter.context
,已在 3.0 版中移除,請改用session
。 - 已於 2.0 版中標示為不建議使用的
org.apache.spark.ml.util.MLReader.context
,已在 3.0 版中移除,請改用session
。 - 抽象類別
abstract class UnaryTransformer[IN, OUT, T <: UnaryTransformer[IN, OUT, T]]
已在 3.0 版中變更為abstract class UnaryTransformer[IN: TypeTag, OUT: TypeTag, T <: UnaryTransformer[IN, OUT, T]]
。
不建議使用和行為變更
不建議使用
- SPARK-11215:
StringIndexerModel
中的labels
已標示為不建議使用,且將在 3.1.0 版中移除。請改用labelsArray
。 - SPARK-25758:
BisectingKMeansModel
中的computeCost
已標示為不建議使用,且將在未來版本中移除。請改用ClusteringEvaluator
。
行為變更
- SPARK-11215:在 Spark 2.4 和之前的版本中,如果在
StringIndexer
中將frequencyDesc
或frequencyAsc
指定為stringOrderType
參數,則在頻率相等的情況下,字串的順序是不確定的。自 Spark 3.0 起,頻率相等的字串會進一步按字母順序排序。而且自 Spark 3.0 起,StringIndexer
支援編碼多個欄位。 - SPARK-20604:在 3.0 版之前的版本中,
Imputer
要求輸入欄位為 Double 或 Float。在 3.0 版中,已解除此限制,因此Imputer
可以處理所有數字類型。 - SPARK-23469:在 Spark 3.0 中,
HashingTF
轉換器使用 murmur3 hash 函數的修正實作來將元素雜湊為向量。HashingTF
在 Spark 3.0 中會將元素對應到向量中的不同位置,而不是 Spark 2。不過,使用 Spark 2.x 建立並使用 Spark 3.0 載入的HashingTF
仍會使用之前的 hash 函數,且不會變更行為。 - SPARK-28969:PySpark 中
OneVsRestModel
的setClassifier
方法已在 3.0 中移除,以與 Scala 實作保持一致。呼叫者不應該在建立模型後設定模型中的分類器。 - SPARK-25790:PCA 在 Spark 3.0 中新增支援超過 65535 個欄位的矩陣。
- SPARK-28927:先前在非決定性輸入資料上擬合 ALS 模型時,如果發生重新執行,使用者會看到 ArrayIndexOutOfBoundsException,這是因為 In/Out 使用者/項目區塊不符所造成。從 3.0 開始,會擲回訊息更清楚的 SparkException,並封裝原始的 ArrayIndexOutOfBoundsException。
- SPARK-29232:在 3.0 版本之前,
RandomForestRegressionModel
沒有更新底層 DecisionTreeRegressionModels 的參數對應。這個問題已在 3.0 中修正。
從 MLlib 2.2 升級到 2.3
重大變更
- 邏輯迴歸模型摘要的類別和特質階層已變更,以更簡潔且更能容納多類別摘要。這對於將
LogisticRegressionTrainingSummary
轉換為BinaryLogisticRegressionTrainingSummary
的使用者程式碼來說,是一個重大變更。使用者應該改用model.binarySummary
方法。請參閱 SPARK-17139 以取得更多詳細資訊(注意這是Experimental
API)。這不會影響 Pythonsummary
方法,它仍會在多項式和二元情況下正確運作。
不建議使用和行為變更
不建議使用
OneHotEncoder
已標示為不建議使用,並將在3.0
中移除。它已由新的OneHotEncoderEstimator
取代(請參閱 SPARK-13030)。注意OneHotEncoderEstimator
將在3.0
中重新命名為OneHotEncoder
(但OneHotEncoderEstimator
將保留為別名)。
行為變更
- SPARK-21027:
OneVsRest
中使用的預設並行度現已設定為 1(即序列)。在2.2
及更早版本中,並行度等級設定為 Scala 中的預設執行緒池大小。 - SPARK-22156:
Word2Vec
的學習率更新不正確,原因是numIterations
設定大於1
。這將導致2.3
與更早版本之間的訓練結果不同。 - SPARK-21681:修正多項邏輯迴歸中的邊界情況錯誤,當某些特徵具有零變異時,此錯誤會導致係數不正確。
- SPARK-16957:樹狀演算法現在使用中點作為分割值。這可能會改變模型訓練的結果。
- SPARK-14657:修正
RFormula
產生的特徵在沒有截距時與 R 中的輸出不一致的問題。在這種情況下,這可能會改變模型訓練的結果。
從 MLlib 2.1 升級到 2.2
重大變更
沒有重大變更。
不建議使用和行為變更
不建議使用
沒有棄用事項。
行為變更
- SPARK-19787:
ALS.train
方法的regParam
預設值已從1.0
變更為0.1
(標記為DeveloperApi
)。注意這不會影響ALS
Estimator 或 Model,也不會影響 MLlib 的ALS
類別。 - SPARK-14772:修正
Param.copy
方法在 Python 和 Scala API 之間的不一致性。 - SPARK-11569:
StringIndexer
現在以與未見值相同的方式處理NULL
值。以前,無論handleInvalid
參數的設定為何,總是會擲回例外。
從 MLlib 2.0 升級到 2.1
重大變更
已移除已棄用的方法
feature.ChiSqSelectorModel
中的setLabelCol
classification.RandomForestClassificationModel
中的numTrees
(這現在是指稱為numTrees
的 Param)regression.RandomForestRegressionModel
中的numTrees
(這現在是指稱為numTrees
的 Param)model
在regression.LinearRegressionSummary
validateParams
在PipelineStage
validateParams
在Evaluator
不建議使用和行為變更
不建議使用
- SPARK-18592:棄用所有 Param 設定方法,但
DecisionTreeClassificationModel
、GBTClassificationModel
、RandomForestClassificationModel
、DecisionTreeRegressionModel
、GBTRegressionModel
和RandomForestRegressionModel
的輸入/輸出欄位 Param 除外
行為變更
- SPARK-17870:修正
ChiSqSelector
的錯誤,此錯誤可能會變更其結果。現在ChiSquareSelector
使用 p 值而非原始統計資料來選取固定數量的頂尖特徵。 - SPARK-3261:
KMeans
在無法取得或未選取 k 個相異質心時,可能會傳回少於 k 個叢集中心。 - SPARK-17389:
KMeans
將 k-means|| 初始化模式的預設步驟數從 5 減少至 2。
從 MLlib 1.6 升級到 2.0
重大變更
Spark 2.0 中有幾個重大變更,如下所述。
用於基於 DataFrame 的 API 的線性代數類別
Spark 的線性代數相依項已移至新的專案 mllib-local
(請參閱 SPARK-13944)。在此變更中,線性代數類別已複製至新套件 spark.ml.linalg
。現在 spark.ml
中的基於 DataFrame 的 API 相依於 spark.ml.linalg
類別,導致一些重大變更,主要在於各種模型類別(請參閱 SPARK-14810 以取得完整清單)。
注意:spark.mllib
中的基於 RDD 的 API 仍相依於先前的套件 spark.mllib.linalg
。
轉換向量和矩陣
雖然大多數管道元件支援載入的向下相容性,但某些現有的 DataFrames
和 Spark 版本 2.0 之前的管道(包含向量或矩陣欄)可能需要移轉到新的 spark.ml
向量和矩陣類型。在 spark.mllib.util.MLUtils
中,可以找到將 DataFrame
欄從 spark.mllib.linalg
轉換為 spark.ml.linalg
類型(反之亦然)的公用程式(反之亦然)。
也有可用的公用程式方法,用於轉換向量和矩陣的單一執行個體。對 mllib.linalg.Vector
/ mllib.linalg.Matrix
使用 asML
方法,以轉換為 ml.linalg
類型,並使用 mllib.linalg.Vectors.fromML
/ mllib.linalg.Matrices.fromML
轉換為 mllib.linalg
類型。
from pyspark.mllib.util import MLUtils
# convert DataFrame columns
convertedVecDF = MLUtils.convertVectorColumnsToML(vecDF)
convertedMatrixDF = MLUtils.convertMatrixColumnsToML(matrixDF)
# convert a single vector or matrix
mlVec = mllibVec.asML()
mlMat = mllibMat.asML()
請參閱 MLUtils
Python 文件,以取得進一步的詳細資訊。
import org.apache.spark.mllib.util.MLUtils
// convert DataFrame columns
val convertedVecDF = MLUtils.convertVectorColumnsToML(vecDF)
val convertedMatrixDF = MLUtils.convertMatrixColumnsToML(matrixDF)
// convert a single vector or matrix
val mlVec: org.apache.spark.ml.linalg.Vector = mllibVec.asML
val mlMat: org.apache.spark.ml.linalg.Matrix = mllibMat.asML
請參閱 MLUtils
Scala 文件,以取得進一步的詳細資訊。
import org.apache.spark.mllib.util.MLUtils;
import org.apache.spark.sql.Dataset;
// convert DataFrame columns
Dataset<Row> convertedVecDF = MLUtils.convertVectorColumnsToML(vecDF);
Dataset<Row> convertedMatrixDF = MLUtils.convertMatrixColumnsToML(matrixDF);
// convert a single vector or matrix
org.apache.spark.ml.linalg.Vector mlVec = mllibVec.asML();
org.apache.spark.ml.linalg.Matrix mlMat = mllibMat.asML();
請參閱 MLUtils
Java 文件,以取得進一步的詳細資訊。
已移除已棄用的方法
在 spark.mllib
和 spark.ml
套件中,已移除多個已棄用的方法
setScoreCol
在ml.evaluation.BinaryClassificationEvaluator
weights
在LinearRegression
和LogisticRegression
中的spark.ml
setMaxNumIterations
在mllib.optimization.LBFGS
(標記為DeveloperApi
)treeReduce
和treeAggregate
在mllib.rdd.RDDFunctions
(這些函式直接在RDD
上可用,並標記為DeveloperApi
)defaultStrategy
在mllib.tree.configuration.Strategy
build
在mllib.tree.Node
- libsvm 載入器用於多重類別和載入/儲存標籤資料方法在
mllib.util.MLUtils
可以在 SPARK-14810 找到中斷變更的完整清單。
不建議使用和行為變更
不建議使用
spark.mllib
和 spark.ml
套件中的不建議事項包括
- SPARK-14984:在
spark.ml.regression.LinearRegressionSummary
中,model
欄位已被棄用。 - SPARK-13784:在
spark.ml.regression.RandomForestRegressionModel
和spark.ml.classification.RandomForestClassificationModel
中,numTrees
參數已被棄用,取而代之的是getNumTrees
方法。 - SPARK-13761:在
spark.ml.param.Params
中,validateParams
方法已被棄用。我們將覆寫方法中的所有功能移至對應的transformSchema
。 - SPARK-14829:在
spark.mllib
套件中,LinearRegressionWithSGD
、LassoWithSGD
、RidgeRegressionWithSGD
和LogisticRegressionWithSGD
已被棄用。我們鼓勵使用者使用spark.ml.regression.LinearRegression
和spark.ml.classification.LogisticRegression
。 - SPARK-14900:在
spark.mllib.evaluation.MulticlassMetrics
中,precision
、recall
和fMeasure
參數已被棄用,取而代之的是accuracy
。 - SPARK-15644:在
spark.ml.util.MLReader
和spark.ml.util.MLWriter
中,context
方法已被棄用,取而代之的是session
。 - 在
spark.ml.feature.ChiSqSelectorModel
中,setLabelCol
方法已被棄用,因為ChiSqSelectorModel
沒有使用它。
行為變更
spark.mllib
和 spark.ml
套件中的行為變更包括
- SPARK-7780:
spark.mllib.classification.LogisticRegressionWithLBFGS
現在直接呼叫spark.ml.classification.LogisticRegression
來進行二元分類。這將為spark.mllib.classification.LogisticRegressionWithLBFGS
造成下列行為變更- 使用 L1/L2 Updater 訓練二元分類模型時,不會對截距進行正規化。
- 如果使用者設定不使用正規化,不論是否進行特徵縮放,訓練都會以相同的收斂率回傳相同的解。
- SPARK-13429:為了提供與
spark.ml.classification.LogisticRegression
更佳且一致的結果,spark.mllib.classification.LogisticRegressionWithLBFGS
的預設值:convergenceTol
已從 1E-4 變更為 1E-6。 - SPARK-12363:修正
PowerIterationClustering
的錯誤,可能會變更其結果。 - SPARK-13048:如果使用檢查點,使用
EM
最佳化器的LDA
會預設保留最後一個檢查點。 - SPARK-12153:
Word2Vec
現在會尊重句子邊界。之前它並未正確處理句子邊界。 - SPARK-10574:
HashingTF
在spark.ml
和spark.mllib
中都使用MurmurHash3
作為預設雜湊演算法。 - SPARK-14768:已移除 PySpark
Param
的expectedType
參數。 - SPARK-14931:已變更 Scala 和 Python 中管道之間不匹配的一些預設
Param
值。 - SPARK-13600:
QuantileDiscretizer
現在使用spark.sql.DataFrameStatFunctions.approxQuantile
來尋找分割(之前使用自訂抽樣邏輯)。輸出區段會因相同的輸入資料和參數而有所不同。
從 MLlib 1.5 升級到 1.6
在 spark.mllib
或 spark.ml
套件中沒有中斷 API 變更,但有棄用和行為變更。
不建議使用
- SPARK-11358:在
spark.mllib.clustering.KMeans
中,runs
參數已棄用。 - SPARK-10592:在
spark.ml.classification.LogisticRegressionModel
和spark.ml.regression.LinearRegressionModel
中,weights
欄位已棄用,改用新名稱coefficients
。這有助於消除演算法提供的實例 (列)「權重」的歧義。
行為變更
- SPARK-7770:
spark.mllib.tree.GradientBoostedTrees
:validationTol
已在 1.6 中變更語意。以前,它是錯誤絕對變化的閾值。現在,它類似於GradientDescent
的convergenceTol
行為:對於較大的錯誤,它使用相對錯誤 (相對於先前的錯誤);對於較小的錯誤 (< 0.01
),它使用絕對錯誤。 - SPARK-11069:
spark.ml.feature.RegexTokenizer
:以前,它在進行標記化之前不會將字串轉換為小寫。現在,它預設轉換為小寫,並提供不轉換的選項。這符合較簡單的Tokenizer
轉換器的行為。
從 MLlib 1.4 升級到 1.5
在 spark.mllib
套件中,沒有中斷 API 變更,但有數個行為變更
- SPARK-9005:
RegressionMetrics.explainedVariance
傳回迴歸平方和的平均值。 - SPARK-8600:
NaiveBayesModel.labels
已排序。 - SPARK-3382:
GradientDescent
的預設收斂容許誤差為1e-3
,因此反覆運算可能會比 1.4 早結束。
在 spark.ml
套件中,有一個重大 API 變更和一個行為變更
- SPARK-9268:由於 Scala 編譯器錯誤,已從
Params.setDefault
中移除 Java 的可變長參數支援。 - SPARK-10097:新增
Evaluator.isLargerBetter
來表示指標排序。像 RMSE 之類的指標不再像 1.4 一樣翻轉符號。
從 MLlib 1.3 升級到 1.4
在 spark.mllib
套件中,有幾個重大變更,但都在 DeveloperApi
或 Experimental
API 中
- 梯度提升樹
- (重大變更)
Loss.gradient
方法的簽章已變更。這只會對為 GBT 編寫自己損失函數的使用者造成問題。 - (重大變更) 案例類別
BoostingStrategy
的apply
和copy
方法已變更,因為案例類別欄位已修改。這可能會對使用BoostingStrategy
來設定 GBT 參數的使用者造成問題。
- (重大變更)
- (重大變更)
LDA.run
的傳回值已變更。它現在傳回抽象類別LDAModel
,而不是具體類別DistributedLDAModel
。類型為LDAModel
的物件仍可轉換為適當的具體類型,這取決於最佳化演算法。
在 spark.ml
套件中,發生了幾項重大 API 變更,包括
Param
和用於指定參數的其他 APIuid
管線元件的唯一 ID- 某些類別的重新組織
由於 spark.ml
API 是 Spark 1.3 中的 alpha 元件,因此我們不會在此列出所有變更。然而,由於 1.4 spark.ml
不再是 alpha 元件,因此我們將提供未來版本中所有 API 變更的詳細資訊。
從 MLlib 1.2 升級到 1.3
在 spark.mllib
套件中,有幾個重大變更。第一個變更(在 ALS
中)是元件中唯一未標記為 Alpha 或 Experimental 的變更。
- (重大變更)在
ALS
中,已移除多餘的方法solveLeastSquares
。DeveloperApi
方法analyzeBlocks
也已移除。 - (重大變更)
StandardScalerModel
仍然是 Alpha 元件。其中,variance
方法已變更為std
方法。若要計算原始variance
方法傳回的欄位變異數值,只要將std
傳回的標準差數值平方即可。 - (重大變更)
StreamingLinearRegressionWithSGD
仍然是 Experimental 元件。其中,有兩個變更- 已移除採用引數的建構函數,而採用使用預設建構函數加上參數設定方法的建構函數模式。
- 變數
model
不再是公開的。
- (重大變更)
DecisionTree
仍然是 Experimental 元件。其中及其相關類別有幾個變更- 在
DecisionTree
中,已移除已棄用的類別方法train
。(物件/靜態train
方法仍然存在。) - 在
Strategy
中,已移除checkpointDir
參數。仍然支援檢查點,但必須在呼叫樹狀結構和樹狀結構整體訓練之前設定檢查點目錄。
- 在
PythonMLlibAPI
(MLlib 中 Scala/Java 與 Python 之間的介面)是公開 API,但現在是私有的,宣告為private[python]
。這從來不打算供外部使用。- 在線性回歸(包括 Lasso 和 Ridge 回歸)中,平方損失現在除以 2。因此,為了產生與 1.2 中相同的結果,正規化參數需要除以 2,而步長需要乘以 2。
在 spark.ml
套件中,主要的 API 變更來自 Spark SQL。我們在此列出最重要的變更
- 舊的 SchemaRDD 已被 DataFrame 取代,其 API 略有修改。
spark.ml
中所有以前使用 SchemaRDD 的演算法現在都使用 DataFrame。 - 在 Spark 1.2 中,我們使用隱式轉換,將
LabeledPoint
的RDD
轉換為SchemaRDD
,方法是呼叫import sqlContext._
,其中sqlContext
是SQLContext
的執行個體。這些隱式轉換已移至其他位置,因此我們現在呼叫import sqlContext.implicits._
。 - SQL 的 Java API 也已相應變更。請參閱上述範例和 Spark SQL 程式設計指南 以取得詳細資訊。
其他變更在於 LogisticRegression
scoreCol
輸出欄 (預設值為 “score”) 已重新命名為probabilityCol
(預設值為 “probability”)。類型原本為Double
(用於類別 1.0 的機率),但現在為Vector
(用於每個類別的機率,以在未來支援多類別分類)。- 在 Spark 1.2 中,
LogisticRegressionModel
不包含截距。在 Spark 1.3 中,它包含截距;但是,由於它使用 spark.mllib.LogisticRegressionWithLBFGS 的預設設定,因此它永遠會是 0.0。未來將會新增使用截距的選項。
從 MLlib 1.1 升級到 1.2
MLlib v1.2 中唯一的 API 變更在於 DecisionTree
,它在 MLlib 1.2 中仍然是實驗性質的 API
-
(重大變更)分類的 Scala API 會使用指定類別數目的命名參數。在 MLlib v1.1 中,此參數在 Python 中稱為
numClasses
,在 Scala 中稱為numClassesForClassification
。在 MLlib v1.2 中,兩個名稱都設為numClasses
。此numClasses
參數透過Strategy
或DecisionTree
靜態trainClassifier
和trainRegressor
方法指定。 -
(重大變更)
Node
的 API 已變更。這通常不會影響使用者程式碼,除非使用者手動建構決策樹(而非使用trainClassifier
或trainRegressor
方法)。樹狀Node
現在包含更多資訊,包括預測標籤的機率(用於分類)。 -
列印方法的輸出已變更。
toString
(Scala/Java)和__repr__
(Python)方法用於列印完整模型;現在則列印摘要。如需完整模型,請使用toDebugString
。
Spark 分發中的範例和 決策樹指南 中的範例已做相應更新。
從 MLlib 1.0 升級到 1.1
MLlib v1.1 中唯一的 API 變更在於 DecisionTree
,它在 MLlib 1.1 中仍為實驗性 API。
-
(重大變更)樹狀深度意義已變更 1,以符合 scikit-learn 和 rpart 中樹狀實作。在 MLlib v1.0 中,深度 1 樹狀結構有 1 個葉節點,而深度 2 樹狀結構有 1 個根節點和 2 個葉節點。在 MLlib v1.1 中,深度 0 樹狀結構有 1 個葉節點,而深度 1 樹狀結構有 1 個根節點和 2 個葉節點。此深度由
Strategy
中的maxDepth
參數或DecisionTree
靜態trainClassifier
和trainRegressor
方法指定。 -
(非重大變更)我們建議使用新增加的
trainClassifier
和trainRegressor
方法來建構DecisionTree
,而非使用舊參數類別Strategy
。這些新的訓練方法明確區分分類和迴歸,並以簡單的String
類型取代專門的參數類型。
新的建議 trainClassifier
和 trainRegressor
的範例說明在 決策樹指南 中。
從 MLlib 0.9 升級到 1.0
在 MLlib v1.0 中,我們以統一的方式支援密集和稀疏輸入,這會引進一些重大變更。如果您的資料是稀疏的,請將它儲存在稀疏格式,而不是密集格式,以在儲存和運算中利用稀疏性。詳細資訊說明如下。