文章目录
监督
1.线性回归
1.1 什么是线性回归
线性:两个变量之间的关系是一次函数关系的——图象是直线,叫做线性。
非线性:两个变量之间的关系不是一次函数关系的——图象不是直线,叫做非线性。
回归:人们在测量事物的时候因为客观条件所限,求得的都是测量值,而不是事物真实的值,为了能够得到真实值,无限次的进行测量,最后通过这些测量数据计算回归到真实值,这就是回归的由来。
线性回归是一个回归模型,即模型最后输出的值是连续的
线性回归可以做大对大量的观测数据进行处理,从而得到比较符合事物内部规律的数学表达式。也就是说寻找到数据与数据之间的规律所在,从而就可以模拟出结果,也就是对输入进行预测。解决的就是通过已知的数据得到未知的结果。例如:对房价的预测、判断信用评价、电影票房预估等。
1.2 公式
线性回归公式:
y
=
w
x
+
b
y=wx + b
y=wx+b
w叫做x的系数,b叫做偏置项。
loss function公式–MSE(均方误差损失函数):
J
=
1
2
m
∑
m
i
=
1
(
y
′
−
y
)
2
J=\frac{1}{2 m} \sum_{m}^{i=1}\left(y^{\prime}-y\right)^{2}
J=2m1∑mi=1(y′−y)2
1.3 过拟合、欠拟合如何解决
欠拟合:增加模型参数、增加训练次数
过拟合:loss function中增加罚项,即进行正则化处理:lasso回归(L1)、岭回归(L2)、ElasticNet回归
1.4 线性回归的输出y服从正态分布
首先判断训练数据的y是否符合正态分布,符合则可以用线性回归。
为什么y要服从正态分布?
首先实际输入数据的x是有噪声的,直观感觉或统计都可得知噪声是符合正态分布的,即噪声
ϵ
\epsilon
ϵ符合正态分布
N
(
0
,
d
e
l
t
a
2
)
N(0,delta^2)
N(0,delta2),假设此时x和y具有线性关系
y
=
w
x
+
b
y=wx+b
y=wx+b,那么y一定符合正态分布
N
(
w
x
+
b
,
d
e
l
t
a
2
)
N(wx+b,delta^2)
N(wx+b,delta2),因此线性分布的y一定符合正态分布,否则其不具有线性关系。
若样本的y不符合正态分布或不近似服从正态分布,则要采用其他的拟合方法,比如对于服从二项式分布的样本数据,可以采用logistics线性回归。
2.逻辑(斯谛)回归(logistic regression)
2.1 什么是逻辑回归
逻辑回归是用来做分类算法的,大家都熟悉线性回归,一般形式是Y=aX+b,y的取值范围是 [ − ∞ , + ∞ ] [-∞, +∞] [−∞,+∞],有这么多取值,怎么进行分类呢?不用担心,伟大的数学家已经为我们找到了一个方法。
也就是把Y的结果带入一个非线性变换的Sigmoid函数中,即可得到[0,1]之间取值范围的数S,S可以把它看成是一个概率值,如果我们设置概率阈值为0.5,那么S大于0.5可以看成是正样本,小于0.5看成是负样本,就可以进行分类了。
2.2 公式
sigmoid 函数:
公式:
S
(
t
)
=
1
1
+
e
−
t
S(t)=\frac{1}{1+e^{-t}}
S(t)=1+e−t1
函数中t无论取什么值,其结果都在
[
0
,
−
1
]
[0,-1]
[0,−1] 的区间内,回想一下,一个分类问题就有两种答案, 一种是"是",一种是"否",那对应着“否", 1对应 着"是",那又有人问了,你这不是
[
0
,
1
]
[0,1]
[0,1] 的区间吗,怎么会只有0和 1 呢? 这个问题问得好,我们假设分类的阈值是0.5,那么超过0.5的归为 1 分类, 低于0.5的归为0分类,阈值是可以自己设定的。
好了,接下来我们把aX+b带入t中就得到了我们的逻辑回归的一般模型方程:
H
(
a
,
b
)
=
1
1
+
e
(
a
X
+
b
)
H(a, b)=\frac{1}{1+e^{(a X+b)}}
H(a,b)=1+e(aX+b)1
结果P也可以理解为概率,换句话说概率大于0.5的属于1分类, 概率小于0.5的属于0分类,这就达到了分类的目的。
逻辑回归的损失函数是 log loss, 也就是对数似然函数,函数公式如下:
Cost
(
h
θ
(
x
)
,
y
)
=
{
−
log
(
h
θ
(
x
)
)
if
y
=
1
−
log
(
1
−
h
θ
(
x
)
)
if
y
=
0
\operatorname{Cost}\left(h_{\theta}(x), y\right)=\left\{\begin{aligned} -\log \left(h_{\theta}(x)\right) & \text { if } y=1 \\ -\log \left(1-h_{\theta}(x)\right) & \text { if } y=0 \end{aligned}\right.
Cost(hθ(x),y)={−log(hθ(x))−log(1−hθ(x)) if y=1 if y=0
公式中的
y
=
1
\mathrm{y}=1
y=1 表示的是真实值为 1 时用第一个公式,真实
y
=
0
\mathrm{y}=0
y=0 用第二个公式计算损失。为什么要加上log函数呢? 可以试想一下,当真实样本为 1 是,但
h
=
0
\mathrm{h}=0
h=0 概率,那么
log
0
=
∞
\log 0=\infty
log0=∞, 这就对模型最大的惩罚力度;当
h
=
1
h=1
h=1 时,那么
log
1
=
0
\log 1=0
log1=0, 相当于没有惩罚,也就是没有损失,达到最优结果。所以 数学家就想出了用log函数来表示损失函数。
最后按照梯度下降法一样, 求解极小值点,得到想要的模型效果。
2.3 多分类
以2分类依次划分,得到最大概率结果下的的类别:
1.将类型class1看作正样本,其他类型全部看作负样本,然后我们就可以得到样本标记类型为该类型的概率p1。
2.然后再将另外类型class2看作正样本,其他类型全部看作负样本,同理得到p2。
3.以此循环,我们可以得到该待预测样本的标记类型分别为类型class i时的概率pi,最后我们取pi中最大的那个概率对应的样本标记类型作为我们的待预测样本类型。
2.4 逻辑回归的优点
1.结果以概率的形式输出,可以做排序模型(ranking model)
2.训练速度快,feature engineering后效果不错
2.5 逻辑回归常用优化方法
2.5.1 一阶方法
批梯度下降(BGD)、随机梯度下降(SGD)、mini-batch梯度下降降法(MBGD);随机梯度下降不但速度上比原始批梯度下降要快,局部最优化问题时可以一定程度上抑制局部最优解的发生。
2.5.2 二阶方法
2.5.2.1 牛顿法
2.5.2.2 拟牛顿法
2.6 输入数据的特征为什么要进行离散化
1.引入非线性因素:逻辑回归属于广义线性模型,表达能力受限;单变量离散化为N个后,每个变量有单独的权重,相当于为模型引入了非线性,能够提升模型表达能力,加大拟合;
2.加快速度:稀疏向量内积乘法运算速度快,计算结果方便存储,容易扩展;离散特征的增加和减少都很容易,易于模型的快速迭代;
3.鲁棒性:离散化后的特征对异常数据有很强的鲁棒性:比如一个特征是年龄>30是1,否则0。如果特征没有离散化,一个异常数据“年龄300岁”会给模型造成很大的干扰;
4.方便交叉与特征组合:离散化后可以进行特征交叉,由M+N个变量变为M*N个变量,进一步引入非线性,提升表达能力;
5.简化模型:特征离散化以后,起到了简化了逻辑回归模型的作用,降低了模型过拟合的风险。比如如果对用户年龄离散化,20-30作为一个区间,那么就将21、22、23等都离散为一个值。
3.决策树
3.1 分类决策树
决策树是一种基本的分类与回归方法,这里介绍分类决策树,分类决策树的分类过程是不断地根据数据的特征进行选择,最后进行分类的过程,因此其更像一个if else的集合,过程可解释性比起逻辑回归要好很多。
分类决策树和逻辑回归的区别:
LR模型是一股脑儿的把所有特征塞入学习,而决策树更像是编程语言中的if-else一样,逐步根据特征值去做条件判断,这就是根本性的区别。
3.2 树的生成
根据决策树做决策时,是根据特征进行一步步选择的,那么先根据哪个特征进行选择就很重要,因此确定特征选择顺序的过程就是树的生成的过程。那么什么时候停止生成树呢?
1.当前节点包含的样本属于同一类时就不需要再挑选特征进行细分了;2.特征被选完后,没得选了也就无法进一步划分;3.样本为空。
因此选择特征时也需要一定的方法,根据不同的选择方法将分类决策树分为以下几种。
3.2.1 信息增益 - ID3:分类
3.2.1.1 计算信息增益
信息增益的计算
首先计算出整个数据集的信息熵:
Ent
(
D
)
=
−
∑
k
=
1
∣
y
∣
p
k
log
2
p
k
\operatorname{Ent}(D)=-\sum_{k=1}^{|y|} p_{k} \log _{2} p_{k}
Ent(D)=−∑k=1∣y∣pklog2pk
P
k
P_k
Pk直接统计数据中某个类出现次数的占比
然后计算条件熵,即根据某个特征的特征值将数据集进行划分,然后计算划分后数据集的熵,这代表这个特征对数据集熵的贡献。
最后用数据集的信息熵 减去 根据某个特征划分后数据集的条件熵,就得到了这个特征的信息增益:
V是某个特征取值的个数,
D
V
D^V
DV是根据特征值划分后的子集。
3.2.2 根据信息增益构造树-ID3
用阈值筛选的好处是避免让噪音特征对分类结果产生影响。
3.2.2 信息增益比 - C4.5:分类
3.2.2.1 计算信息增益比
用信息增益作为选择特征的标准有一个问题:偏向于选特征取值数目较多的特征。为了解决这一问题,引入了信息增益比。
分子g(D,A)是特征A的信息增益,n是特征A可取值的个数。
信息增益比的本质是在信息增益的公式上加一个罚项:特征取值的个数越多, H A ( D ) H_A(D) HA(D)通常就越大,因此特征取值个数多时,惩罚力度大,个数少时,惩罚力度小。
缺点:信息增益率里分母的计算导致偏向取值较少的特征,然而信息增益的计算又导致偏向取值较多的特征,因此并不清楚这两个谁的抵消力度更大。
3.2.2.2 根据信息增益比构造树-C4.5
和ID3一样,根据每个特征计算出的增益比进行降序排序,然后逐个和阈值对比进行挑选。阈值一般取平均。
3.2.3 基尼指数-CART:既可做分类、也可做回归
G i n i ( D ) Gini(D) Gini(D)表示集合D的不确定性或纯度,值越高,不确定性越大,值越低,纯度越高。
3.2.3.1 计算基尼指数
举个例子:
假设现在有特征 “学历”, 此特征有三个特征取值:“本科”,“硕士", “博士”,
当使用“学历"这个特征对样本集合D进行划分时,划分值分别有三个,因而有三种划分的可能集合, 划分后的子集如下:
1划分点: “本科", 划分后的子集合:
{
本
科
}
,
{
硕
士
,
博
士
}
\{本 科 \} , \{硕士,博士\}
{本科},{硕士,博士}
2.划分点:“硕士”,划分后的子集合:
{
硕
士
}
,
{
本
科
,
博
士
}
\{硕士\},\{本科,博士\}
{硕士},{本科,博士}
3.划分点:“博士",划分后的子集合:
{
博
士
}
,
{
本
科
,
硕
士
}
\{ 博士\}, \{本科, 硕士 \}
{博士},{本科,硕士}
对于上述的每一种划分,都可以计算出基于划分特征= 某个特征值 将样本集合D划分为两个子集的纯度:
Gini
(
D
,
A
)
=
∣
D
1
∣
∣
D
∣
Gini
(
D
1
)
+
∣
D
2
∣
∣
D
∣
Gini
(
D
2
)
\operatorname{Gini}(D, A)=\frac{\left|D_{1}\right|}{|D|} \operatorname{Gini}\left(D_{1}\right)+\frac{\left|D_{2}\right|}{|D|} \operatorname{Gini}\left(D_{2}\right)
Gini(D,A)=∣D∣∣D1∣Gini(D1)+∣D∣∣D2∣Gini(D2)
3.2.3.2 生成分类树
上述过程可以总结为不断选择可以让样本集划分后纯度最高的点进行划分。
例题:
3.2.3.3 CART怎样做回归树
Classification And Regression Tree(CART)是决策树的一种, CART算法既可以用于创建分类树 (Classification Tree),也可以用于创建回归树 (Regression Tree),两者在建树的过程稍有差异。
回归树:
CART回归树是假设树为二叉树,通过不断将特征进行分裂。比如当前树结点是基于第j个特征值进行分裂的,设该特征值小于s的样本划分为左子树, 大于s的样本划分为右子树。
R
1
(
j
,
s
)
=
{
x
∣
x
(
j
)
≤
s
}
R_{1}(j, s)=\left\{x \mid x^{(j)} \leq s\right\}
R1(j,s)={x∣x(j)≤s} and
R
2
(
j
,
s
)
=
{
x
∣
x
(
j
)
>
s
}
R_{2}(j, s)=\left\{x \mid x^{(j)}>s\right\}
R2(j,s)={x∣x(j)>s}
而CART回归树实质上就是在该特征维度对样本空间进行划分,而这种空间划分的优化是一种NP难问题,因此,在决策树模型中是使用启发式方法解决。典型CART回归树产生的目标函数为:
∑
x
i
∈
R
m
(
y
i
−
f
(
x
i
)
)
2
\sum_{x_{i} \in R_{m}}\left(y_{i}-f\left(x_{i}\right)\right)^{2}
xi∈Rm∑(yi−f(xi))2
因此,当我们为了求解最优的切分特征和最优的切分点s,就转化为求解这么一个目标函数:
min
j
,
5
[
min
c
1
∑
x
i
∈
R
1
(
j
,
s
)
(
y
i
−
c
1
)
2
+
min
c
2
∑
x
i
∈
R
2
(
j
,
s
)
(
y
i
−
c
2
)
2
]
\min _{j, 5}\left[\min _{c_{1}} \sum_{x_{i} \in R_{1}(j, s)}\left(y_{i}-c_{1}\right)^{2}+\min _{c_{2}} \sum_{x_{i} \in R_{2}(j, s)}\left(y_{i}-c_{2}\right)^{2}\right]
j,5min⎣⎡c1minxi∈R1(j,s)∑(yi−c1)2+c2minxi∈R2(j,s)∑(yi−c2)2⎦⎤
所以我们只要遍历所有特征的的所有切分点,就能找到最优的切分特征和切分点。最终得到一棵回归树。
3.3 剪枝
决策树的剪枝基本策略有 预剪枝 (Pre-Pruning) 和 后剪枝 (Post-Pruning)。
预剪枝:其中的核心思想就是,在每一次实际对结点进行进一步划分之前,先采用验证集的数据来验证如果划分是否能提高划分的准确性。如果不能,就把结点标记为叶结点并退出进一步划分;如果可以就继续递归生成节点。
后剪枝:后剪枝则是先从训练集生成一颗完整的决策树,然后自底向上地对非叶结点进行考察,若将该结点对应的子树替换为叶结点能带来泛化性能提升,则将该子树替换为叶结点。
4.集成学习(Ensemble Learning)
在机器学习的有监督学习算法中,我们的目标是学习出一个稳定的且在各个方面表现都较好的模型,但实际情况往往不这么理想,有时我们只能得到多个有偏好的模型(弱监督模型,在某些方面表现的比较好)。集成学习就是组合这里的多个弱监督模型以期得到一个更好更全面的强监督模型,集成学习潜在的思想是即便某一个弱分类器得到了错误的预测,其他的弱分类器也可以将错误纠正回来,即博采众长。
因此集成学习有两个主要的问题:1.怎样得到弱分类器;2.怎样结合弱分类器。
集成学习的第一个问题就是如何得到若干个个体学习器。这里我们有两种选择。
第一种就是所有的个体学习器都是一个种类的,或者说是同质的。比如都是决策树个体学习器,或者都是神经网络个体学习器。第二种是所有的个体学习器不全是一个种类的,或者说是异质的。比如我们有一个分类问题,对训练集采用支持向量机个体学习器,逻辑回归个体学习器和朴素贝叶斯个体学习器来学习,再通过某种结合策略来确定最终的分类强学习器。
目前来说,同质个体学习器的应用是最广泛的,一般我们常说的集成学习的方法都是指的同质个体学习器。而同质个体学习器使用最多的模型是CART决策树和神经网络。同质个体学习器按照个体学习器之间是否存在依赖关系可以分为两类,第一个是个体学习器之间存在强依赖关系,一系列个体学习器基本都需要串行生成,代表算法是boosting系列算法,第二个是个体学习器之间不存在强依赖关系,一系列个体学习器可以并行生成,代表算法是bagging和随机森林(Random Forest)系列算法。下面就分别对这两类算法做一个概括总结。
4.1 怎样得到弱分类器(Bagging、Boosting)
4.1.1 Bagging-重点在集成
Bagging顾名思义:将多个分类器打包
Bagging是bootstrap aggregating的简写。先说一下bootstrap,bootstrap也称为自助法,它是一种有放回的抽样方法。通过Bagging得到的弱学习器之间没有依赖关系。
从上图可以看出,bagging的个体弱学习器的训练集是通过有放回的随机采样得到的。通过T次的随机采样,我们就可以得到T个采样集,对于这T个采样集,我们可以分别独立的训练出T个弱学习器,再对这T个弱学习器通过集合策略来得到最终的强学习器。由于是随机采样,这样每次的采样集是和原始训练集不同的,和其他采样集也是不同的,这样得到多个不同的同质弱学习器。
随机森林是bagging的一个特化进阶版,所谓的特化是因为随机森林的弱学习器都是决策树。所谓的进阶是随机森林在bagging的样本随机采样基础上,又加上了特征的随机选择,其基本思想没有脱离bagging的范畴。bagging和随机森林算法的原理在后面的文章中会专门来讲。
4.1.2 Boosting-重点在提升
Boosting顾名思义:在之前的分类器上进行提升得到下个分类器,核心思想是“三个臭皮匠顶个诸葛亮”。
Boosting(提升方法)是一种可以用来减小监督学习中偏差的机器学习算法。主要也是学习一系列弱分类器,并将其组合为一个强分类器。
从图中可以看出,Boosting算法的工作机制是首先从训练集用初始权重训练出一个弱学习器1,根据弱学习的学习误差率表现来更新训练样本的权重,使得之前弱学习器1学习误差率高的训练样本点的权重变高,使得这些误差率高的点在后面的弱学习器2中得到更多的重视。然后基于调整权重后的训练集来训练弱学习器2.,如此重复进行,直到弱学习器数达到事先指定的数目T,最终将这T个弱学习器通过集合策略进行整合,得到最终的强学习器。
Boosting系列算法里最著名算法主要有AdaBoost算法和提升树(boosting tree)系列算法。提升树系列算法里面应用最广泛的是梯度提升树(Gradient Boosting Tree)。AdaBoost和提升树算法的原理在后面的文章中会专门来讲。
4.1.3 ***Bagging和Boosting的区别
Bagging和Boosting的区别:
1)样本选择上:
Bagging:训练集是在原始集中有放回选取的,从原始集中选出的各轮训练集之间是独立的。
Boosting:每一轮的训练集不变,只是训练集中每个样例在分类器中的权重发生变化。而权值是根据上一轮的分类结果进行调整。
2)样例权重:
Bagging:使用均匀取样,每个样例的权重相等
Boosting:根据错误率不断调整样例的权值,错误率越大则权重越大。
3)预测函数:
Bagging:所有预测函数的权重相等。
Boosting:每个弱分类器都有相应的权重,对于分类误差小的分类器会有更大的权重。
4)并行计算:
Bagging:各个预测函数可以并行生成
Boosting:各个预测函数只能顺序生成,因为后一个模型参数需要前一轮模型的结果。
4.1.4 ***Bagging和Boosting下的偏差和方差
偏差概念:偏差度量了学习算法的期望预测与真实结果的偏离程度,刻画了学习算法本身的拟合能力。也即,偏差(Bias)描述了预测值(估计值)的期望与真实值之间的差距,偏差越大,越偏离真实数据。 比如真实概率为1,预测为0.6,那么偏离了0.4。偏差可看做是“有监督的”,有人的知识参与的一个指标。
方差概念:方差度量了同样大小的训练集的变动所导致的学习性能的变化,刻画了数据扰动所造成的影响。也即,方差(Variance)描述的是预测值的变化范围,离散程度,也就是离其期望值的距离,方差越大,数据的分布越分散。方差可看做是“无监督的”,客观的指标。
噪声概念:噪声表达了当前任务上任何学习算法所能达到的期望泛化误差的下界,刻画了学习问题本身的难度。
Bagging降低方差:
Bagging对样本重采样,对每一重采样得到的子样本集训练一个模型,最后取平均。由于子样本集的相似性以及使用的是同种模型,因此各模型有近似相等的bias和variance(事实上,各模型的分布也近似相同,但不独立),所以bagging后的bias和单个子模型的接近,一般来说不能显著降低bias。 另一方面,假设每个子模型都完全不一样,即相互独立,那么此时会显著降低方差,而如果每个模型都一样,那么此时方差为0,不会降低方差,Bagging得到的模型有一定关联,因此介于以上两个极端情况之间,因此会一定程度上降低方差。从算法来看,Bagging关注的是多个基模型的投票组合,保证了模型的稳定,因此会降低方差。
Boosting降低偏差:
Boosting 则是迭代算法,每一次迭代都根据上一次迭代的预测结果调整样本权值,所以随着迭代不断进行,误差会越来越小,所以模型的 bias 会不断降低。即Boosting采用的策略是在每一次学习中都减少上一轮的偏差。这种算法无法并行。
4.2 弱分类器之间怎样组合
4.2.1 平均法
对于数值类的回归预测问题,通常使用的结合策略是平均法,也就是说,对于若干个弱学习器的输出进行平均得到最终的预测输出。
最简单的平均是算术平均, 也就是说最终预测是
H
(
x
)
=
1
T
∑
1
T
h
i
(
x
)
H(x)=\frac{1}{T} \sum_{1}^{T} h_{i}(x)
H(x)=T11∑Thi(x)
如果每个个体学习器有一个权重w,则最终预测是
H
(
x
)
=
∑
i
=
1
T
w
i
h
i
(
x
)
H(x)=\sum_{i=1}^{T} w_{i} h_{i}(x)
H(x)=i=1∑Twihi(x)
其中
w
i
w_{i}
wi 是个体学习楍
h
i
h_{i}
hi 的权重, 通常有
w
i
≥
0
,
∑
i
=
1
T
w
i
=
1
w_{i} \geq 0, \quad \sum_{i=1}^{T} w_{i}=1
wi≥0,i=1∑Twi=1
4.2.2 投票法
对于分类问题的预测,我们通常使用的是投票法。
最简单的投票法是相对多数投票法,也就是我们常说的少数服从多数,也就是T个弱学习器的对样本x的预测结果中,数量最多的类别ci为最终的分类类别。如果不止一个类别获得最高票,则随机选择一个做最终类别。Bagging常用简单投票法。
稍微复杂的投票法是绝对多数投票法,也就是我们常说的要票过半数。在相对多数投票法的基础上,不光要求获得最高票,还要求票过半数。否则会拒绝预测。
更加复杂的是加权投票法,和加权平均法一样,每个弱学习器的分类票数要乘以一个权重,最终将各个类别的加权票数求和,最大的值对应的类别为最终类别。Boosting常用加权投票法。
4.2.3 学习法Stacking
上面的方法都是对弱学习器的结果做平均或者投票,相对比较简单,但是可能学习误差较大,于是就有了学习法这种方法,对于学习法,代表方法是stacking。Stacking方法是指训练一个模型用于组合其他各个模型。首先我们先训练多个不同的弱学习器,然后把之前训练的各个学习器的输出为输入来训练一个模型,以得到一个最终的输出。
在这种情况下,我们将弱学习器称为初级学习器,将用于结合的学习器称为次级学习器。对于测试集,我们首先用初级学习器预测一次,得到次级学习器的输入样本,再用次级学习器预测一次,得到最终的预测结果。
4.3 Bagging之随机森林(RF)
Random Forest(随机森林)是一种基于树模型的Bagging的优化版本,一棵树的生成肯定还是不如多棵树,因此就有了随机森林,解决决策树泛化能力弱的特点。(可以理解成三个臭皮匠顶过诸葛亮)
4.3.1 随机森林的生成
同一批数据,用同样的算法只能产生一棵树,这时Bagging策略可以帮助我们产生不同的数据集。Bagging策略来源于bootstrap aggregation:从样本集(假设样本集N个数据点)中重采样选出Nb个样本(有放回的采样,样本数据点个数仍然不变为N),在所有样本上,对这n个样本建立分类器(ID3\C4.5\CART\SVM\LOGISTIC),重复以上两步m次,获得m个分类器,最后根据这m个分类器的投票结果,决定数据属于哪一类。
每棵树的按照如下规则生成:
1.如果训练集大小为N,对于每棵树而言,随机且有放回地从训练集中的抽取Nb个训练样本,作为该树的训练集;
2.如果每个样本的特征维度为M,指定一个常数m<<M,随机地从M个特征中选取m个特征子集,每次树进行分裂时,从这m个特征中选择最优的;
3.每棵树都尽最大程度的生长,并且没有剪枝过程。
一开始我们提到的随机森林中的“随机”就是指的这里的两个随机性:构造训练数据的随机性、特征选择的随机性。两个随机性的引入对随机森林的分类性能至关重要。由于它们的引入,使得随机森林不容易陷入过拟合,并且具有很好得抗噪能力(比如:对缺省值不敏感)。
总的来说就是随机选择样本数,随机选取特征,随机选择分类器,建立多棵这样的决策树,然后通过这几课决策树来投票,决定数据属于哪一类(投票机制有一票否决制、少数服从多数、加权多数)
4.3.2 随机森林分类效果的影响因素以及参数
森林中任意两棵树的相关性:相关性越大,错误率越大(两棵树越相似,那么防止过拟合的效果越不好);
森林中每棵树的分类能力:每棵树的分类能力越强,整个森林的错误率越低。
参数值:
1.随机森林每棵树训练时需要的数据个数Nb:其中重采样的个数是原数据的2/3,所以这个不用调。
2.树的个数:n;用交叉验证调整n的个数,n选择不当可能导致过拟合。
3.特征个数m:减小特征选择个数m,树的相关性和分类能力也会相应的降低;增大m,两者也会随之增大。所以关键问题是如何选择最优的m(或者是范围)。
4.3.3 随机森林有什么优缺点
优点:
1.在当前的很多数据集上,相对其他算法有着很大的优势,表现良好。
2.它能够处理很高维度(feature很多)的数据,并且不用做特征选择(因为特征子集是随机选择的)。
3.在训练完后,它能够给出哪些feature比较重要:查看所有树中哪些特征靠前,靠前的重要。
4.训练速度快,容易做成并行化方法(训练时树与树之间是相互独立的)。
5.在训练过程中,能够检测到feature间的互相影响:在所有学习器中,哪些特征出现在一起的次数多
6.对于不平衡的数据集来说,它可以平衡误差:多次随机构造样本集
7.如果有很大一部分的特征遗失,仍可以维持准确度。
缺点:
1.随机森林已经被证明在某些噪音较大的分类或回归问题上会过拟合。
2.对于有不同取值的属性的数据,取值划分较多的属性会对随机森林产生更大的影响,所以随机森林在这种数据上产出的属性权值是不可信的:虽然每棵树的数据集以及特征集是随机构造的,但从总体上看特征取值较多的特征对数据集的影响不可避免地偏大,因此对随机森林会产生一定影响。
4.3.4 随机森林如何处理缺失值
根据随机森林创建和训练的特点,随机森林对缺失值的处理还是比较特殊的:
1.首先,给缺失值预设一些估计值,比如数值型特征,选择其余数据的中位数或众数作为当前的估计值。
2.然后,根据估计的数值,建立随机森林,把所有的数据放进随机森林里面跑一遍。记录每一组数据在决策树中一步一步分类的路径。
3.N个数据在随机森林中都有一个分类路径,因此可以通过分类路径判断N组数据之间的相似度,其结果用N*N的矩阵表示。
4.最后对含有缺失值的数据中的缺失值重新赋值:如果缺失值是类别变量,根据相似度矩阵通过权重投票得到新估计值,如果是数值型变量,通过加权平均得到新的估计值,如此迭代,直到得到稳定的估计值。
其实,该缺失值填补过程类似于推荐系统中采用协同过滤进行评分预测,先计算缺失特征与其他特征的相似度,再加权得到缺失值的估计,而随机森林中计算相似度的方法(根据数据在决策树中一步一步分类的路径)乃其独特之处。
4.3.5 随机森林通过OOB确定参数m
OOB:
上面我们提到,构建随机森林的关键问题就是如何选择最优的m,要解决这个问题主要依据计算袋外错误率oob error(out-of-bag error)。
bagging方法中Bootstrap每次约有1/3的样本不会出现在Bootstrap所采集的样本集合中,当然也就没有参加决策树的建立,把这1/3的数据称为袋外数据oob(out of bag),它可以用于取代测试集误差估计方法。
袋外数据(oob)误差的计算方法如下:
1.对于已经生成的随机森林,用袋外数据测试其性能,假设袋外数据总数为O,用这O个袋外数据作为输入,带进之前已经生成的随机森林分类器,分类器会给出O个数据相应的分类
2.因为这O条数据的类型是已知的,则用正确的分类与随机森林分类器的结果进行比较,统计随机森林分类器分类错误的数目,设为X,则袋外数据误差大小=X/O,然后不断调整m的个数,确定合适的的m值。
优缺点:
这已经经过证明是无偏估计的,所以在随机森林算法中不需要再进行交叉验证或者单独的测试集来获取测试集误差的无偏估计
4.4 Boosting之AdaBoost
4.4.1 AdaBoost-主要用于分类
4.4.2 Boosting Tree-分类回归兼可
4.5 Boosting之GBDT
4.5.1 GBDT介绍
GBDT(Gradient Boosting Decision Tree),全名叫梯度提升决策树,使用的是Boosting的思想。
GBDT的原理很简单,就是之前所有弱分类器的结果相加等于预测值,然后下一个弱分类器去拟合残差(这个残差就是预测值与真实值之间的误差)。当然了,它里面的弱分类器的表现形式就是各棵树。
举一个非常简单的例子,比如我今年30岁了,但计算机或者模型GBDT并不知道我今年多少岁,那GBDT咋办呢?
它会在第一个弱分类器(或第一棵树中)随便用一个年龄比如20岁来拟合,然后发现误差有10岁;
接下来在第二棵树中,用6岁去拟合剩下的损失,发现差距还有4岁;
接着在第三棵树中用3岁拟合剩下的差距,发现差距只有1岁了;
最后在第四课树中用1岁拟合剩下的残差,完美。
最终,四棵树的结论加起来,就是真实年龄30岁
实际工程中,gbdt是计算负梯度,用负梯度近似代替残差,那么为什么负梯度可以代替残差呢?
以回归任务举例:回归任务下,GBDT 在每一轮的迭代时对每个样本都会有一个预测值,此时的损失函数为均方差损失函数,
l
(
y
i
,
y
i
)
=
1
2
(
y
i
−
y
i
)
2
l\left(y_{i}, y^{i}\right)=\frac{1}{2}\left(y_{i}-y^{i}\right)^{2}
l(yi,yi)=21(yi−yi)2
那此时的负梯度是这样计算的
−
[
∂
l
(
y
i
,
y
i
)
∂
y
i
]
=
(
y
i
−
y
i
)
-\left[\frac{\partial l\left(y_{i}, y^{i}\right)}{\partial y^{i}}\right]=\left(y_{i}-y^{i}\right)
−[∂yi∂l(yi,yi)]=(yi−yi)
可以得知,当损失函数选用均方损失函数是时,每一次拟合的值就是 (真实值 - 当前模型预测的值), 即残差。因此拟合负梯度可以近似的代替拟合残差。
4.5.2 GBDT的优点和局限性有哪些?
3.1 优点
1.预测阶段的计算速度快,树与树之间可并行化计算,注意是预测阶段。
2.在分布稠密的数据集上,泛化能力和表达能力都很好,这使得GBDT在Kaggle的众多竞赛中,经常名列榜首。
3.采用决策树作为弱分类器使得GBDT模型具有较好的解释性和鲁棒性,能够自动发现特征间的高阶关系。
3.2 局限性
1.GBDT在高维稀疏的数据集上,表现不如支持向量机或者神经网络。
2.GBDT在处理文本分类特征问题上,相对其他模型的优势不如它在处理数值特征时明显。
3.训练过程需要串行训练,只能在决策树内部采用一些局部并行的手段提高训练速度。
4.5.3 RF(随机森林)与GBDT之间的区别与联系
相同点:
都是由多棵树组成,最终的结果都是由多棵树一起决定。
RF和GBDT在使用CART树时,可以是分类树或者回归树。
不同点:
组成随机森林的树可以并行生成,而GBDT是串行生成
随机森林的结果是多数表决表决的,而GBDT则是多棵树累加之和
随机森林对异常值不敏感,而GBDT对异常值比较敏感
随机森林是减少模型的方差,而GBDT是减少模型的偏差
随机森林不需要进行特征归一化。而GBDT则需要进行特征归一化
4.5.4 GBDT与Boosting Tree之间的区别
GBDT(Gradient Boosting Decision Tree),全名叫梯度提升决策树,使用的是Boosting的思想。由此可见GBDT与Boosting Tree之间最大的区别是GBDT利用了损失函数的负梯度在当前模型的值作为回归问题Boosting Tree(提升树)算法中的残差的近似值,去拟合一个回归树。
那么为什么这么做呢?
因为Boosting Tree(提升树)是利用加法模型与前向分步算法实现学习的优化过程,当损失函数是平方损失函数或指数损失函数时,每一步的优化较为简单,但对于一般损失函数而言,每一步优化就很不容易,因此提出了用损失函数的负梯度近似代替残差去拟合回归树。
一般损失函数、平方损失函数、指数损失函数:
一般问题用一般损失函数:问题和损失函数无法像回归和分类问题那样简单定义。
回归问题用平方损失函数:
l
(
y
i
,
f
(
x
)
)
=
1
2
(
y
i
−
f
(
x
)
)
2
l\left(y_{i}, f(x)\right)=\frac{1}{2}\left(y_{i}-f(x)\right)^{2}
l(yi,f(x))=21(yi−f(x))2
分类问题用指数损失函数:
L
(
y
,
f
(
x
)
)
=
1
n
∑
i
=
1
n
exp
[
−
y
i
f
(
x
i
)
]
L(y, f(x))=\frac{1}{n} \sum_{i=1}^{n} \exp \left[-y_{i} f\left(x_{i}\right)\right]
L(y,f(x))=n1∑i=1nexp[−yif(xi)]
5. 感知机
6.支持向量机
6.1 介绍
6.2 线性可分支持向量机/硬间隔支持向量机
6.2.1 介绍
6.2.2 函数间隔和几何间隔
通过由前面的分析可知:函数间隔不适合用来最大化间隔值,因为在超平面固定以后,可以等比例地缩放
w
w
w 的长度和b的值,这样可以使得
f
(
x
)
=
w
T
x
+
b
f(x)=w^{T} x+b
f(x)=wTx+b 的值任意大,亦即函数间隔可以在超平面保持不变的情况下被取得任意大。但几何间隔因为除上了
∣
∣
w
∣
∣
||w||
∣∣w∣∣,使得在缩放
w
w
w 和
b
b
b 的时候几 何间隔的值是不会改变的,它只随着超平面的变动而变动,因此,这是更加合适的一个间隔。换言之,这里要找的最大间隔分类超平面中的 “间隔"指的是几何间隔。
如下图所示,中间的实线便是寻找到的最优超平面(Optimal Hyper Plane),其到两条虚线边界的距离相等,这个距离便是几何间隔,两条虚线间隔边界之间的距离等于2倍几何间隔,而虚线间隔边界上的点则是支持向量。由于这些支持向量刚好在虚线间隔边界上,所以它们满足
y
(
w
T
x
+
b
)
=
1
y\left(w_{T} x+b\right)=1
y(wTx+b)=1, 对于所有不是支持向量的点, 则显然有
y
(
w
T
x
+
b
)
>
1
y(w^{T} x+b)>1
y(wTx+b)>1 。
6.2.3 如何求最大分离超平面
6.3 线性支持向量机/软间隔支持向量机
6.3.1 介绍
6.3.2 对偶问题
max
1
∥
w
∥
s.t.,
y
i
(
w
T
x
i
+
b
)
≥
1
,
i
=
1
,
…
,
n
\max \frac{1}{\|w\|} \text { s.t., } y_{i}\left(w^{T} x_{i}+b\right) \geq 1, i=1, \ldots, n
max∥w∥1 s.t., yi(wTxi+b)≥1,i=1,…,n
转换为对偶问题, 解释一下什么是对偶问题,对偶问题是实质相同但从不同角度提出不同提法的一对问题。
由于求
1
∥
w
∥
\frac{1}{\|w\|}
∥w∥1 的最大值相当于求
1
2
∥
w
∥
的最小值,所以上述目标函数等价于
2
\frac{1}{2}\|w\|_{\text {的最小值,所以上述目标函数等价于 }}^{2}
21∥w∥的最小值,所以上述目标函数等价于 2 (w由分母变成分子,从而也有原来的max问题变为
m
i
n
\mathrm{min}
min 问题,很明 显, 两者问题等价):
min
1
2
∥
w
∥
2
s.t.,
y
i
(
w
T
x
i
+
b
)
≥
1
,
i
=
1
,
…
,
n
\min \frac{1}{2}\|w\|^{2} \text { s.t., } y_{i}\left(w^{T} x_{i}+b\right) \geq 1, i=1, \ldots, n
min21∥w∥2 s.t., yi(wTxi+b)≥1,i=1,…,n
因为现在的目标函数是二次的,约束条件是线性的,所以它是一个凸二次规划问题。这个问题可以用现成的QP (Quadratic Programming) 优化包 进行求解。一言以蔽之:在一定的约束条件下,目标最优,损失最小。
此外,由于这个问题的特殊结构,还可以通过拉格朗日对偶性(Lagrange Duality)变换到对偶变量 (dual variable) 的优化问题,即通过求解与原 问题等价的对偶问题 (dual problem) 得到原始问题的最优解,这就是线性可分条件下支持向量机的对偶算法, 这样做的优点在于:一者对偶问 题往往更容易求解; 二者可以自然的引入核函数, 进而推广到非线性分类问题。
6.3.3 损失函数
6.4 线性不可分/核函数
6.4.1 非线性分类问题求解过程/核技巧
6.4.2 核函数
6.4.3 核函数种类
通常人们会从一些常用的核函数中选择(根据问题和数据的不同,选择不同的参数,实际上就是得到了不同的核函数),例如:多项式核、高斯核、线性核。
读者可能还是没明白核函数到底是个什么东西? 我再简要概括下,即以下三点:
- 实际中,我们会经常遇到线性不可分的样例,此时,我们的常用做法是把样例特征映射到高维空间中去(映射到高维空间后,相关特征便被 分开了,也就达到了分类的目的);
- 但进一步,如果凡是遇到线性不可分的样例,一律映射到高维空间,那么这个维度大小是会高到可怕的。那咋办呢?
- 此时, 核函数就隆重登场了,核函数的价值在于它虽然也是将特征进行从低维到高维的转换,但核函数绝就绝在它事先在低维上进行计算, 而将实质上的分类效果表现在了高维上,避免了直接在高维空间中的复杂计算。
如果数据中出现了离群点outliers,那么就可以使用松弛变量来解决。
6.5 SVM的一些问题
- 是否存在一组参数使SVM训练误差为
0
?
0 ?
0?
答:存在 - 训练误差为 0 的SVM分类器一定存在吗?
答:一定存在 - 加入松弛变量的SVM的训练误差可以为 0 吗?
答:使用SMO算法训练的线性分类器并不一定能得到训练误差为 0 的模型。这是由于我们的优化目标改变了,并不再是使训练误差最小。 - 带核的SVM为什么能分类非线性问题?
答:核函数的本质是两个函数的内积,通过核函数将其隐射到高维空间,在高维空间非线性问题转化为线性问题, SVM得到超平面是高维空间的线性分类平面。其分类结果也视为低维空间的非线性分类结果, 因而带核的SVM就能分类非线性问题。 - 如何选择核函数?
- 如果特征的数量大到和样本数量差不多,则选用LR或者线性核的SVM;
- 如果特征的数量小, 样本的数量正常,则选用SVM+高斯核函数;
- 如果特征的数量小,而样本的数量很大,则需要手工添加一些特征从而变成第一种情况。
6.6 LR和SVM的联系与区别
相同点
- 都是线性分类器。本质上都是求一个最佳分类超平面。
- 都是监督学匀算法。
- 都是判别模型。判别模型不关心数据是怎么生成的,它只关心信号之间的差别,然后用差别来简单对给定的一个信号进行分类。常见的判别模型有: KNN、SVM、 LR, 常见的生成模型有: 朴素贝叶斯,隐马尔可夫模型。
不同点
- LR是参数模型,svm是非参数模型,linear和rbf则是针对数据线性可分和不可分的区别;
- 从目标函数来看,区别在于逻辑回归采用的是logistical loss,SVM采用的是hinge loss,这两个损失函数的目的都是增加对分类影响较大的数据点的权重,减少与分类关系较小的数据点的权重。
- SVM的处理方法是只考虑support vectors,也就是和分类最相关的少数点,去学习分类器。而逻辑回归通过非线性映射,大大减小了离分类平面较远的点的权重,相对提升了与分类最相关的数据点的权重。
- 逻辑回归相对来说模型更简单,好理解,特别是大规模线性分类时比较方便。而SVM的理解和优化相对来说复杂一些,SVM转化为对偶问题后,分类只需要计算与少数几个支持向量的距离,这个在进行复杂核函数计算时优势很明显,能够大大简化模型和计算。
- logic 能做的 svm能做,但可能在准确率上有问题,svm能做的logic有的做不了。
6.7 线性分类哭与非线性分类器的区别以及优劣
线性和非线性是针对模型参数和输入特征来讲的; 比如输入 x \mathrm{x} x, 模型 y = a x + a x 2 y=a x+a x^2 y=ax+ax2 那么就是非线性模型, 如果输入是x和 x 2 x^2 x2 则模型是线性的。
- 线性分类器可解释性好,计算复杂度较低, 不足之处是模型的拟合效果相对弱些。
LR,贝叶斯分类,单层感知机、线性回归 - 非线性分类楍效果拟合能力较强, 不足之处是数据量不足容易过拟合、计算复杂度高、可解释性不好。
决策树、RF、GBDT、多层感知机 - SVM两种都有 (看线性核还是高斯核)
7. 朴素贝叶斯模型
7.1 两个假设
一个特征出现的概率与其他特征(条件)独立;
每个特征同等重要。
7.2 公式
P ( w ∣ x ) = p ( x ∣ w ) p ( w ) p ( x ) = p ( x ∩ w ) p ( x ) P(w \mid x)=\frac{p(x \mid w) p(w)}{p(x)} =\frac{p(x∩w)}{p(x)} P(w∣x)=p(x)p(x∣w)p(w)=p(x)p(x∩w)
7.3 介绍
7.3.1 基础知识
7.3.2 朴素贝叶斯
8.隐马尔可夫模型(HMM)
8.1 定义
8.2 三类问题
8.3 三类问题对应的算法
8.3.1 概率计算问题
已知模型的参数(初始状态分布概率、状态转移概率、观测生成概率分布),求某个观测序列出现的概率。
8.3.1.1 直接计算算法(穷举)
根据初始状态概率分布、状态转移矩阵以及观测概率分布计算出所有的观测序列,最后求指定的观测序列的出现概率。
8.3.1.2 前向计算
逐步确定观测序列中t时刻的出现概率,直到最后
8.3.1.3 后向计算算法
把前向计算过程倒过来,我们知道总的概率肯定是1,那么B_T=1,也就是最后一个时刻的概率合为1,然后计算前面观测的各种可能的概率,在计算前面数据时的计算路径和前向算法相反。
8.3.2 学习问题
给定观测序列,求什么样的模型参数使得观测序列出现的概率最大,即通过数据(观测序列)进行训练。
8.3.2.1 监督学习(已知观测数据和初始状态分布概率)
8.3.2.2 无监督学习(已知观测数据)
8.3.3 预测问题
已知模型的参数(初始状态分布概率、状态转移概率、观测生成概率分布)和观测序列,求最有可能对应的状态序列,即根据观测序列推出状态序列
8.3.3.1 贪心算法/近似算法
8.3.3.2 动态规划算法/维特比算法
例题:
模型的初始状态概率分布、状态转移概率以及观测概率分布如下图所示:
已知:
初始状态概率分布:【rainy:0.6,sunny:0.4】
状态转移概率:
【rainy2rainy:0.7,rainy2sunny:0.3,sunny2rainy:0.4,sunny2sunny:0.6】
观测概率分布:
【rainy2walk:0.1,rainy2shop:0.4,raing2clean:0.5】
【sunny2walk:0.6,sunny2shop:0.3,sunny2clean:0.1】
观测序列: 【walk、shop、clean】
求最可能的状态序列的近似算法计算过程:
1)求第一天分别为下雨和晴天时去walk的概率:
day1_rain = 0.6 * 0.1 = 0.06
day1_sunny = 0.4 * 0.6 = 0.24
0.24>0.06,因此第一天的状态最可能为晴天
2)求第二天分别为下雨和晴天时去shop的概率:
day2_rain= (晴转雨+雨转雨) * 雨天去shop = (0.6 * 0.7 + 0.4 * 0.4) * 0.4 = 0.58 * 0.4 = 0.232
day2_sunny = (晴转晴+雨转晴) * 晴天去shop = (0.4 * 0.4 + 0.6 * 0.3) * 0.3 = 0.4 * 0.3 = 0.12
0.232 > 0.12,因此第二天的状态最可能为雨天
3)求第三天分别为下雨和晴天时去clean的概率:
day3_rain = (0.58*0.7 + 0.4 * 0.4) * 0.5= 0.566 * 0.5 = 0.283
day3_sunny = (0.58 * 0.3 + 0.4 * 0.6) * 0.1= 0.414 * 0.1 = 0.0414
0.283>0.0414,所以第三天的状态最可能为雨天
近似算法下,最终为晴雨雨
求最可能的状态序列的维特比算法计算过程(换个问题展示):
9. 条件随机场CRF
9.1 基本定义
9.2 CRF与HMM的区别
1.HMM是生成模型;CRF是判别模型
2.首先看下HMM的两个基本假设:(1)隐马尔可夫齐次性假设;(2)观测独立性假设。隐马尔可夫齐次假设当前状态只和上一个状态相关,这个CRF也有,但是观测独立性假设是指当前观测只由当前状态决定,这个CRF没有,从上面举得例子可以看出,给一张嘴巴闭着的照片分类时,得考虑这张照片的上一个状态是吃饭、唱歌、还是睡觉。
10 EM算法(缺)
11 KNN
11.1 基本定义
11.2 距离度量
11.3 K值的选择
11.4 分类规则
11.5 实现:kd树
总结:生成模型和判别模型的区别
判别模型(discriminative model)通过求解条件概率分布P(y|x)或者直接计算y的值来预测y。
- 线性回归(Linear Regression),逻辑回归(Logistic Regression),支持向量机(SVM), 传统神经网络(Traditional Neural Networks),线性判别分析(Linear Discriminative Analysis),条件随机场(Conditional Random Field)
生成模型(generative model)通过对观测值和标注数据计算联合概率分布P(x,y)来达到判定估算y的目的。
- 朴素贝叶斯(Naive Bayes), 隐马尔科夫模型(HMM),贝叶斯网络(Bayesian Networks)和隐含狄利克雷分布(Latent Dirichlet Allocation)、混合高斯模型
无监督
12 聚类
12.1 聚类基本概念
12.2 损失函数
用 u 1 , u 2 , … , u k u^{1}, u^{2}, \ldots, u^{k} u1,u2,…,uk 来表示聚类中心,用 c ( 1 ) , c ( 2 ) , … , c ( m ) c(1), c(2), \ldots, c(m) c(1),c(2),…,c(m) 来存储与第 i i i 个实例数据最近的聚类中心的索引,共m个数据,那么损失函数为(聚类最小化问题,是要最小化所有的数据点与其所关联的聚类中心点之间的距离之和,因此 K-均值的代价函数(又称畸变函数 Distortion function)为:):
J ( c ( 1 ) , c ( 2 ) , … , c ( m ) , u 1 , … , u k ) = 1 m ∑ i = 1 m ∥ X ( i ) − u c ( i ) ∥ 2 J\left(c^{(1)}, c^{(2)}, \ldots, c^{(m)}, u_{1}, \ldots, u_{k}\right)=\frac{1}{m} \sum_{i=1}^{m}\left\|X^{(i)}-u_{c^{(i)}}\right\|^{2} J(c(1),c(2),…,c(m),u1,…,uk)=m1∑i=1m∥∥X(i)−uc(i)∥∥2
12.3 聚类方法
12.3.1 层次聚类
12.3.2 K-means聚类
12.3.3 GMM(高斯混合模型)
之前关于高斯混合模型的概念就在《Active Learning for Deep Object Detection via Probabilistic Modeling》中看到过。
那么GMM做聚类的思路是:假设每个数据都是由这K个高斯分布通过线性组合生成的,每个高斯分布对于生成数据的占比/贡献不一样,因此经过GMM经过EM训练后,对于某个数据而言占比高的那个高斯分布就是其类。
https://blog.youkuaiyun.com/bbbeoy/article/details/71516048
https://github.com/NLP-LOVE/ML-NLP/tree/master/Machine%20Learning/7.%20Clustering
https://zhuanlan.zhihu.com/p/81255623
12.4 k值的选择
12.4.1 平均直径
在上面的k-means中已经确定一种通过平均直径进行选择的方法
12.4.2 通过损失函数进行选择
其实和第一个方法一样,只不过是将平均直径换成了损失值进行筛选。
12.4.3 Gap statistic
12.5 K-means缺点及改进
1.k-means:在大数据的条件下,会耗费大量的时间和内存。 优化k-means的建议:
-
减少聚类的数目K。因为,每个样本都要跟类中心计算距离。
-
减少样本的特征维度。比如说,通过PCA等进行降维。
-
考察其他的聚类算法,通过选取toy数据,去测试不同聚类算法的性能。
-
hadoop集群,K-means算法是很容易进行并行计算的。
2.算法可能找到局部最优的聚类,而不是全局最优的聚类。使用改进的二分k-means算法。
- 二分k-means算法:首先将整个数据集看成一个簇,然后进行一次k-means(k=2)算法将该簇一分为二,并计算每个簇的误差平方和,选择平方和最大的簇迭代上述过程再次一分为二,直至簇数达到用户指定的k为止,此时可以达到的全局最优。
12.6 聚类算法如何评估
聚类评估的任务是估计在数据集上进行聚类的可行性,以及聚类方法产生结果的质量。这一过程又分为三个子任务:
- 估计聚类趋势:评估该数据集是否可以聚类
这一步骤是检测数据分布中是否存在非随机的簇结构。如果数据是基本随机 的,那么聚类的结果也是毫无意义的。具体为我们可以观察聚类误差是否随聚类类别数量的增加而单调变化,如果数据是基本随机的,即不存在非随机簇结构,那么聚类误差随聚类类别数量增加而变化的幅度应该较不显著,并且也找不到一个合适的K对应数据的真实簇数。 - 判定数据蔟数:上面提到的k值的选择
确定聚类趋势之后,我们需要找到与真实数据分布最为吻合的簇数,据此判定聚类结果的质量。数据簇数的判定方法有很多,例如手肘法和Gap Statistic方 法。 - 测定聚类质量
在无监督的情况下,我们可以通过考察簇的分离情况和簇的紧凑情况来评估聚类的效果。测量指标可以有很多种,以下列出了几种常用的度量指标:
轮廓系数、均方根标准偏差、R方(R-Square)、改进的HubertΓ统计。
13 LDA(缺)
参考
总:
https://github.com/NLP-LOVE/ML-NLP
线性回归:
https://blog.youkuaiyun.com/u010462995/article/details/70847146
集成学习:
https://www.cnblogs.com/pinard/p/6131423.html
https://zhuanlan.zhihu.com/p/27689464
https://www.cnblogs.com/earendil/p/8872001.html
https://cloud.tencent.com/developer/article/1483259
SVM:
https://blog.youkuaiyun.com/v_july_v/article/details/7624837
聚类:
https://www.zhihu.com/question/52382861
https://blog.youkuaiyun.com/bbbeoy/article/details/71516048