常见机器学习问题解答(二)

  1. 为什么朴素贝叶斯如此朴素:
      因为朴素贝叶斯认为样本中每个特征互相之间都是独立且同样重要的,而不是相关的。显然这与现实是不符合的,所以说它朴素。
  2. 请大致对比下plsa和LDA(主题模型)的区别:
      pLSA在确定了每篇文章的主题分布和每个主题的词分布后,通过 p ( z ∣ θ d ) p(z|\theta_d) p(zθd)求得主题( θ d \theta_d θd是文章d的主题分布),再根据主题 p ( w ∣ z ) p(w|z) p(wz)求得单词的概率.LDA不同的是,加入了贝叶斯思想,即每个文章的主题分布和每个主题的单词分布不是确定的,而是按一定概率分布的。即文章的主题分布服从狄利克雷分布,某个主题的单词的分布服从狄利克雷分布。这些狄利克雷分布加入了先验知识,所以会更加准确。公式如下 P ( θ d ∣ α → + n → d ) P(\theta_d|\overrightarrow{\alpha}+\overrightarrow n_d) P(θdα +n d) P ( z ∣ γ z → + n → z ) P(z|\overrightarrow{\gamma_z}+\overrightarrow n_z) P(zγz +n z),再根据 θ d \theta_d θd z z z通过 p ( z ∣ θ d ) p(z|\theta_d) p(zθd)求得主题( θ d \theta_d θd是文章d的主题分布),再根据主题 p ( w ∣ z ) p(w|z) p(wz)求得单词的概率。
  3. 说说EM算法:
      EM算法是用来求解隐变量的算法,其是根据最大似然的思想。公式推导如下:(这里 x x x是模型参数 θ \theta θ是隐变量, y y y是可观测变量)
    首先是要最大化的对数似然函数: o b j = ∑ i n l o g P ( y i ∣ x ) obj=\sum_i^nlogP(y_i|x) obj=inlogP(yix)
    存在隐变量 θ \theta θ,则 o b j = ∑ i n l o g ∑ j m P ( y i , θ j ∣ x ) obj=\sum_i^nlog\sum_j^mP(y_i,\theta_j|x) obj=inlogjmP(yi,θjx)
    由于对数内的 ∑ \sum 对不方便求导,所以我们要想办法。
    o b j = ∑ i n l o g ∑ j m p ( θ j ( k + 1 ) ∣ x ) p ( y i , θ j ∣ x ) p ( θ j ( k + 1 ) ∣ x ) obj=\sum_i^nlog\sum_j^mp(\theta^{(k+1)}_j|x)\frac{p(y_i,\theta_j|x)}{p(\theta_j^{(k+1)}|x)} obj=inlogjmp(θj(k+1)x)p(θj(k+1)x)p(yi,θjx)
    由于 f ( x ) = l o g x f(x)=logx f(x)=logx这个函数是个凹函数,所以根据jesen不等式。 E ( f ( x ) ) &lt; f ( E ( x ) ) E(f(x))&lt;f(E(x)) E(f(x))<f(E(x)),在上式中 f ( E ( x ) ) f(E(x)) f(E(x))中的 E ( x ) = ∑ j m p ( θ j ( k + 1 ) ∣ x ) p ( y i , θ j ∣ x ) p ( θ j ( k + 1 ) ∣ x ) E(x)=\sum_j^mp(\theta^{(k+1)}_j|x)\frac{p(y_i,\theta_j|x)}{p(\theta_j^{(k+1)}|x)} E(x)=jmp(θj(k+1)x)p(θj(k+1)x)p(yi,θjx),则 o b j &gt; = ∑ i n ∑ j m p ( θ j ( k + 1 ) ∣ x ) l o g p ( y i , θ j ∣ x ) p ( θ j ( k + 1 ) ∣ x ) obj&gt;=\sum_i^n\sum_j^mp(\theta_j^{(k+1)}|x)log\frac{p(y_i,\theta_j|x)}{p(\theta_j^{(k+1)}|x)} obj>=injmp(θj(k+1)x)logp(θj(k+1)x)p(yi,θjx),即右式可以作为下界去逼近obj。如果要下界能去逼近obj必须找到一个它们相等的点,从这点去梯度上升,从而逼近obj。根据琴生不等式,在 E ( f ( x ) ) &lt; = f ( E ( x ) ) E(f(x))&lt;=f(E(x)) E(f(x))<=f(E(x))中x为常数时等式成立。即 p ( y i , θ j ∣ x ) p ( θ j ( k + 1 ) ∣ x ) = c = p ( θ j ∣ y i , x ) p ( θ j ( k + 1 ) ) ∣ y i , x ) ∗ p ( y i ∣ x ) \frac{p(y_i,\theta_j|x)}{p(\theta_j^{(k+1)}|x)}=c=\frac{p(\theta_j|y_i,x)}{p(\theta_j^{(k+1))}|y_i,x)}*p(y_i|x) p(θj(k+1)x)p(yi,θjx)=c=p(θj(k+1))yi,x)p(θjyi,x)p(yix),由于 p ( y i ∣ x ) p(y_i|x) p(yix)是常数,所以只需要让 p ( θ j ∣ y i , x ) = p ( θ j ( k + 1 ) ) ∣ y i , x ) p(\theta_j|y_i,x)=p(\theta_j^{(k+1))}|y_i,x) p(θjyi,x)=p(θj(k+1))yi,x),即可使琴生不等式的等式成立。即让 θ j ( k + 1 ) \theta_j^{(k+1)} θj(k+1)等于在x参数和y观察值下的期望.所以EM算法的E步,是将隐变量设为在 x 、 y x、y xy下的期望值。M步就是固定 θ \theta θ后,对 o b j obj obj的下界 ∑ i n ∑ j m p ( θ j ( k + 1 ) ∣ x , y i ) l o g p ( y i , θ j ( k + 1 ) ∣ x ) p ( θ j ( k + 1 ) ∣ x , y i ) \sum_i^n\sum_j^mp(\theta_j^{(k+1)}|x,y_i)log\frac{p(y_i,\theta_j^{(k+1)}|x)}{p(\theta_j^{(k+1)}|x,y_i)} injmp(θj(k+1)x,yi)logp(θj(k+1)x,yi)p(yi,θj(k+1)x) x x x求导取下界的最大值处的 x x x大小。再根据这个x,进行下一轮的E步骤。
  4. KNN中的K怎么选取的:
      首先说一下K对于模型的意义:K越小代表模型的复杂度越高,越容易过拟合。因为K越小代表模型学习的范围越小,如果实际处理的问题中类别要多于设定的K,那么模型只会按照训练时设定的K分类。而K越大,则模型越简单,极端的例子就是K=n,那么模型不用学习任何信息就完成了任务。
      K的选取方法有:
    1.根据经验选择
    2.根据肘下降法选择
  5. 防止过拟合的方法:
      1.收集更多的数据作为数据集,加入噪声,或者上采样
      2.进行特征选择,减少特征数量
      3.采用复杂度低的算法
      4.采用集成算法如bagging
      5.加入正则化项,或增大正则化系数,常用的正则化有L1、L2、dropput、batch normalize
      6.加入测试集,并设置早停。
  6. 机器学习中,为何常常对数据进行归一化:
      因为在依靠数值计算的算法中如KNN,量纲较大的特征会对最后结果造成较大的影响,但实际上这个特征并不一定是重要的。且在需要梯度下降的算法中,量纲的不平衡,会导致每次迭代不能朝着最优点前进,会减缓求解速度读。
  7. 什么是最小二乘法:
      最小二乘法也称最小平方法,它的一维表达式如下: L ( θ ) = ∑ i n ( y i − f ( x i ; θ ) ) 2 L(\theta)=\sum_i^n(y_i-f(x_i;\theta))^2 L(θ)=in(yif(xi;θ))2推广到多维为 L ( θ ) = ∑ i n ∣ ∣ y i − f ( x i ; θ ) ∣ ∣ 2 2 L(\theta)=\sum_i^n||y_i-f(x_i;\theta)||_2^2 L(θ)=inyif(xi;θ)22
  8. 梯度下降法找到的一定是下降最快的方向吗?:
      在局部一定是最优的,但在全局不是,它只能拟合该点所在的一次平面。
  9. 简单说说贝叶斯定理:
      首先定义P(A)为A发生的概率,这是我们在不知道任何具体情况之前的先验知识,被称为A的先验概率。而当B发生后A的概率为P(A|B),这是我们在知道具体情况B发生后再求A发生的概率,所以P(A|B)叫做A的后验概率也叫做条件概率。同理P(B)为B的先验概率(也称作边缘概率,因为可以对P(A,B)对A进行积分,求得P(B)),P(B|A)为B的后验概率,也叫做条件概率。而P(A,B)是AB同时发生的概率,称作联合概率。根据条件概率的公式 p ( A ∣ B ) = p ( A , B ) p ( B ) p(A|B)=\frac{p(A,B)}{p(B)} p(AB)=p(B)p(A,B)
    。可得贝叶斯公式为 p ( A ∣ B ) = p ( B ∣ A ) p ( A ) p ( B ) p(A|B)=\frac{p(B|A)p(A)}{p(B)} p(AB)=p(B)p(BA)p(A)
  10. 怎么理解决策树、xgboost能处理缺失值?而有的模型如svm对缺失值比较敏感:
      决策树是在节点根据某特征上值得不同,划分样本的走向。缺失值也可以作为一种值参与划分。而svm等需要数值计算的算法,需要具体的数值去参与计算,缺失值无法参与计算。
  11. 标准化与归一化、正则化的区别:
      标准化是讲数据转换成标准正态分布,公式如下:
    x = x − u σ x=\frac{x-u}{\sigma} x=σxu
      归一化是将数据压缩到0到1之间,公式如下 x = x − m i n m a x − m i n x=\frac{x-min}{max-min} x=maxminxmin
      标准化每加入一个新数据就需要重新计算,而归一化加入最大值到最小值之间的数据时可以不重新计算。
      正则化是对数据的行进行处理,即对每个样本进行处理,使样本向量为标准向量,方便向量之间进行余弦相似度等比较。
  12. 随机森林如何处理缺失值
      [简书上有一个很好的解释]https://www.jianshu.com/p/a4bf9224d66c
      1.暴力填补
    Python中的na.roughfix包提供简单的缺失值填补策略:对于训练集中处于同一个类别下的数据,如果是类别变量缺失,则用众数补全,如果是连续变量,则用中位数。
      2.相似度矩阵填补
    RF的Python实现中,有一个rfImpute包,可以提供更加高层的缺失值填补。首先先用暴力填补法进行粗粒度填充。然后使用上述填补后的训练集来训练随机森林模型,并统计相似度矩阵(proximity matrix),然后再看之前缺失值的地方,如果是分类变量,则用没有缺失的观测实例的相似度中的权重进行投票;如果是连续性变量,则用相似度矩阵进行加权求均值。
    上述投票方案迭代进行4~6次。
    ~~解释相似度矩阵:~~相似度矩阵就是任意两个观测实例间的相似度矩阵,原理是如果两个观测实例落在同一棵树的相同节点次数越多,则这两个观测实例的相似度越高。详细来说:
    Proximity 用来衡量两个样本之间的相似性。原理就是如果两个样本落在树的同一个叶子节点的次数越多,则这两个样本的相似度越高。当一棵树生成后,让数据集通过这棵树,落在同一个叶子节点的”样本对(xi,xj)” proximity 值 P(i,j) 加 1 。所有的树生成之后,利用树的数量来归一化 proximity matrix。继而,我们得到缺失值所在样本的权重值,权重值相近的可以用于缺失值的填补参考。
  13. 随机森林评估特征重要度
    https://www.jianshu.com/p/7a876bb876b9
  14. 优化k-means:
      (1)k-means算法的初始点选择对结果影响非常大,我们选取的初始聚类点应该相距较远,但又要排除异常点的影响。所以采用k-means++算法,第一个聚类点随机选择。之后第n个聚类点,根据与前n-1个聚类点的距离选择,距离前n-1个距离点越远。被选中的概率越大。
       (2) K-means与ISODATA:ISODATA的全称是迭代自组织数据分析法。在K-means中,K的值需要预先人为地确定,并且在整个算法过程中无法更改。而当遇到高维度、海量的数据集时,人们往往很难准确地估计出K的大小。ISODATA就是针对这个问题进行了改进,它的思想也很直观:当属于某个类别的样本数过少时把这个类别去除,当属于某个类别的样本数过多、分散程度较大时把这个类别分为两个子类别。
      (3)在计算每个点和各个聚类中心点的距离时,可以用三角定理减少计算量,即两边之和大于第三边 2 D ( x , j 1 ) &lt; D ( j 1 , j 2 ) 2D(x,j_1)&lt;D(j_1,j_2) 2D(x,j1)<D(j1,j2),则 D ( x , j 1 ) &lt; D ( x , j 2 ) D(x,j_1)&lt;D(x,j_2) D(x,j1)<D(x,j2)
  15. 解释对偶的概念
      一个优化问题可以从两个方面考虑,一个是原问题,一个是对偶问题,对偶问题。对偶问题的最优解一般是原问题最优解的上界或者下界。而强对偶问题的最优解就是原问题的最优解。且对偶问题一般是凸优化问题,容易求解。
  16. 如何进行特征选择:
      1.fillter:借助一些数学指标,如相关系数,信息增益等,直接求解特征和标签的关系,再将它们的得分从小到大排序,选择得分高的几个。
      2.wrapper:借助模型学习出的效果进行特征选择,理论上讲所有特征的组合尝试一编比较好,但这个复杂度不是实际任务中能完成的。所以一般采用贪婪算法,即每次从上一轮选出的最优的特征集合 D i D_i Di中,删除其中一个特征,送入模型学习查看效果。最后选出一个删除该特征后效果最后的特征集合作为 D i − 1 D_{i-1} Di1,送入下一轮学习。最后直到删减特征后,效果不再提升为止。
      3.正则化:常见的有L1正则化、L2正则化、dropout、batch normalize。
      4.通过模型选择特征,如用随机森林的两种特征选择方式(一种是用OOB数据,对某个特征上的取值打乱,看打乱前后预测错误率或者最小二乘拟合的变化,即分类问题用信息增益或者gini不纯度,而回归问题用最小二乘拟合但是用随机森林选择特征有两个缺陷1。会删除重要特征,如某个特征单独判断效果不好,但它和其他特征组合之后效果非常好,用随机森林就可能把这个特征删除。2.偏向于类别多的变量),还有xgboost的特征选择方式、LR、svm等方法。
      5.删除方差比较小的特征
  17. 衡量分类器的好坏有哪些指标:
       T P R = T P T P + F N TPR=\frac{TP}{TP+FN} TPR=TP+FNTP
    F P R = F P F P + T N FPR=\frac{FP}{FP+TN} FPR=FP+TNFP
    T N R = T N F P + T N TNR=\frac{TN}{FP+TN} TNR=FP+TNTN
    F N R = F N T P + F N FNR=\frac{FN}{TP+FN} FNR=TP+FNFN
    以TPR为纵轴,FPR为横轴,可以画出ROC曲线,反映分类器的好坏,一般来说一个分类器的ROC曲线包住了另外一个分类器的ROC曲线,则前者的效果更好。更一般的,我们可以用ROC曲线与坐标轴包住的面积,衡量分类器的好坏,被称作AUC。此外还有准确率 p r e c i s i o n = T P T P + F P precision=\frac{TP}{TP+FP} precision=TP+FPTP,回召率 r e c a l l = T P T P + F N recall=\frac{TP}{TP+FN} recall=TP+FNTP,可以画出P-R曲线衡量分类器的优良,更一般的可以用 F β = ( 1 + β 2 ) ∗ P ∗ R β 2 P + R F_\beta=\frac{(1+\beta^2)*P*R}{\beta^2 P+R} Fβ=β2P+R(1+β2)PR衡量分类器的效果好坏。
  18. 数据预处理:
      1.处理缺失值:对于如LR、SVM、神经网络等对缺失值敏感的模型,需要填充缺失值。一般连续值用中位数填充,类别变量用众数填充。而树模型有特殊的处理方式。
      2.处理异常值:对于异常值,要排除在外,影响模型效果。
      3.特征选择:详细见第45问。
      4.离散化,对于连续值可以做离散化,离散化常见的方法有one-hot、label encoding、binary encoding。离散化的好处有,增加线性模型的非线性,和计算速度。在处理问题时我们一般采用海量离散特征+简单模型或少数连续特征加连续模型的模式。
      5.特征选择
  19. 是什么造成梯度消失问题:
      我们设 n e t i k net_i^{k} netik为第k层神经网络第i个神经元的输入值,设 a i k a_i^{k} aik为第K层神经网络第i个神经元的输出值。一般我们要求将损失函数对参数 w i k w_i^k wik进行求导,从而求得 w i j k w_{ij}^k wijk的迭代方向。 ∂ l ∂ w i j k = ∂ n e t j k ∂ w i j k ∗ ∂ l ∂ n e t j k = ∑ z 、 p ∂ n e t j k ∂ w i j k ∗ ∂ n e t z k + 1 ∂ n e t j k ∗ . . . ∂ l ∂ n e t p n \frac{\partial l}{\partial w_{ij}^k}=\frac{\partial net_j^k}{\partial w_{ij}^{k}}*\frac{\partial l}{\partial net_j^k}=\sum_{z、p} \frac{\partial net_j^k}{\partial w_{ij}^{k}}*\frac{\partial net_z^{k+1}}{\partial net_{j}^{k}}*...\frac{\partial l}{\partial net_{p}^{n}} wijkl=wijknetjknetjkl=zpwijknetjknetjknetzk+1...netpnl在这个过程中, ∂ n e t i k + 1 ∂ n e t j k = ∂ a j k ∂ n e t j k ∗ ∂ n e t i k + 1 ∂ a j k = f ′ ( n e t j k ) ∗ w i j \frac{\partial net_i^{k+1}}{\partial net_j^k}=\frac{\partial a^{k}_j}{\partial net_j^k}*\frac{\partial net_i^{k+1}}{\partial a_j^{k}}=f^{&#x27;}(net_j^k)*w_{ij} netjknetik+1=netjkajkajknetik+1=f(netjk)wij,由于 f ′ ( n e t j k ) f^{&#x27;}(net_j^k) f(netjk)小于1,所以随着层数的加深,在计算中会累乘许多小于1对的数,导致梯度趋近于0,造成梯度消失现象。
  20. 到底什么是特征工程:
      https://blog.csdn.net/v_JULY_v/article/details/81319999
  21. 连续值分布不按正态分布,而是有偏态分布怎么办
      首先明白什么是偏态分布,简单来说长尾的一边是右边叫做右偏分布,也叫做正偏分布。正偏分布指的是,其平均值左侧的样本数更多(因为长尾在峰值右侧,所以峰值右侧有很多很大的数,会拉大平均值),正偏分布,其平均值大于中位数大于众数(中位数大于众数是因为这个形状将面积平分的点会大于峰值,又由于平均值左侧的样本数量更多,即左侧面积大于0.5所以平均值大于中位数)。左偏分布(正偏分布)则正好相反。 https://www.jianshu.com/p/a558a3f4b84a
      怎么处理偏态分布,将其变换为正态分布:简单来说可以对右偏分布做一个函数变换,该变换必须单调递增,且梯度越来越小。例如log。而对左偏分布,也可以做函数变换,或者将原数据取负数,并加上一个常数使之大于0,使其变为右偏分布。再用log等函数做处理。 http://www.sohu.com/a/136275242_278472
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值