• 【SPMF开源数据挖掘平台入门】MaxSP算法使用说明


    前段时间,由于项目中用到了序列挖掘的算法,师兄推荐我用用SPMF。在此做个记录。

    首先简单介绍一下SPMF:

    SPMF是一个采用Java开发的开源数据挖掘平台。

    它提供了51种数据挖掘算法实现,用于:

    • 序列模式挖掘,
    • 关联规则挖掘,
    • frequent itemset 挖掘,
    • 顺序规则挖掘,
    • 聚类

    HOME PAGE:http://www.philippe-fournier-viger.com/spmf/

    image


    首先还是学习一下序列挖掘的有关概念:

    所谓序列模式,我的定义是:在一组有序的数据列组成的数据集中,经常出现的那些序列组合构成的模式。跟我们所熟知的关联规则挖掘不一样,序列模式挖掘的对象以及结果都是有序的,即数据集中的每个序列的条目在时间或空间上是有序排列的,输出的结果也是有序的。
    举个简单的例子来说明,关联规则一个经典的应用是计算超市购物中被共同购买的商品,它把每个顾客的一次交易视作一个transaction,计算在不同transaction中不同item组合的规律性。而如果我们考虑一个用户多次在超市购物的情况,那么这些不同时间点的交易记录就构成了一个购买序列,N个用户的购买序列就组成一个规模为N的序列数据集。考虑这些时间上的因素之后,我们就能得到一些比关联规则更有价值的规律,比如关联挖掘经常能挖掘出如啤酒和尿布的搭配规律,而序列模式挖掘则能挖掘出诸如《育儿指南》->婴儿车这样带有一定因果性质的规律。所以,序列模式挖掘比关联挖掘能得到更深刻的知识。
    在实际当中,序列模式挖掘被广泛地应用于各种序列数据集中,如生物信息学上的基因微阵列数据,从中挖掘哪些基因组合模式在某类病人中会频繁出现;以单词作为item的文档序列,研究在不同文档中单词序列的出现模式;用户点击流数据,用于挖掘用户的频繁点击模式,建立用户模型,完善网站功能与UI结构。除此之外还有很多,只要是序列数据集,都可以考虑利用序列模式挖掘获得规律。
    图1是一个序列数据库,及其以0.75作为最小阈值(min_sup)的频繁序列模式。借此介绍序列挖掘中的几个主要概念。

    image

    图1 简单的序列数据库,基本概念

    序列(Sequence):以SID表示,一个序列即是一个完整的信息流。 项目(Item):序列中最小组成单位的集合,比如在这个样例中的项目为{A, B, C}。 事件(Event):通常用时间戳标志,标识事件之间的前后关系。又叫Itemset,是Item的集合,样例中以EID表示。 k频繁序列:如果频繁序列的项目个数为k,则称之为k频繁序列,以Fk表示(图1的F1,F2,F3)。 序列的包含关系:对于序列x和y,如果存在着一个保序的映射,使得x中的每个事件都被包含于y中的某个事件,则称为x被包含于y(x是y的子序列),例如序列B->AC是序列AB->E->ACD的子序列。 支持度(support):某序列x的支持度是指在整个序列集中包含x的序列的频次。 有了以上概念之后,序列模式挖掘的问题就定义为:给定一个序列数据库以及最小支持度min_sup,找出所有支持度大于min_sup的序列模式。 (引自:http://www.360doc.com/content/11/0924/09/7511080_150810319.shtml


    MaxSP算法介绍:(来自spmf中,MaxSP算法ppt中的例子)
    image
    也就是说,我在有一个上图的database的情况下,可以利用算法挖掘出支持度大于minsup的pattern。
    可以看到,算法找出的是最大序列模式——maximal sequential patterns
    image
     
    首先对pattern做了分类:1:sequential patterns;2:closed patterns;3:maximal patterns
    image
    如何判断是否为最大Maximal呢?

    image

    什么意思呢?如下例子:

    image

    因为有{{a},{g}},所以虽然{{a}}的支持度大于minsup,但还是不会被输出,因为他不是maximal。


    以使用MaxSP算法为例,来介绍SPMF的使用:

    Algorithm——算法说明pdf+ppt下载下来

    image

    打开ppt可以看到对MaxSP的介绍:(ppt和pdf的内容基本相同)


    download——源码,jar包

    image


    document——example

    image

    找到MaxSP即可看到算法说明:

    image

    image

    里面说了有三种方式可以执行算法:

    1:可视化的界面:http://www.philippe-fournier-viger.com/spmf/how_to_run_graphical_interface.php

    image

    2:命令行运行;

    3:IDE中,直接copyMainTestMaxSP_saveToFile.java

    如果你用的是eclipse的话,只需要把输入按照规定的格式改好,然后做一下简单的修改就可以用啦。

    这里附上demo供大家参考:https://github.com/XBWer/SPMF_MaxSP

  • 相关阅读:
    [翻译]关于堆和堆栈
    sql 字符+数值 混合排序 lcs
    证明DataReader分页的可行性 lcs
    谈谈我对小公司、大公司及个人成长的见解 lcs
    sina 通用js代码说明 lcs
    Linux系统下生成证书 https证书
    【转】51单片机外部中断的C51编程
    【转】如何建立个人网站
    【转】关于C51的中断编程[原创]
    【转】毫不费力:破解加密PDF文档就使用这两三招
  • 原文地址:https://www.cnblogs.com/XBWer/p/4242319.html
Copyright © 2020-2023  润新知