数据属性
A、标称属性(nominal attribute)
标称属性的值是一些符号或实物的名称,每个值代表某种类别、编码或状态,所以标称属性又被看做是分类型的属性(categorical)。这些值不必具有有意义的序,并且不是定量的。
B、二元属性(binary attribute)
二元属性是一种标称属性,只有两个类别或状态:0或1,其中0常表示不出现,1表示出现。如果将0和1对应于false和true,二元属性则为布尔属性。
C、序数属性(ordinal attribute)
序数属性可能的取值之间具有有意义的序或秩评定,但相继值之间的差是未知的。例如,学生的成绩属性可以分为优、良、中、差四个等级;某快餐店的饮料杯具有大、中、小三个可能值。然而,具体“大”比“中”大多少是未知的。
序数属性可用于记录不能客观度量的主观质量评估。因此,序数属性常用于等级评定调查。如某销售部门客户服务质量的评估,0表示很不满意,1不太满意,2表示中性,3表示满意,4表示非常满意。
通过数据预处理中的数据规约,序数属性可以通过将数据的值域划分成有限个有序类别,将数值属性离散化而得到。应注意的是,标称、二元和序数属性都是定性的,只描述样本的特征,而不给出实际大小或数量。下面介绍提供样本定量度量的数值属性。
D、数值属性(numerical attribute)
数值属性是可度量的量,用整数或实数值表示,有区间标度和比率标度两种类型。
当我们的数据是nominal,class是numeric的时候
用来训练NB没问题,但是当训练KNN,SVM的时候得转换
两个等长字符串之间的汉明距离(英语:Hamming distance)是两个字符串对应位置的不同字符的个数。换句话说,它就是将一个字符串变换成另外一个字符串所需要替换的字符个数。
也可以随机把字符改成数字,但是这样很蠢
最常用的办法就是弄个m维vector,每个维度弄成boolean
当我们的数据是numeric,class是nominal的时候
在决策树中,如果attribute是离散数据,就必须将它Binarisation(二元化)
Each node is labelled with ak , and has two branches: one branch is ak ≤ m, one branch is ak > m
Discretization 什么是离散化
简单的说,就是把连续特征分段,每一段内的原始连续特征无差别的看成同一个新特征
为什么进行离散化
1、离散化的特征更易于理解
2、离散化的特征能够提高模型准确度,提高运行速度。使得规则或模型更加简洁
3、有些归纳方法比较适于处理离散化特征
无监督方法
无监督方法都具有的问题就是都需要认为规定划分区间这个参数,常用的方法有分箱法和直观划分,首先来说一下分箱法:
分箱法又分为等宽分箱法和等频分箱法,其实从名字就能看出算法的做法了,前者制定定长的间隔将特征放入不同箱子内,后者根据频率划分箱子,这两种做法都有一定的缺陷。等宽分箱法对异常点比较敏感,比如数据正常范围是30-60,现在出现了一个特征本来是30不小心读取成了300,那么宽度会被拉长,实例就主要集中在前面的箱体中,后面的箱体几乎没有实例,解决的方法主要是设立阈值移除阈值以外的实例。等频分箱法的缺陷是完全按照频率划分会出现实例特征相同却不在同一个箱体内的情况,解决办法也很简单,在划分完成后进行微调就可完成。
直观划分法感觉就没什么技术了,这个算法主要是根据经验和美观,常用的方法划分出来肯定都是34267、64537这样的数,但是人们一般都习惯看到30000、50000这样的数,然后就是加上个人对数据的了解人为划分。
有监督方法
1R方法:这个方法是分箱法的有监督版本,把前6个实例放入箱子中,然后后面实例放入箱子时,对比当前实例标签与箱子中大部分实例标签是否相同,如果相同放入,如果不相同,那么形成下一个6实例的新箱子,等到最后全部放入箱子中,将箱子中大多数实例标签作为箱子的标签,再将标签相同的箱子合并
基于卡方的离散方法:首先将数值特征的每个不同值看做一个区间对每对相邻区间计算卡方统计量,如果大于阈值就合并,递归进行直到找不到卡方统计大于阈值的时候停止。卡方计算方法详见1。
基于熵的离散方法:其实就是照搬了决策树的思路,使用合成的方法或者分裂的方法根据熵计算和阈值判定来决定合成或分裂。
特征离散化的优势
援引知乎严林的回答2:
在工业界,很少直接将连续值作为逻辑回归模型的特征输入,而是将连续特征离散化为一系列0、1特征交给逻辑回归模型,这样做的优势有以下几点:
离散特征的增加和减少都很容易,易于模型的快速迭代;
稀疏向量内积乘法运算速度快,计算结果方便存储,容易扩展;
离散化后的特征对异常数据有很强的鲁棒性:比如一个特征是年龄>30是1,否则0。如果特征没有离散化,一个异常数据“年龄300岁”会给模型造成很大的干扰;
逻辑回归属于广义线性模型,表达能力受限;单变量离散化为N个后,每个变量有单独的权重,相当于为模型引入了非线性,能够提升模型表达能力,加大拟合;
特征离散化后,模型会更稳定,比如如果对用户年龄离散化,20-30作为一个区间,不会因为一个用户年龄长了一岁就变成一个完全不同的人。当然处于区间相邻处的样本会刚好相反,所以怎么划分区间是门学问;
特征离散化以后,起到了简化了逻辑回归模型的作用,降低了模型过拟合的风险。
K-均值聚类算法(K-means Clustering)
K-means是机器学习中一个比较常用的算法,属于无监督学习算法,其常被用于数据的聚类,只需为它指定簇的数量即可自动将数据聚合到多类中,相同簇中的数据相似度较高,不同簇中数据相似度较低。
优点:
原理简单
速度快
对大数据集有比较好的伸缩性
缺点:
需要指定聚类 数量K
对异常值敏感
对初始值敏感
算法接受参数 k ;然后将事先输入的n个数据对象划分为 k个聚类,以便使得所获得的聚类满足:同一聚类中的对象相似度较高;而不同聚类中的对象相似度较小。
算法思想:
以空间中k个点为中心进行聚类,对最靠近他们的对象归类。通过迭代的方法,逐次更新各聚类中心的值,直至得到最好的聚类结果
算法描述:
(1)适当选择c个类的初始中心;
(2)在第k次迭代中,对任意一个样本,求其到c各中心的距离,将该样本归到距离最短的中心所在的类;
(3)利用均值等方法更新该类的中心值;
(4)对于所有的c个聚类中心,如果利用(2)(3)的迭代法更新后,值保持不变,则迭代结束,否则继续迭代。
PDF:概率密度函数(probability density function)
在数学中,连续型随机变量的概率密度函数(在不至于混淆时可以简称为密度函数)是一个描述这个随机变量的输出值,在某个确定的取值点附近的可能性的函数。