什么是数据挖掘?
- 数据挖掘不是简单地从网络或数据库搜索数据。
- 数据挖掘与知识发现 (Knowledge Discovery in Database, KDD) 相关。
数据挖掘 (Data Mining, DM) 定义
- 通用定义: 数据挖掘是发现数据中潜在的有用模式(信息、知识、规律、模型)的过程。
- 例如:猎人在动物迁徙行为中寻找模式,农夫在庄稼生长中寻找模式,政客在选民意见中寻找模式。
- 技术角度: 利用一种或多种计算机学习技术,从数据中自动分析并提取信息的处理过程。
- 目的是寻找和发现数据中潜在的、有价值的信息、知识、规律、联系和模式。
- 与计算机科学有关,通常使用机器学习、统计学、联机分析处理、专家系统和模式识别等多种方法实现。
- 学科角度: 是一门交叉学科,涉及数据库技术、人工智能技术、统计学、可视化技术、并行计算等多种技术。
- 商业角度: 是一种商业智能信息处理技术。
- 围绕商业目标开展,对大量商业数据进行抽取、转换、分析和处理。
- 从中提取辅助商业决策的关键性数据,揭示隐藏的、未知的或验证已知的规律性。
- 是一种深层次的商业数据分析方法。
数据挖掘与知识发现 (KDD) 的关系
- KDD 是指从数据中发现有用知识的整个过程。
- 数据挖掘 是 KDD 过程中的一个特定步骤。
- 数据挖掘是特定算法的应用,用于从数据中提取模式。
- KDD 过程的步骤:
- 选择: 从数据到目标数据。
- 预处理: 将目标数据转换为已处理数据。
- 转换: 将处理后的数据转换为转换数据。
- 数据挖掘: 将数据转换为模式。
- 解释和/或评估模式: 将模式转化为知识。
数据挖掘的四个“超级问题”或能做什么
数据挖掘的核心任务或可以解决的问题包括:预测、聚类、关联分析和异常分析。进一步细化为以下几项功能:
分类 (Classification)
- 目的: 使用已知类别的实例建立分类模型,对未知类别的实例进行分类。
- 输出: 离散量。
- 类别数: 确定。
- 应用示例: 评估信用卡申请者的风险等级(低、中、高)。
- 与聚类的区别: 分类通过有标注语料学习假设函数、确定决策分界。
估值 (Estimation)
- 目的: 根据已知属性值,估计一个连续值的输出。
- 输出: 连续值。
- 量: 不确定。
- 应用示例: 根据购买模式,估计一个家庭的孩子个数、收入或财产。
- 与分类的区别: 类似于分类,但输出是连续值。
预测 (Prediction)
- 目的: 通过分类或估值得出预测模型,用该模型对未知变量进行预测。
- 方法: 通常通过分类或估值的方法来实现。
- 应用示例: 预测明天上证指数的收盘价。
相关分析 (Association Analysis)
目的: 发现数据中属性之间的有价值的联系。生成关联规则,表达客户购买行为的关联关系。
应用示例: 购物篮分析 (Market Basket Analysis)——寻找零售产品之间有趣的关系,如购买A同时是否经常购买B。
方法: 生成关联规则。关联规则可以有多个输出属性。
算法: 最著名的是 Apriori 算法 (Agrawal, 1993)。Apriori 算法不支持数值型数据,需进行数据变换。
关联规则示例
(基于感冒数据集):
- IF Leukocytosis = Yes THEN Fever = Yes
- IF Increased-lym = No THEN Sore-throat = Yes
- IF Cooling-effect = Good THEN Fever = Yes
聚类 (Clustering)
目的: 对实例分组,把相似的实例放在一个聚类(簇)中。发现最能区分各聚类的典型属性,使用这些属性开发预测未来结果的模型。
特点: 是一种无指导(无教师)的学习。在学习训练之前,无预先定义好分类的实例。
方法: 数据实例按照某种相似性度量方法计算相似程度,将最相似的实例聚类在一个组——簇 (Cluster) 中。然后解释和理解每个簇的含义。
应用示例: 在信用卡公司,发现一组输入属性来区分接受寿险促销和未接受促销的持卡人。市场细分、社交圈分析、集群计算、天体数据分析。
与分类的区别: 聚类通过簇内相似度及簇间的距离对不同簇进行划分。
聚类技术/算法: 基于划分(如 K-means)、基于分层、基于模型等。K-means (K-均值) 算法 是一种最为常用和易用的算法。
K-means 算法过程: 迭代过程,分为簇分类和移动聚类中心。
- 指定一个初始的簇的个数 (K)。
- 任意选定 K 个对象作为初始簇中心。
- 根据与簇中心的距离,每个对象被分配给最近的一个簇(簇分类)。
- 计算每个簇中样本点的平均值,将相应的聚类中心移动到这个均值处。
- 重复迭代,直到没有对象被重新分配或聚类中心不再改变。
聚类结果示例
(基于感冒数据集,K=2): 聚类为两个簇,每个簇有5个实例。
- Cluster0 = {1,3,4,8,9}
- Cluster1 = {2,5,6,7,10}
- 簇的概念结构可表示为产生式规则。
异常分析 (Anomaly Analysis) / 异常检测 (Anomaly Detection)
- 目的: 通过数据挖掘方法发现与数据集分布不一致的异常数据。也被称为离群点、异常值检测。
- 适用场景特点:
- (1) 无标签或者类别极不均衡。
- (2) 异常数据跟样本中大多数数据的差异性较大。
- (3) 异常数据在总体数据样本中所占的比例很低。
- 常见应用案例:
- 金融领域: 识别“欺诈用户”(信用卡申请欺诈、盗刷、信贷欺诈)。
- 安全领域: 判断流量数据波动和是否受到攻击。
- 电商领域: 识别“恶意买家”(羊毛党、恶意刷屏团伙)。
- 生态灾难预警: 基于天气指标数据判断极端天气。
- 医疗监控: 从医疗设备数据发现可能显示疾病状况的异常数据。
与数据挖掘有关的概念
- 数据查询 (Data Query)
- 通过数据查询语言在数据中找出需要的数据或信息。
- 与数据挖掘的区别: 数据查询获取的是浅知识或多维知识,而数据挖掘获取的是潜在的、隐藏的信息或知识——隐含知识 (Hidden Knowledge)。
- 专家系统 (Expert System)
- 一种具有“智能”的计算机软件系统。
- 能够模拟某个领域人类专家的决策过程,解决复杂问题。
- 通常包含以规则形式表示的领域专家的知识和经验。
- 专家系统方法与数据挖掘方法有所不同。
- 机器学习 (Machine Learning)
- 是数据挖掘中常用的技术方法之一。
- 概念学习 (Concept Learning): 通过大量实例训练发现经验化规律。结果通常表现为概念。机器擅长学习概念。概念可以从传统、概率、样本三个角度看待。
- 归纳学习 (Induction-Based Learning): 基于归纳的学习,是机器学习的一种方式。通过观察特定实例、研究已有经验材料,获取和探索新知识,以概念形式表现。
- 有指导的学习 (Supervised Learning):
- 定义: 通过对大量已知分类或输出结果值(有标记 labels)的实例进行训练。调整模型结构,建立能够准确分类或预测未知模型的目的。
- 用于:分类、估值、预测。
- 数据: 使用有标注数据集 (x(1),y(1)),(x(2),y(2)),…,(x(m),y(m))。
- 目标: 学习出假设函数、确定决策分界。
- 示例方法: 决策树、神经网络、回归分析。
- 无指导的聚类 (Unsupervised Clustering):
- 定义: 无指导(无教师)的学习。未给出具体的标记 y(m),仅有数据集 (x(1), x(2),…,x(m))。
- 用于:聚类。
- 目标: 算法对同一类的进行划分。
- 示例方法: K-means 算法、凝聚聚类方法、概念分层 Cobweb 算法、EM 算法。神经网络也可以建立无指导聚类模型。
有监督学习的具体方法举例
决策树 (Decision Tree)
- 一种倒立树。
- 非叶子节点表示在一个属性上的分类检查。
- 叶子节点表示决策判断的结果。
- 有很多算法 (文本提到 C4.5)。
- 可以被翻译为一个产生式规则集合。
- 产生式规则格式: IF 前提条件 THEN 结论。
- 示例 (基于感冒类型诊断): IF Sore-throat = No THEN Cold-type = Viral 等。
神经网络 (Neural Network)
一种具有统计特性的数学模型。
创建思想源于人类神经网络的结构、功能和运行过程。
试图模拟人脑功能来完成学习。
是非常流行的数据挖掘技术。
可以建立有指导学习模型和无指导聚类模型。
输入属性必须是数值的,输出属性可以是数值的或分类的。
前馈 (Feed-Forward) 神经网络
是常用的有指导的学习模型。
- 通常是全连接的:每一层的每个节点都与其下一层的所有节点相连接,同层节点不相连。每个网络连接有权重值。
建立神经网络模型的两个阶段:
- 学习训练阶段: 提交实例输入属性值,计算输出,与期望输出比较产生误差,通过修改连接权值传回网络。训练终止条件:达到迭代次数或错误率收敛。
- 检验阶段: 固定网络权重,用于计算新实例的输出值。
回归分析 (Regression Analysis)
- 一种有监督的统计分析方法。
- 用来确定两个或两个以上变量之间的定量的依赖关系。
- 建立一个数学方程作为数学模型,来概化一组数值数据。
- 进而进行数值数据的估值和预测。
- 示例: 使用回归方程预估办公楼的价值。
数据挖掘的过程 (KDD过程中的数据挖掘阶段)
数据挖掘实验通常分为4个步骤:
- 准备数据:
- 重要且费时。
- 明确目标后,从传统数据库、数据仓库和平面文件收集和抽取数据。
- 传统数据库: 操作型数据库,面向日常事务处理,关系模型,规范化二维关系表。
- 数据仓库: 面向决策支持,非日常事务处理。
- 平面文件: 数据量较小的数据集,如 Excel 电子表格。
- 包括准备训练数据和检验数据。
- 挖掘数据:
- 选择一种数据挖掘技术或算法,将数据提交给数据挖掘工具,应用算法建立模型。
- 选择技术/算法需考虑:
- (1) 判断学习是有指导还是无指导的。
- (2) 数据集中哪些实例和属性提交;哪些作训练数据;哪些作检验数据。
- (3) 如何设置数据挖掘算法的参数。
- 解释和评估结果:
- 检查数据挖掘输出,评估是否达到目标,确定发现的信息是否有价值。
- 如果结果不理想,可以重复实验:(1) 使用新的数据实例或属性;(2) 选择新的数据挖掘算法或参数。
- 数据挖掘过程是一个迭代的过程。
- 模型应用:
- 数据挖掘的终极目标。
- 应用分类模型解决疾病诊断。
- 应用聚类模型进行顾客分类,找出特征,为促销提供决策支持。
- 应用关联分析模型找出商品购买关联关系,为货架摆放、促销提供决策支持。
数据挖掘的作用
- 能够解决疾病诊断问题(如例1.1)。
- 能够解决对顾客的分类问题,为促销活动等提供决策支持。
- 能够找出商品购买关联关系,为货架摆放、商品促销提供决策支持。
数据挖掘的应用案例
- 金融领域: 甄别虚假医疗凭据、识别洗钱行为、提高金融产品销售定价准确率。
- 通信领域: 根据家庭特征确定客户倾向和需求,帮助签约和增加交易额。
- 医疗领域: 通过心肌SPECT图像诊断冠心病。
- 媒体娱乐: 分析票房收入确定受欢迎的演员和故事情节。
- 科学研究: 发现第三类γ射线爆。
- 体育领域: 优化战术组合 (NBA)。
- 流媒体/内容推荐: 成功营销热播剧 (Netflix)。
数据挖掘软件 - Weka
- 简介:
- 全称: Waikato Environment for Knowledge Analysis (怀卡托智能分析环境)。
- 诞生于新西兰怀卡托大学 (University of Waikato)。
- 基于 Java 的免费开源软件。
- 集成了数据挖掘的机器学习算法和统计技术。
- 功能: 数据预处理、分类、聚类、关联分析、属性选择和交互式可视化。
- 特点: 操作简单、易学易用,适合入门。若未安装 JRE 需下载包含 JRE 的版本。
- Weka 软件特点:
- 跨平台。
- 支持多种文件格式 (结构化文本、数据挖掘格式、数据库接口)。
- 支持连续型数值数据和离散型(字符型和日期型)数据。
- 强大的数据预处理功能: 缺失数据处理、噪声处理、标准化、离散化、属性构造、变量转换、数据拆分、平滑等。
- 提供数据挖掘功能: 分类、聚类、关联、可视化。
- 算法灵活: 提供算法组合、用户自定义算法嵌入、参数设置。
- 报告和评估: 生成基本报告、测试报告、输出格式,实现模型解释、比较、数据评分。
- 可视化功能: 数据、挖掘过程和结果可视化。
- Weka 的文件格式:
- 默认使用 ARFF (Attribute-Relation File Format) 格式。
- 一种 ASCII 文本文件格式。
- 由两部分组成:
- 头信息 (Head Information): 关系的声明和属性的声明。
- 数据信息 (Data Information): 数据集中的数据实例 (Instance)。
- Weka 的功能/界面:
- 有 4 种界面 (GUI)。
- Explorer: 数据挖掘用户最常用的界面。包含 6 个选项卡/功能: Preprocess (预处理), Classify (分类), Cluster (聚类), Associate (关联分析), Select attributes (属性选择), Visualize (可视化)。
- Experimenter。
- Knowledge Flow。
- 使用 Weka 的基本步骤: (以示例为基础)
- 准备数据。
- 加载和预处理数据。
- 建立模型(分类、聚类、关联分析等)。
- 应用模型(如分类未知实例)、解释和评估结果。
本讲小结
- 数据挖掘是建立模型,不是魔术!
- 模型建立是人类本性(归纳和分类)使然,是一个自然、有趣且有意义的过程。