本篇博文主要介绍机器学习里面常遇到的一些分类相关问题。
- 监督学习和无监督学习的区别
监督学习的训练数据拥有标记信息,无监督学习的没有标记信息,分类和回归是监督学习的代表,聚类是无监督学习的代表。
- 如果数据有问题,怎么处理
第一种情况是数据存在缺失值,对缺失值的处理方法有:删除、统一值填充、统计值填充、前后向值填充、插值法填充、建模预测填充和具体分析几种方法。
第二种情况是数据存在异常值,可以删除或者修正填补。
- 相对熵公式
用于衡量同一个随机变量 X X X的两个分布 p ( x ) p(x) p(x)和 q ( x ) q(x) q(x)之间的差异, p ( x ) p(x) p(x)常用于描述样本的真实分布, q ( x ) q(x) q(x)用于表示预测的分布。
D K L p ∣ ∣ q ) = ∑ i = 1 n p ( x i ) l o g ( p ( x i ) q ( x i ) ) D_{KL}p||q)=\sum_{i=1}^{n}p(x_i)log(\frac{p(x_i)}{q(x_i)}) DKLp∣∣q)=∑i=1np(xi)log(q(xi)p(xi))
KL散度的值越小表示两个分布越接近。
- 交叉熵公式
把KL散度的公式变形,得到:
D K L p ∣ ∣ q ) = ∑ i = 1 n p ( x i ) l o g ( p ( x i ) ) − ∑ i = 1 n p ( x i ) l o g ( q ( x i ) ) = − H ( p ( x ) ) + [ − ∑ i = 1 n p ( x i ) l o g ( q ( x i ) ) ] D_{KL}p||q)=\sum_{i=1}^{n}p(x_i)log(p(x_i))-\sum_{i=1}^np(x_i)log(q(x_i))\\=-H(p(x))+[-\sum_{i=1}^np(x_i)log(q(x_i))] DKLp∣∣q)=∑i=1np(xi)log(p(xi))−∑i=1np(xi)log(q(xi))=−H(p(x))+[−∑i=1np(xi)log(q(xi))]
前半部分是 p ( x ) p(x) p(x)的熵,后半部分是交叉熵
H ( p , q ) = − ∑ i = 1 n p ( x i ) l o g ( q ( x i ) ) H(p,q)=-\sum_{i=1}^np(x_i)log(q(x_i)) H(p,q)=−∑i=1np(xi)log(q(xi))
- LR的推导,损失函数
s i g m o i d sigmoid sigmoid函数:
σ ( x ) = 1 1 + e − x \sigma(x)=\frac{1}{1+e^{-x}} σ(x)=1+e−x1
其图像如下:
把线性回归的输出作为
s
i
g
m
o
i
d
sigmoid
sigmoid函数的输入:
σ ( f ( x ) ) = 1 1 + e − w T x \sigma(f(x))=\frac{1}{1+e^{-w^T}x} σ(f(x))=1+e−wTx1
损失函数是衡量真实输出和模型输出的差别。
P
=
P
(
y
1
∣
x
1
)
P
(
y
2
∣
x
2
)
.
.
.
P
(
y
N
∣
x
N
)
=
∏
n
=
1
N
p
y
n
(
1
−
p
)
1
−
y
n
P=P(y_1|x_1)P(y_2|x_2)...P(y_N|x_N)\\=\prod_{n=1}^{N}p^{y_n}{(1-p)^{1-y_n}}
P=P(y1∣x1)P(y2∣x2)...P(yN∣xN)=∏n=1Npyn(1−p)1−yn
通过两边取对数把连乘变为连加的形式,即:
F
(
w
)
=
l
n
(
P
)
=
∑
n
=
1
N
(
y
n
l
n
(
p
)
+
(
1
−
y
n
)
l
n
(
1
−
p
)
)
F(w)=ln(P)=\sum_{n=1}^N(y_nln(p)+(1-y_n)ln(1-p))
F(w)=ln(P)=∑n=1N(ynln(p)+(1−yn)ln(1−p))
这里损失函数的值等于事件发生的总概率,希望它越大越好,按照习惯吧,都是最小化损失函数,可以在 F ( w ) F(w) F(w)前面加个负号。
- LR和线性回归的区别与联系
都是广义上的线性回归。
线性回归的优化方法是最小二乘法,而LR是似然函数。
线性回归主要是解决回归问题,LR主要是解决分类问题。
线性回归的输出是实数域上的连续值,LR的输出被sigmoid函数映射到(0,1)之间,通过设置阈值转换为分类类别。
- 逻辑回归怎么实现多分类
方法一:
把多分类任务拆解成多个二分类任务,利用逻辑回归分类器进行投票求解。有三种拆分策略,OvO、OvR、MvM逻辑回归实现多分类
OvO:转化为多个二分类
OvR:一对其余,一个类别作为正例,其余所有类别作为反例
MvM:将若干个类作为正例,若干个其他类作为反例
方法二:
对传统的逻辑回归模型改造
- 什么是支持向量机
支持向量机SVM就是一种二类分类模型,基本模型是定义在特征空间上的间隔最大的线性分类器,其学习策略就是间隔最大化。
间隔的定义:
支持向量机的基本型:
- SVM的硬间隔,软间隔表达式
硬间隔表达式:
当训练数据中有一些特异点,不能满足函数间隔大于等于1的约束条件,引入松弛变量
ξ
i
≥
0
\xi_i\ge0
ξi≥0,约束条件变为:
y
i
(
w
i
∗
x
i
+
b
)
≥
1
−
ξ
i
y_i(w_i*x_i+b)\ge1-\xi_i
yi(wi∗xi+b)≥1−ξi,同时,对每个松弛变量
ξ
i
\xi_i
ξi,支付一个代价
ξ
i
\xi_i
ξi,目标函数变为下面的,这里的
C
>
0
C>0
C>0称为惩罚参数,一般由应用问题决定,
C
C
C值越大时对误分类的惩罚增大,
C
C
C值越小时对误分类的惩罚减小。
软间隔表达式:
- SVM使用对偶计算的目的是什么,如何推出来的,手写推导;
9
中的SVM基本型是一个凸二次规划问题,可以利用现成的优化计算包求解,但引入对偶问题更容易求解。“引入核函数,进而推广到非线性分类问题。”
对9
中的每条约束添加拉格朗日乘子
α
i
>
=
0
\alpha_i>=0
αi>=0,该问题的拉格朗日函数可写为:
L
(
w
,
b
,
α
)
=
1
2
∣
∣
w
∣
∣
2
+
∑
i
=
1
m
α
i
(
1
−
y
i
(
w
T
x
i
+
b
)
)
L(w,b,\alpha)=\frac{1}{2}||w||^2+\sum_{i=1}^{m}\alpha_i(1-y_i(w^Tx_i+b))
L(w,b,α)=21∣∣w∣∣2+∑i=1mαi(1−yi(wTxi+b))
令 θ i = m a x α i ≥ 0 L ( w , b , α ) \theta_i=max_{\alpha_i\geq0}L(w,b,\alpha) θi=maxαi≥0L(w,b,α),现在目标就是最小化 θ i \theta_i θi
分别求
L
(
w
,
b
,
α
)
L(w,b,\alpha)
L(w,b,α)对
w
w
w和
b
b
b的偏导:
∂
L
∂
w
=
w
−
∑
i
=
1
m
α
i
y
i
\frac{\partial L}{\partial w}=w-\sum^m_{i=1}\alpha_iy_i
∂w∂L=w−∑i=1mαiyi
∂
L
∂
b
=
−
∑
i
=
1
m
α
i
y
i
\frac{\partial L}{\partial b}=-\sum^m_{i=1}\alpha_iy_i
∂b∂L=−∑i=1mαiyi
令偏导都等于0可得:
w
=
∑
i
=
1
m
α
i
y
i
w=\sum^m_{i=1}\alpha_iy_i
w=∑i=1mαiyi
∑
i
=
1
m
α
i
y
i
=
0
\sum^m_{i=1}\alpha_iy_i=0
∑i=1mαiyi=0
最后代入拉格朗日函数可得:
L
(
w
,
b
,
α
)
=
−
1
2
∑
i
m
∑
j
m
α
i
α
j
y
i
y
j
x
i
T
x
j
+
∑
i
=
1
m
α
i
L(w,b,\alpha)=-\frac{1}{2}\sum_{i}^{m}\sum_{j}^{m}\alpha_i\alpha_jy_iy_jx_i^Tx_j+\sum^m_{i=1}\alpha_i
L(w,b,α)=−21∑im∑jmαiαjyiyjxiTxj+∑i=1mαi
所以对偶问题为:
m
a
x
1
2
∑
i
m
∑
j
m
α
i
α
j
y
i
y
j
x
i
T
x
j
−
∑
i
=
1
m
α
i
max\ \frac{1}{2}\sum_{i}^{m}\sum_{j}^{m}\alpha_i\alpha_jy_iy_jx_i^Tx_j-\sum^m_{i=1}\alpha_i
max 21∑im∑jmαiαjyiyjxiTxj−∑i=1mαi
- SVM的物理意义是什么
构造一个最优化的超平面,以充分大的确信度对训练数据进行分类,希望对于离超平面最近的点也有足够大的确信度将它们分开。
- SVM的损失函数
采用hinge损失时,损失函数为:
1 2 ∣ ∣ w ∣ ∣ 2 + C ∑ i = 1 m m a x ( 0 , 1 − y i ( w T x i + b ) ) \frac{1}{2}||w||^2+C\sum_{i=1}^{m}max(0,1-y_i(w^Tx_i+b)) 21∣∣w∣∣2+C∑i=1mmax(0,1−yi(wTxi+b))
指数损失:
l
e
x
p
(
z
)
=
e
x
p
(
−
z
)
l_{exp}(z)=exp(-z)
lexp(z)=exp(−z)
对率损失:
l
l
o
g
(
z
)
=
l
o
g
(
1
+
e
x
p
(
−
z
)
)
l_{log}(z)=log(1+exp(-z))
llog(z)=log(1+exp(−z))
- SVM核函数的作用、种类
核函数的作用就是把样本从原始空间映射到一个更高维的特征空间,使得样本在这个特征空间内线性可分。如果原始空间是有限维的,即属性数有限,那么一定存在一个高维特征空间使样本可分。
- SVM中什么时候用线性核什么时候用高斯核?
线性核:主要用于线性可分、特征维数高的情形,参数少,速度快,对于一般数据,分类效果已经很理想。
高斯核:主要用于线性不可分、特征维数比较少的情形,参数多,分类结果非常依赖于参数。
- 为什么高斯核能够拟合无穷维度
高斯核函数:
根据泰勒展开式:
e
x
=
∑
n
=
0
∞
x
n
n
!
e^x=\sum_{n=0}^{\infty}\frac{x^n}{n!}
ex=∑n=0∞n!xn
代入上式第三项得:
映射函数为:
ϕ
(
x
)
=
1
n
!
σ
2
n
e
x
p
(
−
x
2
2
σ
2
)
x
n
\phi(x)=\sqrt{\frac{1}{n!\sigma^{2n}}}exp(-\frac{x^2}{2\sigma^2})x^n
ϕ(x)=n!σ2n1exp(−2σ2x2)xn
即高斯核函数将输入空间映射到了无穷多维空间。
- SVM和全部数据有关还是和局部数据有关
SVM只和分类界限上的支持向量点有关,换而言之只和局部数据有关。
- LR和SVM 的区别与联系
都是有监督的分类算法。
LR是参数模型,SVM是非参数模型。
SVM不直接依赖数据分布,LR依赖。
LR的损失函数是交叉熵,而SVM是hinge函数。
- 机器学习中的距离计算方法
欧式距离:
d
(
x
,
y
)
=
∑
k
=
1
n
(
x
k
−
y
k
)
2
d(x,y)=\sqrt{\sum_{k=1}^n(x_k-y_k)^2}
d(x,y)=∑k=1n(xk−yk)2
n
n
n是维数,而
x
k
x_k
xk和
y
k
y_k
yk分别是
x
x
x和
y
y
y的第
k
k
k个属性
闵可夫斯基距离:(欧式距离的推广)
d
(
x
,
y
)
=
(
∑
k
=
1
n
∣
x
k
−
y
k
∣
r
)
1
/
r
d(x,y)={(\sum_{k=1}^n|x_k-y_k|^r)}^{1/r}
d(x,y)=(∑k=1n∣xk−yk∣r)1/r
r
=
1
r=1
r=1时,称为街区距离(或曼哈顿距离,
L
1
L_1
L1范数)
r
=
2
r=2
r=2时,就是前面介绍的欧式距离(或
L
2
L_2
L2范数)
r
→
∞
r\rightarrow\infty
r→∞时,称为切比雪夫距离(或
L
m
a
x
L_{max}
Lmax范数)
d
(
x
,
y
)
=
l
i
m
r
→
∞
(
∑
k
=
1
n
∣
x
k
−
y
k
∣
r
)
1
/
r
=
m
a
x
k
(
∣
x
k
−
y
k
∣
)
d(x,y)=lim_{r\rightarrow\infty}{(\sum_{k=1}^n|x_k-y_k|^r)}^{1/r}\\=max_k(|x_k-y_k|)
d(x,y)=limr→∞(∑k=1n∣xk−yk∣r)1/r=maxk(∣xk−yk∣)
杰卡德相似系数(Jaccard):
J
(
A
,
B
)
=
∣
A
∩
B
∣
∣
A
∪
B
∣
J(A,B)=\frac{|A\cap B|}{|A\cup B|}
J(A,B)=∣A∪B∣∣A∩B∣
余弦相似度(cosine similarity):
c
o
s
(
θ
)
=
a
T
b
∣
a
∣
∗
∣
b
∣
cos(\theta)=\frac{a^Tb}{|a|*|b|}
cos(θ)=∣a∣∗∣b∣aTb
Pearson相似系数(是对象之间线性联系的度量):
ρ
X
Y
=
c
o
v
(
X
,
Y
)
σ
X
σ
Y
=
E
[
(
X
−
μ
X
)
(
Y
−
u
Y
)
]
σ
X
σ
Y
\rho_{XY}=\frac{cov(X,Y)}{\sigma_X\sigma_Y}\\=\frac{E[(X-\mu_X)(Y-u_Y)]}{\sigma_X\sigma_Y}
ρXY=σXσYcov(X,Y)=σXσYE[(X−μX)(Y−uY)]
相对熵(K-L距离):
D
(
p
∣
∣
q
)
=
∑
x
p
(
x
)
l
o
g
p
(
x
)
q
(
x
)
=
E
p
(
x
)
l
o
g
p
(
x
)
q
(
x
)
D(p||q)=\sum_xp(x)log\frac{p(x)}{q(x)}\\=E_{p(x)}log\frac{p(x)}{q(x)}
D(p∣∣q)=∑xp(x)logq(x)p(x)=Ep(x)logq(x)p(x)
Hellinger距离:
- 训练集中类别不均衡,哪个评价指标最不准确
在数据不均衡时,准确度accuracy这个评价指标最不标准,参考意义不大。
- ID3、C4.5和CART三种决策树的区别
ID3算法:信息增益
C4.5算法:信息增益率
特征A对训练数据集D的信息增益比
g
R
(
D
,
A
)
g_R(D,A)
gR(D,A)定义为其信息增益
g
(
D
,
A
)
g(D,A)
g(D,A)与训练数据集D的经验熵
H
(
A
)
H(A)
H(A)之比:
g
R
(
D
,
A
)
=
g
(
D
,
A
)
H
(
A
)
g_R(D,A)=\frac{g(D,A)}{H(A)}
gR(D,A)=H(A)g(D,A)
CART算法:基尼指数
分类问题中,假设有
K
K
K个类,样本点属于第
K
K
K类的概率为
p
k
p_k
pk,则概率分布的基尼指数定义为:
G
i
n
i
(
p
)
=
∑
k
=
1
K
p
k
(
1
−
p
k
)
Gini(p)=\sum_{k=1}^Kp_k(1-p_k)
Gini(p)=∑k=1Kpk(1−pk)
对于二类分类问题,若样本点属于第1个类的概率是
p
p
p,则概率分布的基尼指数为:
G
i
n
i
(
p
)
=
2
p
(
1
−
p
)
Gini(p)=2p(1-p)
Gini(p)=2p(1−p)
对于给定的样本集合
D
D
D,其基尼指数为:
G
i
n
i
(
D
)
=
1
−
∑
k
=
1
K
(
∣
C
k
∣
∣
D
∣
)
2
Gini(D)=1-\sum_{k=1}^K(\frac{|C_k|}{|D|})^2
Gini(D)=1−∑k=1K(∣D∣∣Ck∣)2
其中,
C
k
C_k
Ck是
D
D
D中属于第
k
k
k类的样本子集,
K
K
K是类的个数。
如果样本集合
D
D
D根据特征
A
A
A是否取某一可能值
a
a
a被分割为
D
1
D_1
D1和
D
2
D_2
D2两部分,即:
D
1
=
(
x
,
y
)
∈
D
∣
A
(
x
)
=
a
D_1={(x,y)\in D|A(x)=a}
D1=(x,y)∈D∣A(x)=a,
D
2
=
D
−
D
1
D_2=D-D_1
D2=D−D1
则在特征
A
A
A的条件下,集合
D
D
D的基尼指数为:
G
i
n
i
(
D
,
A
)
=
∣
D
1
∣
∣
D
∣
G
i
n
i
(
D
1
)
+
∣
D
2
∣
∣
D
∣
G
i
n
i
(
D
2
)
Gini(D,A)=\frac{|D_1|}{|D|}Gini(D_1)+\frac{|D_2|}{|D|}Gini(D_2)
Gini(D,A)=∣D∣∣D1∣Gini(D1)+∣D∣∣D2∣Gini(D2)
基尼指数 G i n i ( D ) Gini(D) Gini(D)表示集合 D D D的不确定性,基尼指数 G i n i ( D , A ) Gini(D,A) Gini(D,A)表示经 A = a A=a A=a分割后集合 D D D的不确定性,基尼指数越大,样本集合的不确定性也就越大。
- 朴素贝叶斯基本原理和预测过程
朴素贝叶斯法分类时,对给定的输入
x
x
x,通过学习到的模型计算后验概率分布
P
(
Y
=
c
k
∣
X
=
x
)
P(Y=c_k|X=x)
P(Y=ck∣X=x),将后验概率最大的类作为
x
x
x的类输出,后验概率计算根据贝叶斯定理进行:
P
(
Y
=
c
k
∣
X
=
x
)
=
P
(
X
=
x
∣
Y
=
c
k
)
P
(
Y
=
c
k
)
∑
k
P
(
X
=
x
∣
Y
=
c
k
)
P
(
Y
=
c
k
)
P(Y=c_k|X=x)=\frac{P(X=x|Y=c_k)P(Y=c_k)}{\sum_kP(X=x|Y=c_k)P(Y=c_k)}
P(Y=ck∣X=x)=∑kP(X=x∣Y=ck)P(Y=ck)P(X=x∣Y=ck)P(Y=ck)
由条件独立性假设可得:
y
=
f
(
x
)
=
a
r
g
m
a
x
c
k
P
(
Y
=
c
k
)
∏
j
=
1
n
P
(
X
(
j
)
=
x
(
j
)
∣
Y
=
c
k
)
∑
k
P
(
Y
=
c
k
)
∏
j
=
1
n
P
(
X
(
j
)
=
x
(
j
)
∣
Y
=
c
k
)
y=f(x)=argmax_{c_k}\frac{P(Y=c_k)\prod_{j=1}^nP(X^{(j)}=x^{(j)}|Y=c_k)}{\sum_kP(Y=c_k)\prod_{j=1}^nP(X^{(j)}=x^{(j)}|Y=c_k)}
y=f(x)=argmaxck∑kP(Y=ck)∏j=1nP(X(j)=x(j)∣Y=ck)P(Y=ck)∏j=1nP(X(j)=x(j)∣Y=ck)
上式中的分母对所有
c
k
c_k
ck都是相同的,所以比较的时候只比较分母即可。
- 朴素贝叶斯(naive Bayes)法的要求
朴素贝叶斯对条件概率分布作了条件独立性的假设。
P
(
X
=
x
∣
Y
=
c
k
)
=
P
(
X
(
1
)
=
x
(
1
)
,
.
.
.
,
X
(
n
)
=
x
(
n
)
∣
Y
=
c
k
)
=
∏
j
=
1
n
P
(
X
(
j
)
=
x
(
j
)
∣
Y
=
c
k
)
P(X=x|Y=c_k)=P(X^{(1)}=x^{(1)},...,X^{(n)}=x^{(n)}|Y=c_k)\\=\prod_{j=1}^nP(X^{(j)}=x^{(j)}|Y=c_k)
P(X=x∣Y=ck)=P(X(1)=x(1),...,X(n)=x(n)∣Y=ck)=∏j=1nP(X(j)=x(j)∣Y=ck)
- 分类算法列一下有多少种?应用场景
没有最好的分类器,只有最合适的分类器。
感知机、决策树、逻辑回归、贝叶斯分类器、支持向量机、K近邻、随机森林
决策树应用场景:因为能够生成清晰的树状图,当希望更好的理解数据时可使用决策树
逻辑回归应用场景:需要具有概率意义的输出,LR的参数代表每个特征对输出的二影响,可解释性强。LR的计算量小,存储占用低,可以在大数据场景中使用。LR虽然效果一般,但模型清晰。
贝叶斯分类器应用场景:需要一个比较容易解释,而且不同维度之间相关性较小时,可以高效处理高维数据,但结果不能保证
支持向量机应用场景:在很多数据上表现优秀,可以尝试。
KNN应用场景:需要一个特别容易解释的模型的时候
随机森林应用场景:一种集成方法,能够解决大规模数据集的问题,还可以给变量重要性进行排序,刚拿到数据集不知道用什么方法的时候,也可尝试随机森林。
- 生成模型和判别模型基本形式,有哪些?
典型的生成模型有:朴素贝叶斯法和隐马尔可夫模型。
生成模型:
P
(
Y
∣
X
)
=
P
(
X
,
Y
)
P
(
X
)
P(Y|X)=\frac{P(X,Y)}{P(X)}
P(Y∣X)=P(X)P(X,Y)
典型的判别模型有:k近邻法、感知机、决策树、逻辑斯蒂回归模型、最大熵模型、支持向量机、提升方法和条件随机场。
判别模型表示给定输入的
X
X
X产生输出
Y
Y
Y的生成关系。
本文参考文献:
机器学习算法的应用场景