AI算法岗面试八股面经【超全整理】
均方误差(Mean Square Error,MSE)(二次损失,L2损失,L2 Loss)
MSE是目标变量与预测值之间距离的平方和
M
S
E
=
1
N
∑
i
=
1
N
(
y
i
−
y
i
p
)
2
MSE=\frac {1}{N}\sum _{i=1}^{N} {(y_i-y_i^p)}^2
MSE=N1i=1∑N(yi−yip)2
平均绝对误差(Mean Absolute Error,MAE)(L1损失,L1 Loss)
MAE是目标值与预测值之间的绝对差的总和
M
A
E
=
1
N
∑
i
=
1
N
∣
y
i
−
y
i
p
∣
MAE=\frac {1}{N}\sum _{i=1}^{N} |y_i-y_i^p|
MAE=N1i=1∑N∣yi−yip∣
MSE VS MAE
最小二乘法和MSE
二分类交叉熵损失
L
=
1
N
∑
i
−
[
y
i
⋅
log
(
p
i
)
+
(
1
−
y
i
)
⋅
log
(
1
−
p
i
)
]
L=\frac{1}{N}\sum _{i}-[y_i \cdot \log (p_i)+(1-y_i)\cdot \log (1-p_i)]
L=N1i∑−[yi⋅log(pi)+(1−yi)⋅log(1−pi)]
交叉熵刻画的是两个概率分布之间的距离。交叉熵越小,两个概率分布越接近。
多分类交叉熵损失
L
=
−
1
N
∑
i
∑
c
=
1
M
y
i
c
⋅
log
(
p
i
c
)
L=-\frac{1}{N}\sum_{i}\sum_{c=1}^{M}y_{ic}\cdot \log (p_{ic})
L=−N1i∑c=1∑Myic⋅log(pic)
二分类为什么用交叉熵损失而不用MSE损失
MSE无差别关注全部类别预测概率和真实概率的差;交叉熵关注的是正确类别的预测概率。
最大似然估计和二分类交叉熵
在二分类问题中,将映射函数的输出记为Y,可以使分类问题中的标签0和1,采样结果为
(
X
i
,
Y
i
)
{(X_i,Y_i)}
(Xi,Yi),当
Y
i
=
1
Y_i=1
Yi=1时似然函数为
f
(
X
i
,
θ
)
f(X_i,\theta)
f(Xi,θ),当
Y
i
=
0
Y_i=0
Yi=0时似然函数为
1
−
f
(
X
i
,
θ
)
1-f(X_i,\theta)
1−f(Xi,θ),此时将似然函数写成如下形式:
L
θ
=
∏
i
f
(
X
i
,
θ
)
Y
i
(
1
−
f
(
X
i
,
θ
)
)
1
−
Y
i
L_\theta=\prod_{i} f{(X_i,\theta)}^{Y_i}{(1-f(X_i,\theta))^{1-Y_i}}
Lθ=i∏f(Xi,θ)Yi(1−f(Xi,θ))1−Yi
最大似然估计为:
θ
^
=
arg
max
θ
∏
i
f
(
X
i
,
θ
)
Y
i
(
1
−
f
(
X
i
,
θ
)
)
1
−
Y
i
\widehat{\theta}=\arg\max_{\theta} \prod_{i} f{(X_i,\theta)}^{Y_i}{(1-f(X_i,\theta))^{1-Y_i}}
θ
=argθmaxi∏f(Xi,θ)Yi(1−f(Xi,θ))1−Yi
一般求解最大似然估计问题,都会取对数将连乘转换为连加,并且由此可以推导出二分类的交叉熵损失函数,由于
L
θ
∝
log
L
θ
L_{\theta}\propto \log{L_{\theta}}
Lθ∝logLθ
θ
^
=
arg
max
θ
log
L
θ
=
arg
max
θ
∑
i
Y
i
log
f
(
X
i
,
θ
)
+
(
1
−
Y
i
)
log
(
1
−
f
(
X
i
,
θ
)
)
=
arg
max
θ
∑
i
Y
i
log
Y
i
^
+
(
1
−
Y
i
)
log
(
1
−
Y
i
^
)
\widehat{\theta}=\arg\max_{\theta}\log{L_{\theta}}=\arg\max_{\theta} \sum_{i} Y_i\log{f(X_i,\theta)}+(1-Y_i)\log{(1-f(X_i,\theta))}\\=\arg\max_{\theta} \sum_{i} Y_i\log{\hat{Y_i}}+(1-Y_i)\log{(1-\hat{Y_i})}
θ
=argθmaxlogLθ=argθmaxi∑Yilogf(Xi,θ)+(1−Yi)log(1−f(Xi,θ))=argθmaxi∑YilogYi^+(1−Yi)log(1−Yi^)
最优化问题通常求最小值,加上负号就得到了二分类的交叉熵损失函数:
B
C
E
L
o
s
s
=
−
∑
i
Y
i
log
Y
i
^
+
(
1
−
Y
i
)
log
(
1
−
Y
i
^
)
BCELoss=-\sum_{i} Y_i\log{\hat{Y_i}}+(1-Y_i)\log{(1-\hat{Y_i})}
BCELoss=−i∑YilogYi^+(1−Yi)log(1−Yi^)
PCA的主要思想是将n维特征映射到k维上,这k维是全新的正交特征,也被称为主成分,是在原有n维特征的基础上重新构造出来的k维特征。
输入:数据集
X
=
x
1
,
x
2
,
x
3
,
…
,
x
n
X={x_1,x_2,x_3,\dots ,x_n}
X=x1,x2,x3,…,xn,需要降到k维。
1、基于特征值分解协方差矩阵实现PCA
2、基于SCD分解协方差矩阵实现PCA
考虑正例很少,负例很多的解决方法:
目标是从原始特征集中选择最相关、最有用的特征,以提高模型性能和泛化能力。常用特征选择方法:
1、过滤式
独立于学习算法,据特征的统计属性对特征评估和排序。包括相关系数、卡方检验、信息增益、互信息法等。过滤式方法计算快速、简单,适用于高维数据,但可能忽略特征之间的相互关系。
2、嵌入式(Embedding)
特征选择与学习算法的训练过程结合,特征选择作为学习算法的一部分。在学习算法中直接考虑特征的重要性,通过正则化、惩罚项或决策树剪枝等方式选择特征。嵌入式方法包括 L1正则化、决策树的特征重要性、正则化的线性模型等。嵌入式方法可以在模型训练过程中自
动选择特征,减少了特征选择的额外计算开销。
3、包裹式(Wrapper)
使用机器学习模型评估特征的重要性。在特征子集上进行交叉验证,选择性能最好的特征子集进行特征选择。基于树模型的方法(如决策树和随机森林)可以评估特征的重要性。树模型通过计算特征在树中的分裂次数和平均分裂增益衡量特征对模型的贡献。它直接使用最终学习算法对每个特征子集进行评估,可以更好地捕捉特征之间的相互作用。包裹式方法包括递归特征消或和遗传算法等。包裹式方法计算开销大,耗时长,适用于小规模数据和特定问题。
Logistics Regression 和 Linear Regression(线性回归)联系和区别
是利用数据领域的相关知识来创建能够使机器学习算法达到最佳性能的特征的过程。
简而言之,就是把一个原始数据转变为特征的过程,这些特征可以很好地描述这些数据,并且模型性能达到最优。
工作流程

算法流程:
主要包括两个部分:Gradient Boosting 和 Decision Tree
1、Decision Tree:CART回归树
因为回归树的标签是连续的,因此基尼系数、熵这种概率评估不适合作为评估指标,所以考虑使用均方误差作为特征划分的好坏,将划分后每个节点所有样本的均方误差之和与之前没划分的节点的均方误差作差来代替基尼系数。
算法流程:
选择最优切分特征j和切分点s
R
1
(
j
,
s
)
=
{
x
∣
x
(
j
)
≤
s
}
R
2
(
j
,
s
)
=
{
x
∣
x
(
j
)
>
s
}
R_1(j,s)=\{x|x^{(j)}\leq s\} \quad R_2(j,s)=\{x|x^{(j)}> s\}
R1(j,s)={x∣x(j)≤s}R2(j,s)={x∣x(j)>s}
c
m
=
1
N
m
∑
x
i
∈
R
m
(
j
,
s
)
y
i
x
∈
R
m
,
m
=
1
,
2
c_m = \frac{1}{N_m}\sum_{x_i \in R_m(j,s)}y_i \qquad x \in R_m,m=1,2
cm=Nm1xi∈Rm(j,s)∑yix∈Rm,m=1,2
min
j
,
s
[
min
c
1
∑
x
i
∈
R
1
(
j
,
s
)
(
y
i
−
c
1
)
2
+
∑
x
i
∈
R
2
(
j
,
s
)
(
y
i
−
c
2
)
2
]
\min_{j,s}[\min_{c_1}\sum_{x_i \in R_1(j,s)}{(y_i-c_1)}^2+\sum_{x_i \in R_2(j,s)}{(y_i-c_2)}^2]
j,smin[c1minxi∈R1(j,s)∑(yi−c1)2+xi∈R2(j,s)∑(yi−c2)2]
用选定的对 ( j , s ) (j,s) (j,s)划分区域并决定相应的输出值
继续对两个子区域调用步骤1、2直至满足停止条件
将输入空间划分为M个区域, R 1 , R 2 , R 3 , … , R M R_1,R_2,R_3,\dots ,R_M R1,R2,R3,…,RM,生成决策树
为什么不用CART分类树?
2、Gradient Boosting:拟合负残差
基于残差的训练
每一个后续的模型都会去把前一个模型没有拟合好的残差重新拟合一下。用下一个弱分类器去拟合。当前残差(真实值-当前预测值),之后所有弱分类器的结果相加等于预测值。
为何Gradient Boosting可以用负梯度近似残差
当损失函数选用 MSE 时,负梯度<==>残差
假使用 MSE 做损失函数:
l
(
y
i
,
y
i
)
=
1
2
(
y
i
−
y
i
)
2
l(y_i,y^i)=\frac{1}{2}{(y_i-y^i)}^2
l(yi,yi)=21(yi−yi)2
它的负梯度计算公式为:
−
[
∂
l
(
y
i
,
y
i
)
∂
y
i
]
=
(
y
i
,
y
i
)
-[\frac{\partial l(y_i, y^i)}{\partial y^i}]=(y_i,y^i)
−[∂yi∂l(yi,yi)]=(yi,yi)
1、用途不同
2、损失函数不同
3、从正则的角度
4、特征组合
1、线性模型可以用曲线拟合样本,但是分类的决策边界一定是直线,例如LR。
2、看乘法式子中自变量x前的系数w,如果w只影响一个人,则为线性模型
例如:
y
=
1
1
+
e
w
0
+
w
1
x
1
+
w
2
x
2
y=\frac{1}{1+e^{w_0+w_1x_1+w_2x_2}}
y=1+ew0+w1x1+w2x21为线性模型
如果自变量被两个及以上的参数影响,则为非线性
例如:
y
=
1
1
+
w
3
∗
e
w
0
+
w
1
x
1
+
w
2
x
2
y=\frac{1}{1+w_3*e^{w_0+w_1x_1+w_2x_2}}
y=1+w3∗ew0+w1x1+w2x21
f
(
x
)
=
s
i
g
n
(
w
∗
x
+
b
)
s
i
g
n
(
x
)
=
{
1
x >=0
1
x<0
f(x)=sign(w*x+b)\quad sign(x)=
感知机&LR
1、激活函数不同
2、输出类型不同
3、损失函数不同

1、冒泡(交换)
比较相邻元素,如果第一个比第二个大,就交换它们
2、选择
在未排序序列中找到最小(大)元素,存放在排序序列的起始位置
3、插入
对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入
4、快速(快速)
5、希尔(插入)
6、归并
7、堆排序
将待排序序列构造成一个大顶堆,此时整个序列的最大值就是堆顶的根节点。将其与末尾元素进行交换,此时末尾就为最大值。然后将剩余n-1个元素重新构造成一个堆,这样会得到n个元素的次小值,如此反复执行,使能得到一个有序序列了。
1、协同过滤: 分析用户的兴趣和行为,利用共同行为习惯的群体有相似喜好的原则,推荐用户感兴趣的信息
2、基于内容过滤推荐:核心是衡量出两个物品的相似度
首先对物品或内容的特征作出描述,发现其相关性,然后基于用户以往的喜好记录,推荐给用户相似的物品
3、组合推荐
如果能将用户A的原始特征转变为一种代表用户A喜好的特征向量,将电影1的原始特征转变为一种代表电影1特性的特征向量,那么,我们计算两个向量的相似度,就可以代表用户A对电影1的喜欢程度。