数据挖掘

来源:互联网 发布:ctf数据库截断 编辑:程序博客网 时间:2024/05/16 08:30

1. 什么是数据挖掘

随着人类社会活动越来越频繁和多样化,人们积累的数据和信息急速增长。据统计,人类近30年所掌握的信息量占有史以来积累总量的90%。

面对海量的数据,人们经常束手无策。如何更好的利用数据,从大量的数据中提取知识,发现它们之间的关联,挖掘它们的潜在价值?传统数据挖掘系统面临的挑战:

l  模型建立门槛高

一个数据挖掘模型的建立与应用需要高级数据分析专家花费数周乃至数月的时间,而且模型无法复制使用。

l  系统部署维护成本高

数据随着业务增加时,数据挖掘系统无法Scale Out,只能Scale Up,部署成本上升。

电信领域涉及文本挖掘、用户特征分析、用户个性化推荐等众多业务领域,需要重复部署多套数据挖掘系统,学习、部署、维护成本高。

l  模型应用周期时间长

企业的变革,需要实时对运营流程进行动态优化,提高效率。数据挖掘系统只能离线批量定期执行,模型每天或者几天才能运行一次,无法满足实时要求。

SmartMiner是基于华为BES大数据分析平台构建的新一代智能数据挖掘系统。

SmartMiner采用Hadoop分布式平台,具备高性能内存计算能力,预置业界主流挖掘算法,满足电信领域个性化推荐、用户行为分析、精准营销等各种典型场景的数据挖掘诉求。


SmartMiner的特点如下:

l  自动化数据挖掘

门槛低、时间短、可复制、使用导航式的自动化建模流程,可快速创建和更新模型,降低建模难度、缩短建模时间。

主要分为:

  自动化数据准备:丰富的面向缺失、异常、标准化等大数据样本的高效处理方式,自动根据数据特征和算法特征选择合适的分析方式进行数据准备。

  自动筛选属性:丰富的数据检验方式和分析指标,根据数据特征和算法特征自动选择合适的指标进行数据筛选。

  自动评估模型:自动根据每轮建模的反馈调整训练样本,综合多模型优化预测结果。

l  模型实时应用

SmartMiner支持模型的导入导出,支持基于现有模型快速创建新的分析挖掘模型。模型应用时间达到秒级,帮助业务实时进行数据分析,提高运营效率和用户体验。

l  多数据格式

SmartMiner支持四种数据导入方式:本地文件系统、远程文件系统、HDFS文件系统、数据库(JDBC导入)。

l  预置丰富的算法与挖掘模型

SmartMiner内置丰富的算法和分析模型,例如神经网络、贝叶斯、随机森林算法、权重算法(用作重入网分析)、概率传播算法(计算用户影响力)、线性鉴别分析(LDA)、稀疏回归、逻辑回归、稀疏线性、PageRank、衍生属性计算、特征建模、决策树分裂、邻接点分析等。

SmartMiner提供图形化界面,支持以图、表等可视化的方式展示各种数据,典型的流程编辑界面及操作视频如下:

图  典型流程编辑界面及操作视频



2. 开发指南

2.1 使用场景

从数据挖掘的目的来分,SmartMiner的使用场景主要分为分析用户特征和个性化推荐两大类。

分析用户特征

l  用户分类

例如,预测用户是否离网、用户订购套餐。可用的算法如朴素贝叶斯算法和决策树算法。流程配置示例如下图1下图2所示。

图1  朴素贝叶斯


 

图2  决策树


l  数值预测

例如,预测用户消费金额。可用的算法如线性回归算法。流程配置示例如下图所示。

图  线性回归


l  用户群探索

例如,对用户或物品进行无监督分类、根据挖掘结果分析群体特征。可用的算法如Kmeans算法和EM算法。流程配置示例如图2-4所示。

图  Kmeans和EM


个性化推荐

l  基于用户之间或物品之间的相似性或者关联性进行推荐

可用的算法如协同过滤算法和Apriori算法。流程配置示例如下图3下图4所示。

图3  协同过滤


图4  Apriori


 

l  基于个性化的大众物品推荐(即概率传播)

例如,推荐给用户大家都在看或听什么。可用的算法如社交网络算法(“推荐算法”选择“概率传播”)。流程配置示例如下图所示。

图  概率传播


l  基于个性化的小众物品推荐(即热度传播)

例如,猜你喜欢什么。可用的算法如社交网络算法(“推荐算法”选择“热度传播”)。流程配置示例如下图所示。

图  热度传播


l  基于用户个人喜好的推荐

例如,根据你的个人喜欢,猜你喜欢什么。可用的算法如个性化标签算法。流程配置示例如下图所示。

图  个性化标签


l  基于已有用户群数据信息对新用户偏好的推荐

例如,对于新加入的用户,系统采用提问方式将用户匹配用户群,根据匹配的用户群找到这个群中的偏好(如观看次数最多,评分最高的电影),推荐给新用户。可用的算法如判别树算法。流程配置示例如下图所示。

图  判别树推荐



2.2 创建普通流程

使用SmartMiner的普通流程可以手工配置数据挖掘的每个节点,常用于普通数据挖掘流程或者数据挖掘流程的学习。

前提条件

SmartMiner前后台进程已启动。


背景信息

用普通流程进行数据挖掘的流程如下图所示,这也是自动化流程和主题自动化流程进行数据挖掘所依据的基本流程。

数据挖掘流程一般分为两类:模型训练流程和模型应用流程。前者使用训练数据来构建和优化模型,使模型的数据挖掘能够达到一定的准确率;后者使用前者训练好的模型来对实际数据进行数据挖掘。

图  SmartMiner数据挖掘流程

图中各流程节点的说明如下表所示。

表  流程节点说明

流程节点

说明

登录SmartMiner客户端

环境准备阶段,通过在工程中新增流程来启动一次数据挖掘。流程中导入和生成的数据将保存在工程的其他目录中。

新增工程

新增流程

配置源节点

配置需要进行数据挖掘的数据文件,可以使用已导入的数据文件,或者直接从数据库中读取相关表。

配置字段节点

数据预处理阶段之一,可对源数据的字段进行定义,对源数据进行分箱、分区、填充和过滤。

配置记录节点

数据预处理阶段之一,可对源数据进行抽取,或选择满足一定条件的数据进行挖掘。

配置建模节点

选择数据建模使用的算法。

配置应用节点

建模训练完成后,在应用节点中选择已生成的模型文件,对大规模数据进行数据挖掘应用。

配置图形节点

该节点用于统计数据特征值以及对应用后的结果进行评估。例如,计算数据的各项统计值、统计数据的取值范围、计算数据相关性等。可用于处理源数据或者通过数据模型应用产生的数据。

配置数据导出节点

配置导出文件的文件名和导出位置。

该节点可用于将处理后的数据导出至文本文件或数据库已存在的表中。


操作步骤

步骤1   登录系统。

步骤2   新增工程。

步骤3   新增流程。

步骤4   编辑流程。

根据需要将节点面板中的节点拖至右侧编辑区域,完成连线并保存流程。保存流程时如果系统提示流程存在错误,请根据错误提示修改。

步骤5   执行流程。

单击流程编辑页面的工具栏上的,执行流程。

步骤6   查看结果。

流程执行完毕后会在工程其他目录下生成结果文件:

l  在“分析”目录下生成字段分析文件。

l  在“数据”目录下生成数据输出文件。

l  在“评估”目录下生成模型评估文件。

l  在“模型”目录下生成模型文件。


后续处理

通过普通流程开发的流程可发布成主题流程,供主题自动化流程调用。

2.3 创建自动化流程

SmartMiner的自动化流程通过向导的方式设定一些参数,系统自动完成流程的配置。

前提条件

SmartMiner前后台进程已启动。


背景信息

目前自动化流程配置仅支持朴素贝叶斯算法、逻辑回归算法、决策树算法、线性回归算法、Kmeans算法、EM算法和梯度回归决策树(GBDT)算法。

使用自动化流程配置结束后,系统将自动生成三个流程:建模流程、验证流程和应用流程。

l  建模流程用于创建模型,并根据配置的指标评估模型,选出最优模型。

l  验证流程用于对最优模型应用并评估。建模流程执行完毕后系统将自动运行验证流程(有最优模型为前提)。

l  应用流程用于对建模流程选出的最优模型进行应用。

用户在使用自动化流程前,最好准备三份源数据,分别用于建模、验证和应用。

使用自动化向导配置流程共有5个步骤,如下图所示。

图  自动化流程配置步骤

表  配置阶段说明

配置阶段

说明

数据源配置

配置建模流程、验证流程和应用流程的源数据,功能同普通流程中的配置源节点。

字段配置

可以手动配置输入输出字段,配置方法同普通流程中的类型节点;也可以只配置输出字段,由系统自动选择输入字段;针对聚类自动化建模流程,可以不配置字段方向。

执行&效果评估

选择算法和配置评估指标。

l 若有输出字段,则根据输出字段自动选择算法。

输出为“范围”时自动选择数值预测算法。

目前支持线性回归算法和梯度回归决策树算法。

输出为“集合”时自动选择分类算法。

目前支持朴素贝叶斯算法和决策树算法。

输出为“标志”时自动选择分类算法。

目前支持朴素贝叶斯算法、逻辑回归算法、决策树算法和梯度回归决策树算法。

SmartMiner系统将从未配置“方向”的字段中选出与输出字段相关性高的字段作为输入字段,非输入输出字段自动被系统过滤。

l 若无输出字段(仅有输入字段或不配置字段方向),则自动选择聚类算法,目前支持Kmeans算法和EM算法。

应用配置

配置应用流程的数据输出文件格式、文件名、数据导出位置。

模型更新

配置建模和应用流程的定时任务。


操作步骤

步骤1   登录系统。

步骤2   新增工程。

步骤3   新增流程。

流程类型”选择“自动化”。

步骤4   根据向导提示配置各阶段参数,并保存流程。

此时系统会在“流程”文件夹下生成三个流程:

l  自动化流程名_model.xml:建模流程

l  自动化流程名_verify.xml:验证流程

l  自动化流程名_apply.xml:应用流程

步骤5   执行流程。

选择“流程”文件夹下的建模流程,单击“执行”。建模流程运行完毕后将在“模型”文件夹下生成模型文件,当存在最优模型时,会自动运行验证流程。

Sign

系统根据评估指标的执行结果来选择最优模型,最优模型可通过单击流程预览页面的工具栏上的查询。

步骤6   查看“评估”文件夹下的建模和验证流程的评估结果。

如果评估结果满意,则可继续执行应用流程;如果评估结果不满意,请尝试优化源文件或重新配置流程参数。

步骤7   应用最优模型。

选择“流程”文件夹下的应用流程,单击“执行”。

步骤8   查看结果。


后续处理

自动化建模流程支持对执行历史流程查询。选中自动化建模流程,单击流程预览页面的工具栏上的,查看自动化建模流程的执行的历史信息。

如果需要对已有的自动化建模流程进行编辑,可以在流程目录下选中需要编辑的流程,在流程预览页面工具栏上单击编辑按钮,系统即会弹出“自动化向导”页面。


2.4 创建主题自动化流程

普通流程可发布为主题流程,用于实现自动化的快速建模。

前提条件

已经按照业务需要设置了流程,且流程必须满足如下约束。

l  主题建模流程必须没有编辑和运行错误。

l  源节点只能有一个后继节点,且必须为类型节点。

l  必须包括且仅包括一个类型节点。

l  当前版本支持分类、数值预测和聚类算法的自动建模。分类算法目前有决策树、朴素贝叶斯、逻辑回归和梯度回归决策树算法;数值预测算法目前有线性回归和梯度回归决策树算法;聚类算法目前有Kmeans和EM算法。

l  当前版本的主题建模流程建议不要包含分区、抽样、记录选择等节点,否则将导致模型应用时无法应用全部记录。

l  当前版本的主题建模流程建议仅包含建模所需的数据源读入、字段处理、算法等节点,必要的数据分析节点如数据审核、数据相关性分析,不包含运行期不必要的可视化等节点。

l  自动化主题建模时只针对主题中有方向的字段进行处理,如果源主题流程里有对无方向的字段进行处理时,自动化主题建模时就不会生效,建议主题流程里不要对无方向的字段进行处理。

l  输出目标仅支持一个字段,字段类型需要与算法匹配。

l  选定主题流程后,支持后续变更主题流程。即使主题流程被删除,也支持运行自动化流程,但不支持查看和编辑该自动化流程。

l  使用自动化向导配置主题自动化流程共有6个阶段,如下图所示。

图  主题自动化流程配置阶段

表  配置阶段说明

配置阶段

说明

步骤主题选择 步骤选择已发布的主题。 步骤数据源配置 步骤配置建模流程、验证流程和应用流程的数据文件,功能同普通流程中的配置源节点。步骤字段配置 步骤使用源数据中的字段填充主题中的字段。 步骤执行&效果评估 步骤选择算法和配置评估指标。 步骤算法根据主题中的算法自动选择。目前数值预测算法支持线性回归算法和梯度回归决策树算法;分类算法支持朴素贝叶斯算法、逻辑回归算法、决策树算法和梯度回归决策树算法;聚类算法支持Kmeans算法和EM算法。步骤应用配置 步骤配置应用流程的数据输出文件格式、文件名以及数据导出位置。 步骤模型更新 步骤配置建模和应用流程的定时任务。

操作步骤

步骤1     发布普通流程为主题流程。

1. 单击需要发布为主题的流程。

2. 单击工具栏上发布为主题的按钮。

如下图所示

图  发布为主题



3. 页面未提示报错表示发布成功。

步骤2     使用已生成的主题建立数据挖掘流程。

1. 新增流程。

流程类型选择“主题自动化”。

2. 在“主题选择”环节选择步骤1中发布的主题。

3. 根据向导提示配置剩余阶段参数,并保存流程。

此时系统会在“流程”文件夹下生成三个流程:

  自动化流程名_model.xml:建模流程

  自动化流程名_verify.xml:验证流程

  自动化流程名_apply.xml:应用流程

4. 选择“流程”文件夹下的建模流程,单击“执行”。

5. 查看“评估”文件夹下的建模评估结果。

6. 应用模型。

选择“流程”文件夹下的应用流程,单击“执行”。

7. 查看结果。

3. 接口参考

3.1 获取模型接口

接口介绍

SmartMiner提供获取模型接口,通过getModel()方法获取模型。

ModelFactory.getInstance().getModel(String modelName) /**  * 获取模型  * @param modelName  模型名称   * @return Model     模型对象  * @throws Exception  */ public Model getModel(String modelName) throws Exception

接口参数说明

getModel()方法包含参数如下表所示。

表  getModel()方法属性

参数

类型

含义

modelName

string

模型名称。


场景举例

SmartMiner生成贝叶斯模型之后,通过getModel()方法获取贝叶斯模型。

ModelFactory.getInstance().getModel("/home/smartm/smartminer/Projects/project/Model/NaiveBayes.mod") 

3.2 模型缓存刷新接口

接口介绍

SmartMiner提供模型缓存刷新接口。通过refresh()方法刷新模型。

ModelFactory.getInstance().refresh(String modelName) /**  * 刷新缓存  * @param modelName  模型名称   * @return void  */ public void refresh(String modelName) throws Exception


接口参数说明

模型缓存刷新接口包含参数如下表所示。

表  refresh()方法参数

参数

类型

含义

modelName

string

模型名称。


场景举例

通过调用缓存刷新接口,刷新贝叶斯模型。

ModelFactory.getInstance().refresh("/home/smartm/smartminer/Projects/project/Model/NaiveBayes.mod") 

3.3 模型应用接口

接口介绍

SmartMiner提供模型应用接口,通过apply()方法应用生成的模型。

Model.apply(Map mapData) /**  * 模型应用接口  *   * @param Map      * @return Map        */ public Map apply(Map mapData)


接口参数说明

模型应用接口包含属性如下表所示。

表  apply()方法参数

参数

类型

含义

mapData

Map

预测数据。


场景举例

Model model = ModelFactory.getInstance().getModel("/home/smartm/smartminer/Projects/project/Model/NaiveBayes.mod");//获取贝叶斯模型 Map<String,Object>mapData = new HashMap<String,Object>();//定义一个map对象 mapData.put("confectionery", "1");//输入数据 Map map = model.apply(mapData);//贝叶斯模型应用

3.4 获取模型输入参数接口

接口介绍

SmartMiner提供getFeatureNames()方法,获取模型输入特征属性名。

public class Model {     ……      /**      * 模型应用对象      */     private ModelApply modelApply;     ……      /**      * 获取模型输入特征属性名      *       * @return String[]       */     public String[] getFeatureNames()     {         return modelApply.getFeatureNames();     }     …… }

场景举例

通过getFeatureNames()方法获取贝叶斯模型输入特征属性名。

Model model = ModelFactory.getInstance().getModel("/home/smartm/smartminer/Projects/project/Model/NaiveBayes.mod");//获取贝叶斯模型 String[] fieldName = model.getFeatureNames();//获取模型输入特征属性名

3.5 协同过滤应用接口

接口介绍

SmartMiner提供CFModel接口,获取带推荐用户的ID、待推荐最大数目等相关信息从而进行基于用户或者项目的协同过滤。

public interface CFModel {     /**      * 基于用户的协同过滤      *       * @param inputData 用来存储协同过滤应用输入数据信息      * @return Map 推荐结果的map      */     public abstract Map<String, String> applyByUser(CFDataInfo cfData);          /**      * 基于项目的协同过滤      *       * @param inputData 用来存储协同过滤应用输入数据信息      * @return Map 推荐结果的map      */     public abstract Map<String, String> applyByItem(CFDataInfo cfData); } 


接口参数说明

协同过滤应用方法的接口参数说明如下表所示。

表  Collaborative filtering interface

参数

类型

含义

cfData

CFDataInfo

CFDataInfo是一个自定义的类,其中定义的信息如下:

l userId

待推荐的用户ID。

l maxCount

待推荐的最大数目。

l rateMap

用户的项目评分列表。

l corrMap

当通过相似用户推荐时,则为用户相似度列表;当通过相似项目推荐时,则为项目相似度列表。

l recSet

待推荐的项目列表。

l filterSet

过滤的项目列表。

l maxPrefs

相似用户评分最大个数。

l maxCorrs

相似项目的数目。

l autoFilter

自动过滤已评分的项目标识。


4. 技术支持

您可以登录到CSDN论坛Universe大数据版块寻求帮助

0 0