想象一下,我正在训练Spark MLlib模型如下:
val traingData = loadTrainingData(...)
val logisticRegression = new LogisticRegression()
traingData.cache
val logisticRegressionModel = logisticRegression.fit(trainingData)
电话traingData.cache
是否会在培训时提高效果,还是不需要?
ML算法的.fit(...)
方法是否在内部调用cache / unpersist?
答案 0 :(得分:2)
无需为Spark LogisticRegression(以及其他一些模型)调用timedelta64[ns]
。 LogisticRegression中的.cache
方法(由train
调用)实现如下:
Predictor.fit(...)
后来......
override protected[spark] def train(dataset: Dataset[_]): LogisticRegressionModel = {
val handlePersistence = dataset.rdd.getStorageLevel == StorageLevel.NONE // true if not cached-persisted
train(dataset, handlePersistence)
}
这通常比对if (handlePersistence) instances.persist(StorageLevel.MEMORY_AND_DISK)
的自定义调用更有效,因为上面一行中的.cache
只包含instances
而不包含其余数据。