day2 AI面试刷题
1、为什么一些场景中使用余弦相似度而不是欧式距离?
余弦相似度取值为[-1, 1],而余弦距离取值为1-余弦相似度,为[0, 2]。余弦相似度保持在高维为1,正交时为0,相反时为-1。欧氏距离衡量空间点的直线距离,而余弦相似度衡量点在空间方向上的差异。
参考答案:
假设有
A
A
A 和
B
B
B 两个向量,其余弦相似度定义为
cos
(
A
,
B
)
=
A
⋅
B
∣
∣
A
∣
∣
2
∣
∣
B
∣
∣
2
\cos(A, B)=\frac{A\cdot B}{||A||_2||B||_2}
cos(A,B)=∣∣A∣∣2∣∣B∣∣2A⋅B,即两个向量夹角的余弦。它关注的是向量之间的角度关系,相对差异,而不关心它们的绝对大小;其取值范围在 [-1, 1]之间;两个向量相同时为1,正交时为0,相反时为-1。即在取值范围内,余弦距离值越大,两个向量越接近;余弦距离为向量之间的相似度量提供了一个稳定的指标,无论向量的维度多与少,特征的取值范围大与小。余弦距离的取值范围始终都能保持在[-1, 1]。余弦相似度广泛应用在文本,图像和视频领域。相比之下欧氏距离则受到维度多少,取值范围大小以及可解释性的限制。当特征的取值以及特征向量经过模长归一化之后,余弦距离和欧氏距离又存在以下的单调关系。
∣
∣
A
−
B
∣
∣
2
2
=
2
(
1
−
cos
(
A
,
B
)
)
||A-B||^2_2=\sqrt{2(1-\cos(A,B))}
∣∣A−B∣∣22=2(1−cos(A,B))
其中
∣
∣
A
∣
∣
2
2
=
1
,
∣
∣
B
∣
∣
2
2
=
1
||A||^2_2=1, ||B||^2_2=1
∣∣A∣∣22=1,∣∣B∣∣22=1
2、在模型评估过程中,过拟合和欠拟合具体指什么现象
过拟合现象是指,模型在训练集中的表现过于完美,而导致在测试集中准确率反而降低,效果不好。
欠拟合现象是指,模型本身在训练集上的表现就不太好,可能是模型或者数据集的问题。
参考答案:
过拟合是指模型对于训练数据拟合呈过当的情况,反映到评估指标上,就是模型在训练集上的表现好,但是在测试集和新数据上的表现较差。欠拟合指的是模型在训练和测试时表现都不好。用模型在数据上的偏差和方差指标来表示就是:欠拟合时,偏差较大;而过拟合时,偏差小但方差大。
3、降低过拟合和欠拟合的方法
降低过拟合:
- 增加训练数据
- 减少特征数
- 降低模型复杂度
- 提前结束
解决欠拟合:
- 模型复杂化
- 增加更多的特征,使输入数据有更强的表达能力
- 调整参数和超参数
参考答案:
降低过拟合的方法:
- 特征 - 减少不必要的特征
a. 根据特征的重要性,直接删除稀疏特征
b. 通过收集更多的数据,或者用数据增广的方法,产生更多的训练数据,从而阻止模型学习不相关的特征 - 模型复杂度 - 降低模型复杂度
a. 神经网络,减少网络层数和神经元个数
b. 决策树模型中降低树的深度,进行剪枝 - 正则化 - 加入正则化项并提高正则化项的系数
a. 对复杂模型和系数比较大的模型进行惩罚,使得算法倾向于训练简单的模型。 - 多模型决策
a. 采用 Bagging 或者 Stacking 的集成方法,将多个模型融合起来共同决策,以减少模型预测的 variance。 - 模型训练
a. 训练模型时采用早停策略或采用知识蒸馏方法进行训练。 - 数据目标 - 平滑目标
a. 比如用于分类任务的标签平滑方法,即在One-hot 表示的ground true 标签里面,将值为 1 那一位上的一小部分值减掉,均分到其他值为 0 的位值上。
降低欠拟合的方法:
- 特征 - 添加新特征
比如上下文特征,ID类特征,组合特征等等 - 模型复杂度 - 增加模型复杂度
比如在线性模型中添加高次项
在神经网络模型中增加网络层数或者神经元个数 - 正则化 - 减少正则化项的系数
4、L1和L2正则先验分别服从什么分布
L1是Laplace(拉普拉斯)分布,L2是Gaussian(高斯)分布
Laplace分布公式为:
f
(
x
∣
μ
,
σ
)
=
1
2
σ
exp
(
−
∣
x
−
μ
∣
σ
)
f(x|\mu,\sigma)=\frac{1}{2\sigma}\exp(-\frac{|x-\mu|}{\sigma})
f(x∣μ,σ)=2σ1exp(−σ∣x−μ∣)
Gaussian分布公式为:
f
(
x
∣
μ
,
σ
)
=
1
2
π
σ
exp
(
−
(
x
−
μ
)
2
2
σ
2
)
f(x|\mu,\sigma)=\frac{1}{\sqrt{2}\pi\sigma}\exp(-\frac{(x-\mu)^2}{2\sigma^2})
f(x∣μ,σ)=2πσ1exp(−2σ2(x−μ)2)
接下来从最大后验概率的角度进行推导和分析。在机器学习建模中,我们知道了
X
X
X 和
y
y
y 以后,需要对参数进行建模。那么后验概率表达式如下:
P
=
log
(
P
(
y
∣
X
,
w
)
⋅
P
(
w
)
)
=
l
o
g
(
P
(
y
∣
X
,
w
)
)
+
l
o
g
(
P
(
w
)
)
P=\log(P(y|X,w)\cdot P(w))=log(P(y|X, w)) + log(P(w))
P=log(P(y∣X,w)⋅P(w))=log(P(y∣X,w))+log(P(w))
可以看出来后验概率函数是在似然函数的基础上增加了
l
o
g
(
P
(
w
)
)
log(P(w))
log(P(w)),
P
(
w
)
P(w)
P(w) 的意义是对权重系数
w
w
w 的概率分布的先验假设,在收集到训练样本
X
,
y
X, y
X,y后,则可根据
w
w
w 在
X
,
y
X, y
X,y下的后验概率对
w
w
w 进行修正,从而做出对
w
w
w 的更好地估计。若假设的
w
w
w 先验分布为 0 均值的高斯分布,即:
f
(
w
)
=
1
2
π
σ
exp
(
−
w
2
2
σ
2
)
f(w)=\frac{1}{\sqrt{2}\pi\sigma}\exp(-\frac{w^2}{2\sigma^2})
f(w)=2πσ1exp(−2σ2w2)
则有:
log
(
P
(
w
)
)
=
log
(
∏
j
P
(
w
j
)
)
=
log
(
∑
j
[
1
2
π
σ
exp
(
−
w
j
2
2
σ
2
)
]
)
=
−
1
2
σ
2
∑
j
w
j
2
+
C
\begin{aligned} \log(P(w)) = \log(\prod_jP(w_j))&=\log(\sum_j[\frac{1}{\sqrt{2}\pi\sigma}\exp(-\frac{w^2_j}{2\sigma^2})]) \\ &=-\frac{1}{2\sigma^2}\sum_jw_j^2+C \end{aligned}
log(P(w))=log(j∏P(wj))=log(j∑[2πσ1exp(−2σ2wj2)])=−2σ21j∑wj2+C
可以看到,在高斯分布下的效果等价于在代价函数中增加 L 2 L2 L2 正则项。
若假设服从均值为0,参数为
σ
\sigma
σ的拉普拉斯分布,即:
f
(
w
j
)
=
1
2
σ
exp
(
−
∣
w
∣
σ
)
f(w_j)=\frac{1}{2\sigma}\exp(-\frac{|w_|}{\sigma})
f(wj)=2σ1exp(−σ∣w∣)
则有:
l
o
g
(
P
(
w
)
)
=
l
o
g
(
∏
j
P
(
w
j
)
)
=
log
(
∑
j
[
1
2
σ
exp
(
−
∣
w
j
∣
σ
)
]
)
=
−
1
σ
∑
j
∣
w
j
∣
+
C
\begin{aligned} log(P(w))&=log(\prod_jP(w_j))&=\log(\sum_j[\frac{1}{2\sigma}\exp(-\frac{|w_j|}{\sigma})]) \\ &=-\frac{1}{\sigma}\sum_j|w_j|+C \end{aligned}
log(P(w))=log(j∏P(wj))=−σ1j∑∣wj∣+C=log(j∑[2σ1exp(−σ∣wj∣)])
可以看到,在拉普拉斯分布下的效果等价于在代价函数中增加
L
1
L1
L1 正则项。
5、树形结构为什么不需要归一化?
树形结构机器学习算法模型一般是概率模型,与样本具体数值无关,不需要进行梯度下降,只需要各个特征及其不同类别的值的占比来计算信息熵、信息增益等值就行。
参考答案:
决策树的学习过程本质上是选择合适的特征,分裂并构建树节点的过程,而分裂节点的标准是由树构建前后的目标增益(比如信息增益和信息增益率)决定的。这些指标与特征之间的数值范围差异并无关系。
修改时间:
2022.1.11