数据挖掘方法

1.布雷格曼散度:是一种类似距离度量的方式,用于衡量两者之间差异的大小。Bregman

散度是损失或者失真函数。考虑如下情况:设点是点的失真或者近似的点,也就是说可能是由添加了一些噪声形成的,损失函数的目的是度量用近似近似导致的失真或者损失,因而Bregman散度可以用作相异性函数。

2.挖掘方向:

  1. 内容挖掘:用户信息:(界面内容挖掘)
  2. 结构挖掘:网页的先后顺序拓扑结构(界面的超链接挖掘)
  3. 使用挖掘:使用情况-->用户的访问模式和知识(日志、用户注册信息),提高站点的质量

3.日志信息挖掘的基本过程:

  1. web服务器日志
  2. Error Logs
  3. Cookies(用户名和密码)在浏览器中:

(一)关联分析

(二)分类和预测

(三)聚类分析

(四)序列模式(演变算法):找出页面依照时间顺序出现的内在模式、趋势分析、访问模式分析

(五)统计学分析

4.基本实现过程:

  1. 预处理
  2. 模式发现
  3. 模式分析:评估挖掘出来的模式(应用领域:生物医学数据挖掘与DNA分析、针对金融数据分析的数据挖掘、零售业中的数据挖掘)

目的:挖掘容易,结果有效

欺骗检测:利用对罕见事件进行孤立点分析而得到的结果

聚类分析、孤立点分析:

  1. 基于统计的孤立点检测
  2. 基于距离的孤立点检测(基于索引的算法,嵌套-循环算法,基于单元的算法)
  3. 基于偏离的孤立点检测(序列异常技术,OLAP数据立方体技术)

5.数据获取:

  1. 爬虫乱码处理:

(request.get(resqponse.url).content.decode(“gbk”,“ignore”)

Response = urllib.request.urlopen(url)

Html = response.read()

Encode = chardet.detect(html)[“encoding”]

If encode = “GB2312”

Encode = “GBK”

提取html (固定标签)

Soup= Beautifulsoup(html,’html.parser’)

Re.search(r’’)

  1. API
  2. 数据库
  3. 自上传

数据清洗:

  1. 合并:重叠数据合并(pandas数据统计包)
  2. 数据重叠和轴向旋转(行与列之间索引转换)
  3. 数据转换:数据的格式转换
  4. 替换值
  5. 数据手段
  6. 排列和采用
  7. 使用断言
  8. 断点清洗
  9. 在一部分数据上进行测试
  10. 把清洗日志打印到文件中,把原始数据一并存储下来
  11. 验证清洗后的数据

6.处理空缺值:比较有效的有4、5、6

  1. 忽略元组:但有时忽略掉则对后面的影响巨大
  2. 人工填写空缺值:(最精确)但工作量,可行性低
  3. 使用全局变量填充空缺值:比如:unknown 或者 无穷(不能很好的算法适应或者不认)
  4. 使用属性的平均值填空缺值:易以偏概全
  5. 使用与给定元组属同类的所有样本的平均值(更具有参考意义)
  6. 使用最可能的值填空缺值:使用像Bayesian公式或判定树这样的基于推断的方法(比较困难)

7.处理噪声数据:简单统计量分析(最大,小值),3&原则(若数据服从正态分布,异常数据就是超过3倍标准差的值),箱型图分析(以四分位数和四分卫距为基础具有一定的鲁棒性,多达25%的数据可以变得任意远而不会很大的扰动四分位数,所以异常值不能对这个标准施加影响)一致性分析:数据集成的过程中,可能来自不同的数据源

  1. 分箱:首先排序数据,并将它们分到等深的箱中,后按平均值,中值边界平滑
  2. 聚类:监测并且去除孤立点
  3. 计算机和人工检查结合:有人工干预:就产生偏向性
  4. 回归:通过让数据适应回归函数来平滑

数据集成:处理数据冗余

  1. 相关性分析可以检测到
  2. 仔细将多个数据源中的数据集成起来

8.数据变换:

  1. 平滑
  2. 聚集
  3. 数据概化
  4. 规范化:将数据映射到小的子空间(最小-最大规范化、z-score、小数定标规范化)
  5. 属性构造

9.数据归约:减省挖掘时间,提高效率

  1. 数据立方体聚集:顶层越小越概化,基本的底层的方体,对方体的预计算
  2. 维归约:删除不相关属性,重复维
  3. 数据压缩:HMP4、有损、无损、字符
  4. 数值归约:用参数来表示原来的数据集
  5. 离散化和概念分层产生
  6. 用计算机来归约:启发式(探索性)方法:(逐步向前选择、逐步向后选择、向前向后相结合、判定归纳树)
  7. 直方图:比较流行数据归约技术
  8. 聚类
  9. 选样

10.离散化:

  1. 将连续属性的范围划分为区间
  2. 有效的归约数据(基于判定树的分类挖掘)
  3. 概念分层:通过使用高层的概念来替代底层的属性值(实际的年龄)eg:年龄,青年,中年,老年。分箱、直方图分箱、聚类分析、基于熵的离散化、通过自然划分分段:3-4-5规则

数据存储:json 、CSV文件、mysql(直观)、Redis(取出的是二进制,需要转化为字符串再操作)、MongDB(优点:不在乎数据结构,注意取出来的时候写个脚本整理一下)

可视化:R、PowerBI、Python(plotly)、词云生成器

11.数据挖掘系统:KDD,BI(用数据挖掘原语指导数据挖掘系统(挖掘目标等))

  1. 为了解决特征数字化出现数字的歧义。eg:2是1的2倍往往会使用单热编码,把每个分类转换成一个稀疏的向量,除编号应对应位置,其他都是0
  2. 对于有大量唯一值的分类型特征来说,将特征哈希化,此方法相较于单热编码,提供了更低的稀疏度和更高的压缩度。
  1. OLAP:事实维度表和..维表
  2. 特征工程

(一).特征选择
1.过滤法,通过信息按照特征的发散性或者相关性指标对各个特征进行评分,设定评分阈值或者待选择阈值的个数,选择合适特征(
方差筛选(sklearn中的VarianceThreshold类)
相关系数(主要用于输出连续值的监督学习算法中。我们分别计算所有训练集中各个特征与输出值之间的相关系数,设定一个阈值,选择相关系数较大的部分特征。))
假设检验(卡方检验(检验某个特征分布和输出值分布之间的相关性,临界概率可以合理又科学的筛选异常用户)
F检验和t检验(F检验的函数f_classif和f_regression,分别在分类和回归特征选择时使用))sklearn使用chi2这个类
互信息,即从信息熵的角度分析各个特征和输出值之间的关系评分(sklearn中,可以使用mutual_info_classif(分类)和mutual_info_regression(回归)来计算各个输入特征和输出值之间的互信息)
***优先使用卡方检验和互信息来做特征选择***
2.包装法,根据目标函数,通常是预测效果评分,每次选择部分特征,或者排除部分特征
递归消除特征法(SVM-RFE算法)使用一个机器学习模型来进行多轮训练,每轮训练后,消除若干权值系数的对应的特征,再基于新的特征集进行下一轮训练。在sklearn中,可以使用RFE函数来选择特征。
3.嵌入法,使用某些机器学习的算法和模型进行训练,得到各个特征的权值系数,根据权值系数从大到小来选择特征。类似于过滤法,但是它是通过机器学习训练来确定特征的优劣,而不是直接从特征的一些统计学指标来确定特征的优劣
嵌入法也是用机器学习的方法来选择特征,但是它和RFE的区别是它不是通过不停的筛掉特征来进行训练,而是使用的都是特征全集。在sklearn中,使用SelectFromModel函数来选择特征
递归消除特征法。用的L1正则化和L2正则化来选择特征的基学习器是逻辑回归。(决策树或者GBDT)
4.寻找高级特征(聚类的时候高级特征尽量少一点,分类回归的时候高级特征适度的多一点。)
(二).特征表达
1.缺失值处理(sklearn中,可以使用preprocessing.Imputer来选择这三种不同的处理逻辑做预处理)
连续值:选择所有有该特征值的样本,然后取平均值,来填充缺失值,另一种是取中位数来填充缺失值
离散值:一般会选择所有有该特征值的样本中最频繁出现的类别值,来填充缺失值
2.特殊的特征处理
时间原始特征:
第一种是使用连续的时间差值法,即计算出所有样本的时间到某一个未来时间之间的数值差距,这样这个差距是UTC的时间差,从而将时间特征转化为连续值。
第二种方法是根据时间所在的年,月,日,星期几,小时数,将一个时间特征转化为若干个离散特征,这种方法在分析具有明显时间趋势的问题比较好用。
第三种是权重法,即根据时间的新旧得到一个权重值。比如对于商品,三个月前购买的设置一个较低的权重,最近三天购买的设置一个中等的权重,在三个月内但是三天前的设置一个较大的权重。
地理特征:
如果是处理成离散值,则需要转化为多个离散特征,比如城市名特征,区县特征,街道特征等。但是如果我们需要判断用户分布区域,则一般处理成连续值会比较好,这时可以将地址处理成经度和纬度的连续特征。
3.离散特征的连续化处理
有很多机器学习算法只能处理连续值特征,不能处理离散值特征,比如线性回归,逻辑回归等.这时将离散特征连续化处理
方法:
1.独热编码one-hot encoding sklearn的OneHotEncoder可实现(比如某特征的取值是高,中和低,那么我们就可以创建三个取值为0或者1的特征,将高编码为1,0,0这样三个特征,中编码为0,1,0这样三个特征,低编码为0,0,1这样三个特征)
2.特征嵌入embedding:可以用tf.nn.embedding_lookup找到该用户的特征嵌入向量。特征嵌入矩阵会在反向传播的迭代中优化。
在自然语言处理中,我们也可以用word2vec将词转化为词向量
4. 离散特征的离散化处理:sklearn的LabelEncoder将其转化为0,1,2,...这样的类别标签值。
独热编码one-hot(推荐)
虚拟编码dummy coding
5. 连续特征的离散化处理:特征变得高维稀疏
LR+GBDT的经典模型中,就是使用GDBT来先将连续值转化为离散值
(三).特征预处理
1. 特征的标准化和归一化
特征的标准化和归一化
max-min标准化:
L1/L2范数标准化:在sklearn中,我们可以用Normalizer来做L1/L2范数标准化
虽然大部分机器学习模型都需要做标准化和归一化,也有不少模型可以不做做标准化和归一化,主要是基于概率分布的模型,比如决策树大家族的CART,随机森林等。当然此时使用标准化也是可以的,大多数情况下对模型的泛化能力也有改进。
2. 异常特征样本清洗
聚类
异常点检测方法,主要是使用iForest或者one class SVM
3.  处理不平衡数据
权重法:对训练集里的每个类别加一个权重class weight。如果该类别的样本数多,那么它的权重就低,反之则权重就高。如果更细致点,我们还可以对每个样本加权重sample weight,思路和类别权重也是一样,即样本数多的类别样本权重低,反之样本权重高。sklearn中,绝大多数分类算法都有class weight和 sample weight可以使用。
采样法:对类别样本数多的样本做子采样,对类别样本数少的样本做过采样
上述两种常用的采样法很简单,但是都有个问题,就是采样后改变了训练集的分布,可能导致泛化能力差。所以有的算法就通过其他方法来避免这个问题,比如SMOTE算法通过人工合成的方法来生成少类别的样本。
得到不改变训练集分布的新样本,让训练集中各个类别的样本数趋于平衡。我们可以用imbalance-learn这个Python库中的SMOTEENN类来做SMOTE采样。

原文地址:https://www.cnblogs.com/lgx-fighting/p/9372790.html

时间: 2024-10-09 19:52:32

数据挖掘方法的相关文章

统计图表类型选择应用总结&表数据挖掘方法及应用

数据挖掘方法及应用:

数据挖掘方法论及实施步骤

1.业界数据挖掘方法论 2.在工作中,我们进行数据挖掘实施指导方法: 应用建模的八步法:业务理解.指标设计.数据提取.数据探索.算法选择.模型评估.模型发布.模型优化 步骤一:业务理解 常见的误区:很多人以为不需要事先确定问题和目标,只要对数据使用数据挖掘技术,然后再对分析挖掘后的结果进行寻找和解释,自然会找到一些以前我们不知道的,有用的规律和知识. 过程:业务调研->问题定位->制定目标->业务分析 步骤二:指标设计 基于对业务问题的梳理分析,找到合适的分析方法或者方法论指导模型指标设

数据挖掘方法系列(一)数据探索

为什么要做数据探索?了解数据的类型和人与人沟通过程中了解对方的性别一样重要,人与人沟通知道对方的性别才能用不同的方式与其沟通,不同的数据类型能做的操作也不一样.探索数据探索哪些?数据的类型和数据的质量.数据类型分为定性和定量的.定性也可以说是分类的,包括标称和序数.标称很好理解,用户ID.用户的名称也属于标称,虽然也可以重复,但大致还是能代表一个个体:序数有类型{好,非常好,超级好},可以比较大小的,比如"超级好好"比"好"在好的程度要高,{高,较高,非常高}也属于

华为数据挖掘方法论及案例介绍

数据挖掘是BI领域的一个重要应用方向,BI指通过对行业的讣知.经验,结合数学理论.管理理论.市场营销理论,利用工具软件.数学.算法(如:神经网络.遗传算法.聚类.客户绅分等)对企业的数据.业务.市场迚行分析及预测,以图表.数据分析报告的形式支撑企业决策.市场营销.业务拓展.信息运营等工作. 如果你想了解大数据的学习路线,想学习大数据知识以及需要免费的学习资料可以加群:784789432.欢迎你的加入.每天下午三点开直播分享基础知识,晚上20:00都会开直播给大家分享大数据项目实战. 原文地址:h

详解五大分类方法及其优缺点,数据挖掘师必会!

分类算法是一种在专家指导下的,有监督的数据挖掘方法,其种类很多,包括: 传统方法:线性判别法.距离判别法.贝叶斯分类器: 现代方法:决策树.神经网络ANN.支持向量机SVM: 1.决策树 决策树学习是以实例为基础的归纳学习算法,它着眼于从一组无次序.无规则的实例中,推理出以决策树表示的分类规则. 2.贝叶斯 贝叶斯(Bayes)分类算法是一类利用概率统计知识进行分类的算法,如朴素贝叶斯(Naive Bayes)算法 这些算法主要利用Bayes定理,来预测一个未知类别的样本属于各个类别的可能性,选

2017.06.29 数据挖掘概念知识第一章

第一章1.数据仓库技术:1.数据清理 2.数据集成 3.联机分析处理2.数据挖掘(知识发现)过程P5详见图 1.数据清理 2.数据集成 3.数据选择 4.数据变换 5.数据挖掘 6.模式评估 7.知识表示3.大数据的特点: 1.量大 2.种类多 3.处理速度快 4价值密度低 5.复杂性4.类与概念描述方法过程: 1.数据特征化 2.数据区分 3.数据特征化和区分5.分类如何提供导出的模型: 导出的模型可以多种形式表示:分类规则.决策树.数学公式或神经网络6.一个模型是有趣的: 1.易于被人理解

数据挖掘中分类算法小结

数据挖掘中分类算法小结 数据仓库,数据库或者其它信息库中隐藏着许多可以为商业.科研等活动的决策提供所需要的知识.分类与预测是两种数据分析形式,它们可以用来抽取能够描述重要数据集合或预测未来数据趋势的模型.分类方法(Classification)用于预测数据对象的离散类别(Categorical Label);预测方法(Prediction )用于预测数据对象的连续取值. 分类技术在很多领域都有应用,例如可以通过客户分类构造一个分类模型来对银行贷款进行风险评估;当前的市场营销中很重要的一个特点是强

大数据和「数据挖掘」是何关系?---来自知乎

知乎用户,互联网 244 人赞同 在我读数据挖掘方向研究生的时候:如果要描述数据量非常大,我们用Massive Data(海量数据)如果要描述数据非常多样,我们用Heterogeneous Data(异构数据)如果要描述数据既多样,又量大,我们用Massive Heterogeneous Data(海量异构数据)--如果要申请基金忽悠一笔钱,我们用Big Data(大数据) 编辑于 2014-02-2817 条评论感谢 收藏没有帮助举报作者保留权利 刘知远,NLPer 4 人赞同 我觉得 大数据

大数据时代的精准数据挖掘——使用R语言

老师简介: Gino老师,即将步入不惑之年,早年获得名校数学与应用数学专业学士和统计学专业硕士,有海外学习和工作的经历,近二十年来一直进行着数据分析的理论和实践,数学.统计和计算机功底强悍. 曾在某一世界500强公司核心部门担任高级主管负责数据建模和分析工作,在实践中攻克统计建模和数据分析难题无数,数据处理与分析科学精准,在实际应用中取得良好的效果. Gino老师担任数据分析培训师多年,探索出一套以实例讲解带动统计原理理解和软件操作熟悉的方法,授课的学生能迅速理解统计原理并使用统计软件独立开展数