分类算法
k近邻算法
通过样本距离进行分类,取最近邻的k个数据
数据集需要标准化
朴素贝叶斯算法
在特征独立的情况下进行分类
算法:
P
(
C
∣
W
)
=
P
(
W
∣
C
)
P
(
C
)
P
(
W
)
P(C|W) = \frac{P(W|C)P(C)}{P(W)}
P(C∣W)=P(W)P(W∣C)P(C)
W为给定文档的特征值,C为文档类别
P
(
C
)
P(C)
P(C)文档出现的概率
P
(
W
)
P(W)
P(W) 每个特征出现的概率
P
(
W
∣
C
)
P(W|C)
P(W∣C)每个特征在C文档中出现的概率
优点:
有稳定的分类效率
对缺失数据不太敏感,算法简单,用于文本分类
分类准确度高,速度快
缺点:
由于假设了样本属性的独立性,如果样本属性具有相关性会对结果造成干扰
精确率与召回率
精确率:预测结果为正例样本中真实为正例的比例
召回率:真实为正例的样本中预测结果为正例的比例
预测结果/真实结果 | 正例 | 假例 |
---|---|---|
正例 | 真正例 | 伪反例 |
假例 | 伪正例 | 真反例 |
交叉验证:将所有训练集数据分成n等分,去其中任意部分当成验证集,得到准确率,最后求平均值。
网格搜索:对不同的参数进行交叉验证,得到准确率最高的参数。
决策树
信息熵
决策树的分类依据之一:信息增益
公式
H
(
D
)
=
∑
i
P
i
log
P
i
H(D) = \sum_{i}P_i \log Pi
H(D)=∑iPilogPi
信息和消除不确定性是相关联的
信息增益:当得知某个信息后信息熵减小的大小。
公式:
g
(
D
,
A
)
=
H
(
D
)
−
H
(
D
∣
A
)
g(D,A) = H(D)-H(D|A)
g(D,A)=H(D)−H(D∣A)
H
(
D
)
H(D)
H(D)为初始信息熵大小
H
(
D
∣
A
)
H(D|A)
H(D∣A)为条件信息熵
基尼系数
决策树的分类依据之二:基尼系数
对于数据集D的纯度可以用基尼系数来定义:
G
i
n
i
(
D
)
=
∑
k
∑
k
′
≠
k
P
k
P
k
′
=
1
−
∑
k
P
k
2
Gini(D) = \sum_k\sum_{k'\neq k}P_kP_{k'} = 1-\sum_k P_k^2
Gini(D)=k∑k′̸=k∑PkPk′=1−k∑Pk2
也就是去两次不相同的概率。
属性A的基尼指数:
G
i
n
i
i
n
d
e
x
(
D
,
A
)
=
∑
v
D
v
D
G
i
n
i
(
D
v
)
Gini_index(D,A) = \sum_{v}\frac{D^v}{D}Gini(D^v)
Giniindex(D,A)=v∑DDvGini(Dv)
优点:
简单的理解和解释,树木可视化
需要很少的数据准备,其他技术通常需要数据归一化
缺点:
可能会创建出过于复杂的树。过拟合
改进:
剪枝cart算法
随机森林
剪枝处理
当决策树出现过拟合时,需要主动去掉一些分支来降低过拟合的风险
预剪枝
在决策树生成过程中,对每个节点在划分前先进行估计,若当前结点的划分不能带来决策树泛化性能提升,则停止划分并将当前结点标记为叶节点
后剪枝
先从训练集生成一颗完整的决策树,然后自底向上对飞叶节点进行考察,若将该节点对应的子树替换为叶节点能带来决策树泛化性能提升,则将该子树替换为叶节点