八, Частая картина горнодобывающей промышленности
Добыча частого пункта, наборов элементов, последовательностей, или других вспомогательных структуры часто являются первым шагом в анализе больших массивов данных, который является предметом активных исследований в добыче данных на протяжении многих лет. Мы рекомендуем вам обратиться к Википедии, чтобы узнать правила объединения для получения дополнительной информации. Обеспечение параллельной реализации FP РОСТА spark.mllib, это популярный алгоритм для добычи часто встречающихся наборов.
FP-рост
ФП - алгоритм. Рост Han и др Paper описал алгоритм для добычи частых образцов без образования кандидата, где «FP» представляет собой частый рисунок. Учитывая набор данных транзакций, то первый шаг должен вычислить FP увеличить частоту проекта и определить частый проект. Подобный алгоритм Apriori предназначен для одной и того же целей разные, FP-роста на втором этапе с помощью суффикса дерева (FP-дерево) коды транзакций структуры, без явного создания набора кандидатов, которые, как правило , дорого. После второго шага, частые наборы пункта могут быть извлечены из дерева FP. В spark.mllib, мы поняли , что параллельная версия называется FP-роста ПИМ, таких как Li и др. , PFP: Параллельный запрос FP-рост для рекомендации. Распределение PFP в соответствии с работой суффиксов дел роста дерева FP, и , следовательно , достичь более масштабируемым , чем автономные. Мы предоставляем пользователь с дополнительной информацией, пожалуйста , обратитесь к этим работам.
spark.mllib из FP-роста достигается с помощью следующих (супер) параметры:
- minSupport: установить минимальную поддержку проекта, наборы проекта определяются часто. Например, если транзакция происходит в пять 3, который поддерживает скорость 3/5 = 0,6.
- numPartitions: по количеству разделов, распределять работу.
Пример кода
import org.apache.spark.mllib.fpm.FPGrowth
import org.apache.spark.rdd.RDD
val data = sc.textFile("data/mllib/sample_fpgrowth.txt")
val transactions: RDD[Array[String]] = data.map(s => s.trim.split(' '))
val fpg = new FPGrowth()
.setMinSupport(0.2)
.setNumPartitions(10)
val model = fpg.run(transactions)
model.freqItemsets.collect().foreach { itemset =>
println(s"${itemset.items.mkString("[", ",", "]")},${itemset.freq}")
}
val minConfidence = 0.8
model.generateAssociationRules(minConfidence).collect().foreach { rule =>
println(s"${rule.antecedent.mkString("[", ",", "]")}=> " +
s"${rule.consequent .mkString("[", ",", "]")},${rule.confidence}")
}
ассоциативные правила
AssociationRules достичь параллельного алгоритма генерации правила, правило конфигурируется с помощью одного результата.
Пример кода
import org.apache.spark.mllib.fpm.AssociationRules
import org.apache.spark.mllib.fpm.FPGrowth.FreqItemset
val freqItemsets = sc.parallelize(Seq(
new FreqItemset(Array("a"), 15L),
new FreqItemset(Array("b"), 35L),
new FreqItemset(Array("a", "b"), 12L)
))
val ar = new AssociationRules()
.setMinConfidence(0.8)
val results = ar.run(freqItemsets)
results.collect().foreach { rule =>
println(s"[${rule.antecedent.mkString(",")}=>${rule.consequent.mkString(",")} ]" +
s" ${rule.confidence}")
}
PrefixSpan
Пейте и др PrefixSpan является: последовательным режим «режим роста путем последовательной горной модели PrefixSpan Метода» описан в разработке алгоритма. Мы приводим ссылки для читателей стандартизированы последовательная картиной проблемы добычи.
spark.mllib из PrefixSpan достигается с использованием следующих параметров:
- minSupport: рассматривается как минимум, необходимый для поддержания частого последовательного режима.
- maxPatternLength: Частая максимальная длина последовательного режима. Любой частый рисунок вне этой длины не включаются в результаты.
- maxLocalProjDBSize: Перед началом баз данных проекта локально итеративной обработки, проецирование префикс базы данных позволил максимальное количество элементов. Этот параметр должен быть отрегулирован в соответствии с размером выполнения программы.
Примеры
Следующие примеры иллюстрируют работу последовательно на PrefixSpan (PEI и др, используя те же обозначения.):
<(12)3>
<1(32)(12)>
<(12)5>
<6>
Пример кода
import org.apache.spark.mllib.fpm.PrefixSpan
val sequences = sc.parallelize(Seq(
Array(Array(1, 2), Array(3)),
Array(Array(1), Array(3, 2), Array(1, 2)),
Array(Array(1, 2), Array(5)),
Array(Array(6))
), 2).cache()
val prefixSpan = new PrefixSpan()
.setMinSupport(0.5)
.setMaxPatternLength(5)
val model = prefixSpan.run(sequences)
model.freqSequences.collect().foreach { freqSequence =>
println(
s"${freqSequence.sequence.map(_.mkString("[", ", ", "]")).mkString("[", ", ", "]")}," +
s" ${freqSequence.freq}")
}
Десять, PMML модель экспорта (PMML модель получена)
spark.mllib поддерживаются модели
spark.mllib поддержки экспорта моделей в Predictive Model Markup Language (PMML).
В следующей таблице приведены spark.mllib могут быть экспортированы в модели Модель PMML PMML и их эквиваленты.
примеров
Для поддержки модели (смотрите таблицу выше) Экспорт в PMML, просто позвоните model.toPMML.
Помимо экспорта моделей PMML строки (model.toPMML выше примера), вы также модель PMML могут быть экспортированы в другие форматы.
Для получения дополнительной информации о API, см KMeans Scala документации и векторы Scala документов.
Вот полный пример для построения KMeansModel и распечатаны в PMML:
import org.apache.spark.mllib.clustering.KMeans
import org.apache.spark.mllib.linalg.Vectors
// Load and parse the data
val data = sc.textFile("data/mllib/kmeans_data.txt")
val parsedData = data.map(s => Vectors.dense(s.split(' ').map(_.toDouble))).cache()
// Cluster the data into two classes using KMeans
val numClusters = 2
val numIterations = 20
val clusters = KMeans.train(parsedData, numClusters, numIterations)
// Export to PMML to a String in PMML format
println(s"PMML Model:\n ${clusters.toPMML}")
// Export the model to a local file in PMML format
clusters.toPMML("/tmp/kmeans.xml")
// Export the model to a directory on a distributed file system in PMML format
clusters.toPMML(sc, "/tmp/kmeans")
// Export the model to the OutputStream in PMML format
clusters.toPMML(System.out)