程序猿成长之路之数据挖掘篇——数据挖掘介绍

随着java的发展,数据挖掘也变得逐渐热门,我们随手打开一个购物网站,首先映入眼帘的便是五花八门的推荐的物品,又如我们逛抖音、快手,就在我们上下刷屏的过程中,系统就会不停的推荐新的视频内容过来。不论是文字、视频还是图片,如果我们不去处理,那么它们就只是一堆杂乱无章的数据。但如果我们对它们进行分类、处理、统计乃至挖掘,找到数据间的关联关系,那么这些数据就可能会带来商机,为企业后续的规划出谋划策。

为什么要用数据挖掘?

如今随着互联网经济的迅速发展,我们生活在大量数据日积月累的时代,如果我们能够对数据挖掘有个深入的认识和了解,我们就能够把握时代的潮流,也就能从海量数据中获取自己想要的内容。数据挖掘应用领域也在变大,常见的数据挖掘应用有智能对话机器人、推荐算法等。总之,有了数据挖掘后,知识的获取会变得更加方便,购物、生活等方面也会变得更加便捷。

什么是数据挖掘?

按照话术来说,数据挖掘就是数据中的知识发现。
换一句话说,数据挖掘就是从大量看上去杂乱无章的数据信息中发现有用的信息并转换成知识的过程。

举个例子:大家都去逛过京东或者淘宝吧,当我们浏览过很多相似的物品时,系统首页很快就会推荐更多相关的产品给我们,这里就用到了数据挖掘,通过物品维度,也就是以物品视角出发推荐相似的物品,如下图所示
在这里插入图片描述
再举个例子: 我们再京东买东西时购物车页面下方会有个猜你喜欢的界面,这里面的物品就是通过数据挖掘算法推荐给相应用户,体现系统更加人性化,更加了解用户,从而提升用户体验,如下图所示
在这里插入图片描述

针对初学者,数据挖掘有哪些门槛?

  1. 数据挖掘需要海量数据才可以进行分析和处理,初学者往往会难以获取数据来源,于是只好通过网上购买或者自己编造数据来替代。
  2. 一部分初学者(包括我自己)刚开始上手可能会被一些数学公式如何转换成代码所困扰,但是只要能够多练多用IDE编写代码多尝试,数据挖掘还是比较容易入门的。
  3. 数据挖掘中的推荐算法可能需要针对阈值进行调优,这个可能也会比较枯燥。

推荐的书籍:机械工业出版社 Jiawei Han的《数据挖掘概念与技术》(黑皮书)——这本书是我的启蒙书,推荐给大家。这本书是基础版,还有一本是《数据挖掘原理与实践》,配合着看效果不错。

数据挖掘流程

  • 数据清理
  • 数据集成
  • 数据选择
  • 数据变换
  • 数据挖掘
  • 模型评估
  • 结果表示

1. 数据清理
数据质量有以下几个因素需要考量(主要是前三者):

  • 准确性
  • 完整性
  • 一致性
  • 时效性
  • 可信性
  • 可解释性

我们无法保证获取到的数据质量是否满足我们需求,因此在数据挖掘前先得要进行数据的清理。数据清理主要包括以下几点:

  • 空白数据剔除
  • 重复冗余数据剔除
  • 噪声消除:
    可以用分箱方法进行光滑
  • 错误数据剔除
  • 不完整数据清理
    分为直接忽略、人工填写缺失值、使用贝叶斯、决策树等预测缺失值等方法

具体如何剔除要考虑实际业务,如果有集成要求之后还需要进行数据集成。

2. 数据集成
数据集成是指将来自不同数据源的数据汇总分析,就比如我们需要收集某一地区企业的经营数据、涉案数据等数据最后进行综合打分,筛选出疑点企业,这时就要用到数据集成,因为涉及到一家企业的经营数据和涉案数据来源于不同的数据源。集成后的数据要保证数据的一致性、数据的完整性以及数据的准确性。

而冗余则是数据集成另一个需要注意的问题。后续会详细展开。

3. 数据选择
针对集成的数据进行选择,实现数据的初步筛选

4. 数据变换
对数据格式进行检验和转换。

5. 数据挖掘
通过某些手段和方法对数据进行处理,对数据间的联系按照某些特定的规则进行挖掘,直至得出我们想要的结果。

6. 结果表示
将处理后的数据通过平台展示出来。

数据挖掘的相关术语及基础知识

属性:
字段名称,表示数据对象的一个特征,比如我现在新建了一个Person类,里面的name就是一个属性,并且是一个标称属性。(后面会讲到), 又称维度、特征、变量。

标称属性:
值无法用数值定量的属性。比如人的名字、出生日期等。
序数属性:
值可以用数值定量并且不同值的差不确定的属性,比如成绩(A+、A、A-、B+…) 或者满意程度等。
数值属性:
值可以用数值定量并且不同值的差确定的属性,比如年龄
二元属性:
值只有两种,0或1,比如性别,此外,可以根据不同值的权重是否一致分为对称二元属性和非对称二元属性。性别很显然是对称二元属性,非对称比如疾病的阴性和阳性等。

相似性、相异性:
相似性 :两个属性的值的相似程度,
相异性:两个属性的值的相异程度

—————————————— 2024 4.2 更新 ——————————————————————

常见属性的相似性及相异性计算方式

  1. 标称属性的相似性/相异性计算方式
    d(i,j) = m / p
    其中m为匹配的数目,也就是所有属性(参数)值相同的个数,p为属性的总个数
    d(i,j) = (p - m) / p
    其中m为匹配的数目,也就是所有属性(参数)值相同的个数,p为属性的总个数

  2. 数值属性的相似性/相异性计算方式(后文会介绍)

    1. 欧几里得距离公式
    2. 曼哈顿距离公式
    3. 切比雪夫距离公式
    4. 闵可夫斯基距离公式
  3. 二元属性的相似性/相异性计算方式
    如下图所示,二元属性相似度可通过Jarccard相似度公式进行计算,
    sim(i,j) = q / q + s + r => 如果把各个值看成元组,那么又有sim(U,V) = (U∩V) / (U∪V)
    在这里插入图片描述举个例子:
    有两个患者,Jack和Jim,其中Jack 发烧但没有咳嗽,也没有头痛,Jim 发烧又咳嗽并且头痛,我们可以生成以下的表格
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    最后将以上三个表格进行汇总,得
    在这里插入图片描述
    因此sim(Jack,Jim) = 1 / (1 + 2 + 0) = 0.333, diff(Jack,Jim) = 1 - sim(Jack,Jim) = 0.667

  4. 序数属性的相似性/相异性计算公式
    设置第i个对象的f属性的值为Xif,第j个对象f属性的值为Xjf, 此外f属性的集合为Mf, 则有 diff(i,j) = (Xif - Xjf) / |Mf|
    举个例子:
    小红成绩为优秀,小明成绩为良好,成绩集合为(优秀,良好,一般,差,很差)
    那么diff(小红,小明) = (优秀 - 良好)/ {优秀,良好,一般,差,很差} = (5 - 4) / 5 = 0.2
    相似度:sim(小红,小明) = 1 - diff(小红 ,小明) = 1 - 0.2 = 0.8

  5. 混合属性的相似性/相异性计算公式
    结合上述的公式计算

常见的距离公式(相似度的数值表示):

前提:i,j 为两个对象,其中的参数共有p个

  1. 欧几里得距离公式
    很简单的向量距离公式,根号下(xi1 - xj1) ^ 2 + (xi2 - xj2) ^ 2 + (xi3 - xj3) ^ 2 , + (xip - xjp) ^ 2 比如A(1,1), B(2,2) 那么距离就是根号2

  2. 曼哈顿距离公式
    diff(i,j) = |xi1 - xj1| + |xi2-xj2| + … + |xip - xjp|

  3. 切比雪夫距离公式
    diff(i,j) = lim(Σf = 1,p |xif -xjf| ^h) ^ (1/h) = max|xif-xjf|

4.上确界距离公式
详见https://blog.csdn.net/qq_31236027/article/details/106763491

  • 12
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zygswo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值