鲲鹏社区首页
中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

PrefixSpan

PrefixSpan为MLlib API类模型接口。

模型接口类别

函数接口

MLlib API

def run[Item, Itemset <: Iterable[Item], Sequence <: Iterable[Itemset]](data: JavaRDD[Sequence]): PrefixSpanModel[Item]

def run[Item](data: RDD[Array[Array[Item]]])(implicit arg0: ClassTag[Item]): PrefixSpanModel[Item]

MLlib API

  • 功能描述

    传入RDD格式的序列数据,设置最小支持度和最大模式长度,调用run接口,输出满足条件的全部频繁序列。

  • 输入输出
    1. 包名package org.apache.spark.mllib.fpm
    2. 类名:PrefixSpan
    3. 方法名:run
    4. 输入:JavaRDD[Sequence] / RDD[Array[Array[Item]]],全量的序列数据
    5. 算法参数

      算法参数

      MaxLocalProjDBSize

      Prefix本地求解所允许的最大投影数据量

      MaxPatternLength

      频繁序列模式的最大长度

      MinSupport

      频繁序列模式的最小支持度

    6. 新增算法参数。

      参数名称

      spark conf参数名

      参数含义

      取值类型

      localTimeout

      spark.boostkit.ml.ps.localTimeout

      本地求解的超时时间,单位是秒

      Int,缺省值为300,必须大于等于0

      filterCandidates

      spark.boostkit.ml.ps.filterCandidates

      是否过滤prefix候选集

      Boolean,缺省值为false

      projDBStep

      spark.boostkit.ml.ps.projDBStep

      进阶参数,通常保持缺省值即可;投影数据量的调整步调

      Double,缺省值为10

      参数及run代码接口示例:

      1
      2
      3
      4
      5
      val prefixSpan = new PrefixSpan()
              .setMinSupport(params.minSupport)
              .setMaxPatternLength(params.maxPatternLength)
              .setMaxLocalProjDBSize(params.maxLocalProjDBSize)
      val model = prefixSpan.run(sequences)
      
    7. 输出:PrefixSpanModel[Item],频繁序列模型
  • 使用样例
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    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}")
    }
    
  • 结果样例
    1
    2
    3
    4
    5
    [[2]], 3
    [[3]], 2
    [[1]], 3
    [[2, 1]], 3
    [[1], [3]], 2