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

首先简单介绍一下SPMF:

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

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

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

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


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

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

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

什么意思呢?如下例子:

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


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

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

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


download——源码,jar包


document——example

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

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

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

2:命令行运行;

3:IDE中,直接copyMainTestMaxSP_saveToFile.java

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

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

【SPMF开源数据挖掘平台入门】MaxSP算法使用说明的更多相关文章

  1. 开源安全平台Ossim 4.5系统使用入门(高清视频)

    开源安全平台Ossim 4.5系统使用入门 时长:15分钟 观看地址: http://www.tudou.com/programs/view/Yb0m4vPYlIQ/ 视频截图: 650) this. ...

  2. ITTC数据挖掘平台介绍(五) 数据导入导出向导和报告生成

    一. 前言 经过了一个多月的努力,软件系统又添加了不少新功能.这些功能包括非常实用的数据导入导出,对触摸进行优化的画布和画笔工具,以及对一些智能分析的报告生成模块等.进一步加强了平台系统级的功能. 马 ...

  3. Kaggle大数据竞赛平台入门

    Kaggle大数据竞赛平台入门 大数据竞赛平台,国内主要是天池大数据竞赛和DataCastle,国外主要就是Kaggle.Kaggle是一个数据挖掘的竞赛平台,网站为:https://www.kagg ...

  4. ITTC数据挖掘平台介绍(七)强化的数据库, 虚拟化,脚本编辑器

    一. 前言 好久没有更新博客了,最近一直在忙着找工作,目前差不多尘埃落定.特别期待而且准备的都很少能成功,反而是没怎么在意的最终反而能拿到,真是神一样的人生. 言归正传,一直以来,数据挖掘系统的数据类 ...

  5. 开源任务管理平台TaskManager介绍

    很早之前准备写Quartz系列文章,现在终于能够实现了.从本篇开始将带你实现一款自己的任务管理平台.在工作中你曾经需要应用执行一个任务吗?这个任务每天或每周星期二晚上11:30,或许仅仅每个月的最后一 ...

  6. odoo:开源 ERP/CRM 入门与实践 -- 上海嘉冰信息技术公司提供咨询服务

    odoo:开源 ERP/CRM 入门与实践 看了这张图,或许你对odoo有了一些兴趣. 这次Chat就是和大家一起交流开源ERP/CRM系统:odoo 对以下读者有帮助:研发.产品.项目.市场.服务. ...

  7. Hadoop平台K-Means聚类算法分布式实现+MapReduce通俗讲解

        Hadoop平台K-Means聚类算法分布式实现+MapReduce通俗讲解 在Hadoop分布式环境下实现K-Means聚类算法的伪代码如下: 输入:参数0--存储样本数据的文本文件inpu ...

  8. 开源任务管理平台TaskManagerV2.0介绍及升级说明

    上一篇开源任务管理平台TaskManager介绍发布后,有网友联系我看看能不能做个后台管理界面,方便管理系统中所有的任务.由于时间和技术问题1.0版本的时候,新增了一个3分钟读取配置文件动态修改任务的 ...

  9. 如何在Form++开源组态平台添加硬件采集接口

    E-Form++是一套值得推荐的高品质开源C++矢量图形库,C++编程之所以异常困难,主要就是没有很专业的C++基础架构库有关.E-Form++的出现一定程度上填补了这个空白.是开发工控.监控.建模与 ...

随机推荐

  1. e798. 显示JSlider的标记标签

    This example demonstrates how to display labels (numerical values) at the major ticks (see e797 显示JS ...

  2. e613. Modifying the Focus Traversal Order

    JFrame frame = new JFrame(); JButton component1 = new JButton("1"); JButton component2 = n ...

  3. Xianfeng轻量级Java中间件平台:基于RBAC模型实现权限控制的原理

    首先,白话一下RBAC模型.RBAC是基于角色的访问控制(Role-Based Access Control)的简称.RBAC认为权限授权实际上是Who.What.How的问题.在RBAC模型中,wh ...

  4. Linux--nginx域名绑定-url rewrite

    进入/usr/local/nginx/conf 编辑 nginx.conf 绑定域名: 添加一个 server元素,更改后的配置内容可能如下: server { listen       80; se ...

  5. Linux中Subversion配置实例

    一.安装 yum install subversion 二.配置 本系统采用为每个项目单独建一版本库的策略.配置文件,密码文件,访问控制文件等都放在版本库的conf目录下. 所以每次开始一个新项目都必 ...

  6. Python学习(五)——列表操作全透析

    列表是以类的形式实现的. "创建"列表实际上是将一个类实例化. 因此,列表有多种方法能够操作. Python列表操作的函数和方法 列表操作包括下面函数: 1.cmp(list1, ...

  7. linux 系统安装mysql (rpm)

    其实按照本文安装成功,但是启动依然有问题:最好参考链接配置. http://blog.csdn.net/xiaoxiaoxuewen/article/details/7550107 我用的是ubunt ...

  8. Hopewell Project Sharing项目总结分享PPT

    这篇随笔记录的是2013年底,Hopewell Project已经成功验收后,开项目分享会所编写的PPT. 由于此项目是本人带领Team成员一起开发,而且关键技术是自己把控,所以公司希望能开个项目分享 ...

  9. UNIX环境编程学习笔记(15)——进程管理之进程终止

    lienhua342014-10-02 1 进程的终止方式 进程的终止方式有 8 种,其中 5 种为正常终止,它们是 1. 从 main 返回. 2. 调用 exit. 3. 调用_exit 或_Ex ...

  10. Capability Model

    Data Scientist, Analytics We’re looking for data scientists to work on our core and business product ...