八股(一天更新一点)

决策树

分类回归都可以。返回的是类别/数据。
优点:可解释性、可以处理数值类和类别类的特征
缺点:不稳定(鲁棒性差)、结点太多导致过拟合、构建树是顺序化的过程,不好被并行。

随机森林

分别独立训练多个决策树,提升稳定性。
随机森林的随机来自于哪里?——①bagging:每次训练,有放回地随机采样②随机采样特征列

GBDT(Gradient Boosting Decision Trees)

顺序训练多棵树,这些树合成一个大的模型。只能用作回归。

假设之前 t − 1 t - 1 t1棵树训练的结果加起来是 F t ( x ) F_t(x) Ft(x)
在残差数据上训练树 f t f_t ft:特征值不变,原预测值要减去 F t ( x ) F_t(x) Ft(x)

如果采用均方误差,相当于每一次训练一个树去拟合我梯度的负数。(这个巨好理解!就是平方差求导的负数)

缺点:①弱学习器之间存在依赖关系,难以并行训练数据 ②高维稀疏数据上表现一般

Xgboost

改进/特点为如下:
①GBDT损失函数只对误差部分做负梯度(一阶泰勒)展开;Xgboost对损失函数进行了二阶泰勒展开,同时使用一阶二阶导数。
②损失函数添加正则化项,限制了【叶子结点数,叶子结点权值大小】
③分裂方式不是MSE,而是最大化损失函数【和一阶导和二阶导有关】的差值:遍历所有特征,寻找使损失函数前后相差最大的分裂方式。
④缺失值:GBDT没有专门针对缺失值进行处理;Xgboost枚举所有缺失值在当前节点是进入左子树,还是进入右子树更优来决定缺失值默认的方向
⑤GBDT使用CART作为基分类器;XGB支持多种类型的基分类器,如线性分类器
⑥xgboost借鉴了随机森林的做法,支持列抽样(即每次的输入特征不是全部特征),能降低过拟合,减少计算。GBDT在每轮迭代时使用全部的数据;XGB则采用了类似RF的策略,支持对数据进行采样。
⑦并行化处理:Xgboost在训练之前,对每个特征内部进行了排序,找出候选切割点,保存为block结构,减小计算量。在进行节点的分裂时,需要选选择增益最大的那个特征去分裂,那么各个特征的增益计算就可以多线程进行。

聚类

K均值

初始化K个中心(随机选K个样本初始化),距离是平方差,然后划分——不断迭代。
确定K的方法:
①自己感受一下(?)
②手肘法
k小于真实聚类数时,由于k的增大会大幅增加每个簇的聚合程度,故SSE的下降幅度会很大。
k到达真实聚类数时,再增加k所得到的聚合程度回报会迅速变小,所以SSE的下降幅度会骤减。
SSE和k的关系图是一个手肘的形状,而这个肘部对应的k值就是数据的真实聚类数。
③轮廓系数法
选择使系数较大所对应的k值。
簇内不相似度 簇间不相似度…求一个系数,分母是max(a(i),min(bi)),分子是两个相减。

LVQ(学习向量量化算法)

假设数据样本带有类别标记,学习过程利用样本的这些监督信息来辅助聚类。
初始化K个原型向量。每一轮选代随机选取一个有标记训练样本,找出与其距离最近的原型向量,根据两者的类别标记是否一致来对原型向量进行相应的更新。

高斯混合聚类

采用概率模型来表达聚类原型。
高斯混合聚类的基本假设是:样本的生成过程是由高斯混合分布给出的,聚类问题转化为判断样本主要是由哪个高斯分布产生的。
最大化极大似然常采用EM算法。

DBSCAN(密度聚类)

假设聚类结构能通过样本分布的紧密程度确定。
任选数据集中的一个核心对象为"种子" (seed) ,再由此出发确定相应的聚类簇,算法先根据给定的邻域参数找出所有核心对象,然后以任一核心对象为出发点,找出由其密度可达的样本生成聚类簇,直到所有核心对象均被访问过为止。

线性回归

y = < w , x > + b y = <w,x> + b y=<w,x>+b 来学习w和b
损失函数:均方误差

如何用线性回归做分类?——假设有m个类别,类别用长度为m的one-hot向量表示。设计m组w、m组b,做m次 o i = w i x + b i ( i = 1 , . . . , m ) o_i = w_ix+b_i(i = 1, ...,m) oi=wix+bi(i=1,...,m)
损失函数为 1 m ∣ o − y ∣ 2 2 \frac {1}{m} |o - y|^2_2 m1oy22
问题是过分关心别的类。
更好的办法是将其j结果变为概率进softmax,然后使用交叉熵。
∑ i − y i l o g y ^ i \sum_{i}-y_ilog \hat y_i iyilogy^i

梯度下降

反向传播去看王木头好吧…他好牛

SGD(小批量随机梯度下降)

在一个mini-batch中计算梯度,迭代更新参数

g t = ∇ θ t − 1 f ( θ t − 1 ) g_t=\nabla_{\theta_{t-1}}{f(\theta_{t-1})} gt=θt1f(θt1)
Δ θ t = − η ∗ g t \Delta{\theta_t}=-\eta*g_t Δθt=ηgt

缺点:学习率选择困难,容易到达局部最优
(学习率太大可能会震荡)

动量

m t = μ ∗ m t − 1 + g t m_t=\mu*m_{t-1}+g_t mt=μmt1+gt
Δ θ t = − η ∗ m t \Delta{\theta_t}=-\eta*m_t Δθt=ηmt

μ \mu μ是动量因子。特点:该加速加速该减小减小。更新幅度增大、防止震荡,跳出陷阱。

Adagrad

约束学习率
n t = n t − 1 + g t 2 n_t=n_{t-1}+g_t^2 nt=nt1+gt2
Δ θ t = − η n t + ϵ ∗ g t \Delta{\theta_t}=-\frac{\eta}{\sqrt{n_t+\epsilon}}*g_t Δθt=nt+ϵ ηgt
此处,对 g t g_t gt从1到t进行一个递推形成一个约束项regularizer, − 1 ∑ r = 1 t ( g r ) 2 + ϵ -\frac{1}{\sqrt{\sum_{r=1}^t(g_r)^2+\epsilon}} r=1t(gr)2+ϵ 1 ϵ \epsilon ϵ用来保证分母非0。

前期g_t较小的时候, regularizer较大,能够放大梯度
后期g_t较大的时候,regularizer较小,能够约束梯度
适合处理稀疏梯度

Adadelta

Adagrad会累加之前所有的梯度平方,而Adadelta只累加固定大小的项,并且也不直接存储这些项,仅仅是近似计算对应的平均值。不用依赖全局学习率。

RMSprop

趋于上述两者之间。累加梯度平方和的平均数。再求根变为均方根。

Adam

带有动量项的RMSprop,它利用梯度的一阶矩估计和二阶矩估计动态调整每个参数的学习率。Adam的优点主要在于经过偏置校正后,每一次迭代学习率都有个确定范围,使得参数比较平稳。

m t = μ ∗ m t − 1 + ( 1 − μ ) ∗ g t n t = ν ∗ n t − 1 + ( 1 − ν ) ∗ g t 2 m t ^ = m t 1 − μ t n t ^ = n t 1 − ν t Δ θ t = − m t ^ n t ^ + ϵ ∗ η m_t=\mu*m_{t-1}+(1-\mu)*g_t \\ n_t=\nu*n_{t-1}+(1-\nu)*g_t^2 \\ \hat{m_t}=\frac{m_t}{1-\mu^t} \\ \hat{n_t}=\frac{n_t}{1-\nu^t} \\ \Delta{\theta_t}=-\frac{\hat{m_t}}{\sqrt{\hat{n_t}}+\epsilon}*\eta mt=μmt1+(1μ)gtnt=νnt1+(1ν)gt2mt^=1μtmtnt^=1νtntΔθt=nt^ +ϵmt^η

①估计一阶矩、二阶矩 ②校正,这样可以近似为对期望的无偏估计

神经网络

隐藏层的作用:
升维的隐藏层:让模型变得更复杂,把数据映射到高维空间更容易分类。
降维的隐藏层:对上一层进行抽象。
低层次的隐藏层作用:让底层的特征更容易被复用(更细粒度)(拿了MNIST手写数据集做例子)
隐藏层代表可以对数据进行抽象的程度,越深抽象程度越高
反向传播,其实可以看成w是自变量,因变量是loss的函数图。梯度指向上升最快的方向,所以w要往梯度反方向走。

损失函数

最小二乘法

m i n ∑ i = 1 n 1 2 ( x i − y i ) 2 min \sum_{i = 1}^n\frac{1}{2}(x_i -y_i)^2 mini=1n21(xiyi)2

为什么使用平方项而不使用绝对值?——绝对值在一些点是不可导的
缺点——在梯度下降的时候很麻烦

极大似然估计法

极大似然:概率的反向运用。知道结果反推最大可能出现的概率模型。
有时候假设概率模型是高斯分布?
妈的结果展开之后竟然变成了交叉熵…

交叉熵
Focal Loss

Focal Loss主要关注难易样本的不平衡问题,可根据对高置信度§样本进行降权。

GMD loss

既不要关注那些容易学的样本,也不要关注那些离群点特别难分的样本。
定义了梯度密度,表示单位梯度模长g部分的样本个数,作为损失函数的分母。

RNN LSTM

知乎上的面试题
比较好看的描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值