数据分类
数据分类的定义
把数据样本映射到一个事先定义的类的过程
即是说:
给定一组用于输入的属性向量以及各向量所属的各类,用基于归纳的学习算法得出分类标准.
用这个分类标准对你新给出的属性向量进行分类,使正确率最高
要注意的事儿 :
用于分类的 属性值可以是连续的
但 , 只能分类到离散的类 .
分类过程
1 获取数据
定义 : 获取一组向量以及各向量所属的类
2 预处理
定义 : 对你所获取的向量进行处理
预处理包括
1 . 去除噪声数据,对空值进行处理
2 . 数据集成或者变换(消除冗余数据,对数据降维)得到最能反映数据特性的特征数据空间
注释 :
"2."其实就是把向量中一些对分类影响不大的数据维度给去掉,就比如你的姓名与你的工资的联系不大,那么你就可以把姓名这个维度去掉.
3 分类器设计
过程如下:
1 . 划分数据集.
将数据集划分为训练集和测试集
训练集 用于 对数据分类器进行训练,就是用于学习的数据
测试集 用于 对已经经过学习的分类器进行评测
2 . 分类器构造
就是用训练集通过分析每个样本自己所带有的各属性值还有所属的类别
总结规律 挖掘出判别规则
[具体用什么方法,后面介绍]
3 . 分类器测试
(1)利用构造好的分类器对测试集进行分类
(2)用测试集自己的类别和分类器分类的类别进行对比 , 从而得到分类器的性能
4 分类决策
当这个分类器满足了你的分类标准 , 就可以用它来进行分类决策了
分类评价准则
给定测试集
X
t
e
s
t
=
{
(
x
i
,
y
i
)
∣
i
=
1
,
2
,
3
,
.
.
.
,
N
}
X_{test}=\{(x_i,y_i)|i=1,2,3,...,N\}
Xtest={(xi,yi)∣i=1,2,3,...,N}[这里的N表示测试集中样本个数]
x
i
x_i
xi 表示测试集中数据样本
y
i
y_i
yi 表示
x
i
x_i
xi 的类标号
假设共有
m
m
m个类别,那么
y
i
∈
{
c
1
,
c
2
,
c
3
,
.
.
.
,
c
m
}
y_i\in\{c_1,c_2,c_3,...,c_m\}
yi∈{c1,c2,c3,...,cm}
假设 对于测试集的 第
j
j
j 个类别
被正确分类为
j
j
j 类的样本数量为
T
P
j
TP_j
TPj
被错误分类为
j
j
j 类的样本数量为
F
N
j
FN_j
FNj
本属于其他类别 但被分为为
j
j
j 类的样本数量为
F
P
j
FP_j
FPj
精确度
就是正确分类的样本所占比例
A
c
c
u
r
a
r
y
=
∑
j
=
1
m
T
P
j
N
Accurary=\frac{\displaystyle\sum_{j=1}^m TP_j}{N}
Accurary=Nj=1∑mTPj
查全率&查准率
对于第 j j j 个类别
查全率
(
R
e
c
a
l
l
j
)
(Recall_j)
(Recallj) 表示在 本类样本中 , 被正确分类的样本所占的比例
R
e
c
a
l
l
j
=
T
P
j
T
P
j
+
F
P
j
,
1
≤
j
≤
m
Recall_j=\frac{TP_j}{TP_j+FP_j} ,1\le j\le m
Recallj=TPj+FPjTPj,1≤j≤m
查准率 ( P r e c i s i o n j ) (Precision_j) (Precisionj) 表示 被分类为该类的样本中 , 真正属于该类样本所占的比例
P r e c i s i o n j = T P j T P j + F N j , 1 ≤ j ≤ m Precision_j=\frac{TP_j}{TP_j+FN_j} ,1\le j\le m Precisionj=TPj+FNjTPj,1≤j≤m
F-measure
这是 查全率 和 查准率 的组合表达式 , 可以比较合理的评价分类器对每一类样本的分类性能
F
−
m
e
a
s
u
r
e
=
(
1
+
β
2
)
×
R
e
c
a
l
l
j
×
P
r
e
c
i
s
i
o
n
j
β
2
×
R
e
c
a
l
l
j
+
P
r
e
c
i
s
i
o
n
j
F-measure=\frac{(1+\beta^2)\times Recall_j\times Precision_j}{\beta^2\times Recall_j+Precision_j}
F−measure=β2×Recallj+Precisionj(1+β2)×Recallj×Precisionj
这里的
β
\beta
β 为可调节值 , 通常取值为1
几何均值(G-mean)
G − m e a n = ∏ j = 1 m R e c a l l j G-mean=\sqrt{\prod_{j=1}^mRecall_j} G−mean=j=1∏mRecallj
这个评价准则非常有效 , 能够合理评价分类性能 .
是各个类别查全率的乘积的平方根 .
当各个类别的查全率都大时 , G-mean才相应增大 , 它同时兼顾了各个类别的分类精度 .
决策树
就是以给定数据样本为基础的归纳学习方法 .
决策树算法 ID3
这里是B站上以为阿婆主的视频链接 => ID3决策树算法讲解[11分钟40秒]
B站上南开大学决策树算法的链接 => 系统化学习决策树
1 . 只能处理离散数据
2 . 采用 信息增益 作为选择根节点和分支结点的度量标准
假定给定的数据集
X
=
{
(
x
i
,
y
i
)
∣
i
=
1
,
2
,
3
,
.
.
.
,
t
o
t
a
l
}
X=\{(x_i,y_i)|i=1,2,3,...,total\}
X={(xi,yi)∣i=1,2,3,...,total}
样本
x
i
(
i
=
1
,
2
,
3
,
.
.
.
,
t
o
t
a
l
)
x_i(i=1,2,3,...,total)
xi(i=1,2,3,...,total) 用
d
d
d 维特性向量
x
i
=
[
x
i
1
,
x
i
2
,
x
i
3
,
.
.
.
,
x
i
d
]
x_i=[x_{i1},x_{i2},x_{i3},...,x_{id}]
xi=[xi1,xi2,xi3,...,xid] 表示
x i 1 , x i 2 , x i 3 , . . . , x i d x_{i1},x_{i2},x_{i3},...,x_{id} xi1,xi2,xi3,...,xid 分别对应 d d d 个描述属性 A 1 , A 2 , A 3 , . . . , A d A_1,A_2,A_3,...,Ad A1,A2,A3,...,Ad
就是说
x
i
.
A
1
=
x
i
1
x_i.A_1=x_{i1}
xi.A1=xi1
x
i
.
A
2
=
x
i
2
x_i.A_2=x_{i2}
xi.A2=xi2
x
i
.
A
3
=
x
i
3
x_i.A_3=x_{i3}
xi.A3=xi3
.
.
.
x
i
.
A
d
=
x
i
d
x_i.A_d=x_{id}
xi.Ad=xid
y i ( i = 1 , 2 , 3 , . . . , t o t a l ) y_i(i=1,2,3,...,total) yi(i=1,2,3,...,total)表示样本 x i x_i xi的类标号
假设要研究的问题含有
m
m
m 个类
那么
y
i
∈
{
c
1
,
c
2
,
c
3
,
.
.
.
,
c
m
}
y_i\in \{c_1,c_2,c_3,...,c_m\}
yi∈{c1,c2,c3,...,cm}
先验概率
假设
n
j
n_j
nj 是数据集 X 中 属于类别
c
j
c_j
cj 的样本数量 , 则 各个类别的先验概率 为
各
个
类
别
的
先
验
概
率
=
P
(
c
j
)
=
n
j
t
o
t
a
l
,
(
j
=
1
,
2
,
3
,
.
.
.
,
m
)
各个类别的先验概率=P(c_j)=\frac{n_j}{total} ,(j=1,2,3,...,m)
各个类别的先验概率=P(cj)=totalnj,(j=1,2,3,...,m)
信息熵 : 信息量的期望值
对信息量的描述可以看这位博主的文章 : 信息熵
这里还有B站上一位阿婆主的视频信息量与信息熵
对给定的数据集 X X X 分类所需的 信息熵
为:
I
(
n
1
,
n
2
,
n
3
,
.
.
.
n
m
)
=
−
∑
j
=
1
m
P
(
c
j
)
l
o
g
2
(
P
(
c
j
)
)
I(n_1,n_2,n_3,...n_m)=-\sum_{j=1}^mP(c_j)log_2(P(c_j))
I(n1,n2,n3,...nm)=−j=1∑mP(cj)log2(P(cj))
这里就是将
分类为
c
j
c_j
cj 类的概率
P
(
c
j
)
P(c_j)
P(cj)
与 , 分类为 c j c_j cj 所需要的信息量个数为 − l o g 2 P ( c j ) -log_2P(c_j) −log2P(cj) 比特
相乘 ,再相加, 所得的就是,分类为 c j c_j cj 类别的期望
I ( n 1 , n 2 , n 3 , . . . n m ) = − ∑ j = 1 m P ( c j ) l o g 2 ( P ( c j ) ) I(n_1,n_2,n_3,...n_m)=-\sum_{j=1}^mP(c_j)log_2(P(c_j)) I(n1,n2,n3,...nm)=−∑j=1mP(cj)log2(P(cj))
最后 I ( n 1 , n 2 , n 3 , . . . n m ) I(n_1,n_2,n_3,...n_m) I(n1,n2,n3,...nm) 就是分类所期望的信息量 , 即是信息熵.
为什么是取对2为底的对数呢?
答: 这里可以取任何大一1的数,但通常取2或者自然对数
e
e
e.
但是当我们取2为底的时候构建决策树就可以以二分的思维构建,就是说 : 不是这个,那必然是另一个.这有利于我们构建决策树.
由属性 A f A_f Af 划分数据集所得熵
设属性 A f ( f = 1 , 2 , 3 , . . . , d ) A_f(f=1,2,3,...,d) Af(f=1,2,3,...,d) 有 q q q 个不同取值分别为 { a 1 f , a 2 f , a 3 f , . . . , a q f } \{a_{1f},a_{2f},a_{3f},...,a_{qf}\} {a1f,a2f,a3f,...,aqf}
A f ∈ { a 1 f , a 2 f , a 3 f , . . . , a q f } A_f\in \{a_{1f},a_{2f},a_{3f},...,a_{qf}\} Af∈{a1f,a2f,a3f,...,aqf}
{
即 :
x
1
.
A
f
=
a
1
f
x_1.A_f=a_{1f}
x1.Af=a1f
x
2
.
A
f
=
a
2
f
x_2.A_f=a_{2f}
x2.Af=a2f
x
3
.
A
f
=
a
2
f
x_3.A_f=a_{2f}
x3.Af=a2f [这里表示
X
3
X_3
X3的
A
f
A_f
Af属性跟
X
2
X_2
X2的
A
f
A_f
Af属性相同 , 比如两个人的工资相同]
x
4
.
A
f
=
a
3
f
x_4.A_f=a_{3f}
x4.Af=a3f
.
.
.
x
t
o
t
a
l
.
A
f
=
a
q
f
x_{total}.A_f=a_{qf}
xtotal.Af=aqf
每个数据样本的 A f Af Af 属性 都 属于 { a 1 f , a 2 f , a 3 f , . . . , a q f } \{a_{1f},a_{2f},a_{3f},...,a_{qf}\} {a1f,a2f,a3f,...,aqf} 中的一员
}
利用描述属性
A
f
A_f
Af 可以把数据集
X
X
X 划分为
q
q
q 个子集
{
X
1
,
X
2
,
X
3
,
.
.
.
,
X
q
}
\{X_1,X_2,X_3,...,X_q\}
{X1,X2,X3,...,Xq}
{
即 : 假设
X
1
=
{
x
1
}
X_1=\{x_1\}
X1={x1}
X
2
=
{
x
2
,
x
3
}
X_2=\{x_2,x_3\}
X2={x2,x3}
X
3
=
{
x
4
,
x
5
,
x
8
,
x
10
}
X_3=\{x_4,x_5,x_8,x_{10}\}
X3={x4,x5,x8,x10}
.
.
.
X
q
=
{
x
6
,
x
11
,
x
78
,
x
t
o
t
a
l
}
X_q=\{x_6,x_{11},x_{78},x_{total}\}
Xq={x6,x11,x78,xtotal}
这里的 X i ( i = 1 , 2 , 3 , . . . , q ) X_i (i=1,2,3,...,q) Xi(i=1,2,3,...,q)就是 A f A_f Af 的不同取值所划分的 X X X 的不同子集
在同一子集内的数据样本 , 具有相同的 A f A_f Af 取值
就比如 x 2 . A f x_2.A_f x2.Af = x 3 . A f = a 2 f x_3.A_f=a_{2f} x3.Af=a2f
[这里 x 3 . A f x_3.A_f x3.Af属性跟 x 2 . A f x_2.A_f x2.Af属性 取值相同 , 就好比两个人的工资相同]
X
s
(
s
=
1
,
2
,
3
,
.
.
.
,
q
)
X_s(s=1,2,3,...,q)
Xs(s=1,2,3,...,q)代表一个
X
X
X的子集
这里子集
X
s
(
s
=
1
,
2
,
3
,
.
.
.
,
q
)
X_s(s=1,2,3,...,q)
Xs(s=1,2,3,...,q) 中 , 各数据样本的
A
f
A_f
Af 具有相同取值
}
设 n s n_s ns 表示子集 X s X_s Xs 中样本数量
n j s n_{js} njs 表示子集 X s X_s Xs 中属于 类别 c j c_j cj 的样本的数量
则由描述属性 A f A_f Af 划分数据集 X X X之后所得到的 信息熵 为
E
(
A
f
)
=
∑
s
=
1
q
n
1
s
+
.
.
.
+
n
m
s
t
o
t
a
l
I
(
n
1
s
,
.
.
.
,
n
m
s
)
E(A_f)=\sum_{s=1}^q\frac{n_{1s}+...+n_{ms}}{total}I(n_{1s},...,n_{ms})
E(Af)=s=1∑qtotaln1s+...+nmsI(n1s,...,nms)
n
1
s
+
.
.
.
+
n
m
s
t
o
t
a
l
\frac{n_{1s}+...+n_{ms}}{total}
totaln1s+...+nms , 代表数据样本 被划分到
X
s
X_s
Xs的 概率 , 表示为划分到子集
X
s
X_s
Xs中的样本的数量与样本总数的比值.
其中
I
(
n
1
s
,
.
.
.
,
n
m
s
)
=
−
∑
j
=
1
m
p
j
s
l
o
g
2
(
p
j
s
)
I(n_{1s},...,n_{ms})=-\sum_{j=1}^mp_{js}log_2(p_{js})
I(n1s,...,nms)=−j=1∑mpjslog2(pjs)
I
(
n
1
s
,
.
.
.
,
n
m
s
)
I(n_{1s},...,n_{ms})
I(n1s,...,nms) , 表示分类
X
s
X_s
Xs 中的数据样本所 期望得到的信息量[就是信息熵].
p
j
s
=
(
n
j
s
n
s
)
,
[
就
是
X
s
中
属
于
c
j
类
的
样
本
的
概
率
]
p_{js}=\Big(\frac{n_{js}}{n_s}\Big),[就是X_s中属于 c_j 类的样本的概率]
pjs=(nsnjs),[就是Xs中属于cj类的样本的概率]
l
o
g
2
(
p
j
s
)
=
l
o
g
2
n
j
s
n
s
,
[
X
s
中
判
断
为
c
j
类
所
需
要
的
信
息
量
]
log_2(p_{js})=log_2\frac{n_{js}}{n_s},[X_s中判断为c_j类所需要的信息量]
log2(pjs)=log2nsnjs,[Xs中判断为cj类所需要的信息量]
注意:
E
(
A
f
)
=
∑
s
=
1
q
n
1
s
+
.
.
.
+
n
m
s
t
o
t
a
l
I
(
n
1
s
,
.
.
.
,
n
m
s
)
E(A_f)=\sum_{s=1}^q\frac{n_{1s}+...+n_{ms}}{total}I(n_{1s},...,n_{ms})
E(Af)=∑s=1qtotaln1s+...+nmsI(n1s,...,nms)的值越小,代表用
A
f
A_f
Af划分数据集纯度越高.就是说用
A
f
A_f
Af划分数据期望的信息量越少,代表
A
f
A_f
Af含有的分类数据样本的信息量越多.
信息增益
G a i n ( A f ) = I ( n 1 , . . . , n m ) − E ( A f ) Gain(A_f)=I(n_1,...,n_m)-E(A_f) Gain(Af)=I(n1,...,nm)−E(Af)
代表 {对
X
X
X 分析所期望的信息量} 减去 {用
A
f
A_f
Af 划分数据集后所得到的还期望的信息量}.
即 : {划分数据需要的信息量} - {用
A
f
A_f
Af 划分数据之后还需要的信息量}.
就是说:用
A
f
A_f
Af 划分数据集后得到的信息量是多少.
得到的信息量越多 , 表明这个属性包含的信息量越多.
决策树算法 ID4.5
这是ID3算法的改进算法
ID4.5算法的优点
1 . 可以计算连续属性值的信息增益比
2 . 克服了ID3算法使用信息增益选择属性时对取值较多的属性的偏向.
G
a
i
n
_
r
a
t
i
o
(
A
f
)
=
G
a
i
n
(
A
f
)
s
p
l
i
t
(
A
f
)
Gain\_ratio(A_f)=\frac{Gain(A_f)}{split(A_f)}
Gain_ratio(Af)=split(Af)Gain(Af)
其中
n
s
n_s
ns 表示
X
s
X_s
Xs 中的样本数量
s
p
l
i
t
(
A
f
)
=
−
∑
s
=
1
q
n
s
t
o
t
a
l
×
l
o
g
2
(
n
s
t
o
t
a
l
)
split(A_f)=-\sum_{s=1}^q\frac{n_s}{total}\times log_2\Big( \frac{n_s}{total}\Big)
split(Af)=−s=1∑qtotalns×log2(totalns)
s
p
l
i
t
(
A
f
)
split(A_f)
split(Af)表示 划分到子集
X
s
X_s
Xs 的概率与划分到子集
X
s
X_s
Xs 所需要的的信息量之积求和
即是 : 划分数据集为
X
X
X的属性值所划分的子集 的集合所期望的信息量
支持向量机
这个我后续会更上 , 今晚爆肝了
记2020年12月16日晨
总结
以上内容均来自陈志泊教授主编的清华大学出版社的<<数据仓库与数据挖掘(第二版)>>,欢迎大家阅读原版