开发者学堂课程【高校精品课-北京理工大学-数据仓库与数据挖掘(上):Data to be mined】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/921/detail/15624
Data to be mined
接下来继续学习数据仓库与数据挖掘,在数据挖掘领域,数据挖掘任务可以分为两大类,一个是预测性任务,一定是描述性任务。预测性的任务主要是根据一些属性的值去预测一个特定的事,被预测的值被称为目标或者因变量,测试值被称为自变量。
主要是一些能够概括数据底层关系的模式,这些模式可能是关联趋势,错误轨迹或者是异常。
在数据挖掘里以数据为核心,四大核心分别是关联分析,异常检测,预测建模和聚类分析。
看一下关联分析,怎样怎样介绍一下关联规则挖掘,规则挖掘使用的数据是前面介绍过的数据。
看这张表每一行代表一次购物数据,购数据中的 items 表示的是购买的商品名称,这样的数据也被成为购物栏数据,规则挖掘主要是通过,通过对事物数据的分析,得到一些可靠的规则,所以,通过客户购买的商品去预测顾客下一步会购买的商品。
关联规则挖掘使用最常见的场景,就是大家最熟悉的啤酒和尿布的例子。
啤酒和尿布的例子中,首先是根据超市中的信息,得到一些频繁信息,比如说是尿布和啤酒,所谓的频繁信息,就是尿布和啤酒这样的组合是经常被人购买的,出现的频率比较高,在得到频繁上级的基础之上再通过关联规则挖掘得到形如图中的规则。就是50%的人可能会购买啤酒,购买尿布的人中,有75%的人去购买啤酒。也就是说,尿布和啤酒是经常被一起购买的。
在日常生活中,去超市购买一些涮火锅的食材,比如说想涮羊肉片和丸子类,在火锅食材的区域,大家可以看到一些摆放火锅调料和蘸料的食品,这就是典型的关联规则在日常生活中的应用。
来看一下数据挖掘中的第二类,分类,分类就是要根据已给的模型去构建一个模型或建立一个分类函数,用这样构建的一个模型对没有分类的模型进行预测,要注意的是,在分类中,必须要使用到 given data,用于训练构建模型,这个 given data 是包含一些属性的,在这些属性中,一定有一个类属性。
也就是说,这个类属性体现的是这个数据所在的类,把这样的一个属性称之为类标签。
可以看一下这个例子,在这样的图表中,
展示的就是带有列标签分类的数据,前面的三列分别指的是顾客的一些属性,比如说他有没有还款,她的婚姻状态,以及他的收入状况,最后一个类别是用来判断这个用户是否属于欺诈行为,对于这样的一个标签和列,它有两种取值,一种是一种是,一种是 no,这样的就叫做 class lable。通常而言给定带有标签的数据可以把它分为两组,一种把它称为,training set, training set 主要是用于学习一些分类器学习模型,另一部分把它称为 test set 模型,Test set 模型主要适用于对模型进行检测。
如图中的第二幅图表,他的标签其实是有的,但是假设如果不知道标签,把这些数据输入到学习好的分类器中,就可以对这个标签进行预测,然后对比预测的标签和真实的标签,就可以得到有多少数据未被正确分类,从而得知分类器的效果怎么样。所以说对于有标记的数据要分为两部分,部分用于训练,一部分用于测试,对于分类而言,使用有标记的数据去构建分类器去测试分类器,然后未构建好的数据可以对标间好的数据进行预测,就是分类的过程,
也就是说用有标记的 instances 去学习模型,去测试模型,模型被训练好之后就可以对有标记的 instances 进行预测,预测他的 class 还是猫还是狗,这个就是分类的最简单介绍,对于分类领域已经有了许多成熟的方法,比如说像决策树方法。
分类方法被广泛的应用于比如说信用卡检测网页分类,疾病分类等各行业,现在通过一个自行车广告投放案例,来介绍分类在生活中的应用。
一般来说,广告投放在有具体的购买需求的人群中,那么,怎么知道顾客是否有购买自行车的需求呢?现在收集到顾客的一些信息,比如说年收入,年龄,上班的距离,我们也收到一些顾客有没有购买自行车的一些数据,也就是说我们得到一些有标签的数据去训练数据器,这里采用的是决策树模型,然后经过决策树训练以后就可以得到一个决策树分类模型,有了这样的训练好的模型,就可以根据用户的属性去判断用户是否会购买自行车。
比如说有一个顾客的年龄是70岁左右,可以看到它是属于上方的第一个方块,那么在这个方块中下面的横杠,蓝色的部分表示的是不购买自行车,红色的部分表示的是购买自行车,可以发现,在这样的方块中。不购买自行车的比例是比较大的,也就是说,对于一个70多岁的顾客,他不购买的几率是比较大的,就没有必要向他去推送一个自行车的广告,那比如说有一个年轻人年龄可能是20岁左右,上班距离可能是一千米左右,那么通过这个决策树可以发现满足这样条件的一些顾客购买自行车的比例是很大的。
比如说他购买的比例是很大的,那么对于这样的顾客就有必要向他主动推送这样的一个自行车广告,这就是一个典型的分类算法在实际生活中的应用。
再了解一下数据挖掘任务中的回归,回归跟我们的任务是非常类似的,他也是根据一些属性的值去预定一个特定属性的值。但是与分类不一样的是,在违规的任务中,他预测的属性是连续的,举个例子,刚才预测顾客买自行车还是不买自行车,预测只是两种情况 yes 或者是 no,但是如果是根据一个房屋的位置和楼层面积去预测一个房屋的价钱,房屋的价钱是一个连续属性,它的取值情况是非常非常多的,那么对于这种房屋预测,他就是属于一个回归任务。
接下来看一下数据挖掘中的聚类分析,聚类分析依然是根据数据的不同类别,把它分成不同的组或者是类,在这个过程中,把分成的不同的组称之为簇,同样拿数据进行分类,但是聚类和分类是区别非常大的。首先,第一点,在分类的时候需要使用到有标签的数据,也就是说分类是要在有标签的数据的指导下去构建模型,但是聚类使用的数据是没有类标签的,他是根据数字的属性特征去把数据进行属性划分。从这个角度上说,分类是机器学习中有监督学习的范畴,而聚类是机器学习中无监督的学习范畴。
第二点,在分类中,他的类标签是提前设定好的,一旦预测了类标签的值能明确知道类标签的含义,聚类把数据划分成不同的类,不同的簇,但是每一个的含义是什么是不清楚的,需要在聚类结束之后再去分析每一个簇的具体含义,这个就是聚类分析和分类的区别。对聚类来说,把数据化成不同的簇,那么他划分的依据是要求最大化簇类的相似度,而最小化簇间的相似度。
这里有两个概念要弄明白,一个是叫做 inter class,另一个是 introl class,来了解一下聚类的准则,所谓 introl class,就是两个数据是位于同一个簇内,位于两个位于同一个簇内的情况,希望他的相似性能够距离尽可能的大,他的间距尽可能的小。对于这样的一个 intssss 就是两个数据位于不同的簇类,位于不同簇的两个对象,希望它们的相似度尽可能的大,两个数据的间距尽可能的小,这就是距离过程中依赖的各类的准则。再讲一下聚类,在现实生活中运用的案例就是客户特征画像,比如说电话公司收集了很多顾客的信息,包括顾客的上班时间,上班打电话的时间,下班打电话的时间,他的通话时长,各种各样的信息,然后可以使用聚类算法,对这些用户进行聚类划分,成不同的簇可以看一下,这个是聚类结果。
那解释这个聚类的结果,现在把它用闪点的形式把它可视化出来。在这个过程中,纵坐标代表的是上班时间占比,就是在这个过程中,上班时间占整个时间的比,他的横坐标,指的是总通话时长,可以用可密斯算法或者是迪斯科是算法对数据进行聚类。将数据进行聚类后得到五个类比是得到了五个簇,其中红色圈圈的是第一个簇,可以看到第一个客户总体的通话时间是比较长的,但是他在上班时间占比有的比较高,有的比较低,所以可以把这一类顾客定位为长通话时间客户,或者是常聊客户。
再看一下,在这个图中的绿色部分绿色圈圈代表一类顾客可以发现它具有特征,第一个这类顾客通话时间比较少,其次他的上班时间比是比较低的,也就是说这些用户他上班打电话用的时间比较少,但是总体通话时间也比较少,所以说这类用户可以把它定位为不常使用电话的用户。然后再看一下灰色,也就是第三类顾客,第三类顾客可以发现他的通话时间是处于中等的,但是他的上班时间比是比较高的,也就是说对于这类顾客来说主要是在上班时间打电话,那对于这类顾客来说可以把他定位为中端使用客户,因为他主要是用打电话来沟通工作。
和他对应的,可以看一下黄色用户黄色圆圈代表的这些用户,这些用户他的通话时间是处于中等水平,但是他基本上他的上班时间,占比是比较低的,也就是说他可能大部分电话是在下班时间之后打的,对于这一类顾客可以把它定位为中端日常客户,因为它主要是打电话用做沟通日常生活的工具。然后看一下最后一列,客户就是紫色圆圈代表的客户对于这一类客户来说,可以从散点图中,看到他的通话,时间是比较长的,而且他的上班时间是比较高的,也就是说他的通话时间很长,而且他大部分电话,是在上班时间打的,适用于工作,对于这类顾客来说,可以把它定位于高端商务客户,因为他打电话主要是用于工作,而且工作时间比较长。
那么把这个顾客通过聚类算法,把他划分为不同的类别,之后可以有效的针对每一类客户挑选不同的套餐,所以说就是聚类分析在日常生活中的典型应用。最后来看一下异常检测这个任务,先要了解一个概念,叫做什么叫做异常?
所谓的异常就是这个数据的特征和其余数据对象的特征,差异化比较大,跟别人不太一样,比如说这个图片中如果大家的苹果颜色都是青的都是青苹果对于青苹果中有一个红苹果,那么就可以认为这个红苹果是一个异常有的时候把异常当作噪音,就把她直接删除,不在考虑的范围之内,有的时候这个异常所代表的信息,是非常重要的。比如说在信用卡的检测中,如果大部分用户的信用卡行为都是差不多的,但是有一个用户的行为很反常,那么这个用户很可能就是信用卡诈骗的人员。
所以说对于日常来说,关键是看他在什么场景,在有些场景中,异常提供的信息是非常重要的。