机器学习知识点总结
深度学习的经典ml对比
svm和神经网络相爱相杀,深度学习没出来之前,svm因为他的核函数一直占据上风,现在深度学习出来了,神经网络又占据上风了。
deep learning的适应性强,易于转换,更容易适应不同领域和应用,现在又有了迁移学习。
不需要特征工程(要数据集深度探索性数据分析,然后还要数据降维,选择最佳共呢个以传递给ML算法)深度学习只要传数据就行,消除了具有挑战性的特征工程阶段。
经典ml:对小数据更好。财务和计算都便宜。
更容易理解。调整超参数并更改模型设计更简单,深度学习不能完全了解深层网络的内部,缺乏理论依据,超参数设计是个挑战。
1、数据清洗、数据平滑主要操作
去除重复值,填补遗漏数据,消除异常数据,平滑噪声数据,纠正不一致数据,去掉数据中的噪音。
数据平滑(预处理的核心步骤):去除数据中的噪声。可以使分类器的学习更加准确。有一些函数可以对数据处理,hanning窗(卷积绘图)。加法平移:每一次情况出现后,次数加一,假设每个二元语法出现的次数比实际出现的次数多一次。
如果缺失率高,看一下重要性,可以删除属性,或者插补法,建模法。
2.activation function**函数
解决nonlinear问题,多层要考虑梯度爆炸消失的问题,cnn常用relu,rnn常用relu,tanh。
3.overfitting
增加data
正规化regularization,将cost考虑进去
nn可以用dropout,忽略一些神经元,减少依赖。
4. 牛顿法 & 梯度下降法:
梯度下降法是最早最简单最常用的优化方法,实现简单,目标为凸函数,解是全局最优解,通常不保证是全局最优。最速下降法。越接近目标值,步长越小,前进越慢。
调优:算法的步长选择(迭代太快或太慢),初始值的选择(选择不同可能是局部),归一化(特征的取值范围不同,导致迭代慢,让特征的新期望为0,方差为1,迭代次数大大加快。
牛顿法:为了求解函数值为0的时候变量的取值问题。GD的目的是求解目标函数极小值,而牛顿法则变相的通过求解目标函数一阶导为0的参数值,进而求得目标函数最小值。要求计算目标函数的二阶导数(hessian海森 matrix),在高维特征情形下这个矩阵非常巨大,计算和存储都成问题。牛顿法二阶收敛,收敛速度快,因为海森矩阵的逆在迭代中不断减少,起到逐步缩小步长的效果。但每一步都要计算hessian的逆矩阵,计算比较复杂。
牛顿法每一步都不仅考虑梯度是否大,还考虑走了一步后是否变得更大,看的更长远一点。用二次曲面去拟合当前所处的位置的局部曲面,二次曲面的拟合会比平面更好。
5、optimizer详细说一下随机梯度下降randomGD和批量梯度下降
BGD批量,每次计算整个训练集的梯度,凸函数全局最优,别的也能逼近,速度较慢。
SGD每次仅计算某个样本的梯度。优化速度快,也可以跳出局部最优。
minibatchSGD,最常用,每次梯度下降使用一个小批量样本,梯度计算比单样本更加稳定。
SGD随机梯度下降,每次用批量数据,每一次迭代计算数据集合的mini-batch梯度,然后ui参数进行更新。 Momentum参考了动量,前几次梯度也会参加计算,但是前几轮的梯度叠加在当前计算中会有一定的衰减。adagard使训练自动变更学习速率。Adam利用梯度的一阶矩估计和二阶矩估计动态调整学习率。
6、线性回归多变量求解的过程,为什么这样求解?这样求解为什么是最优解?
可以多变量的梯度下降。单变量的线性回归得到的是一个线性方程,多变量的线性回归得到的是
7、怎么优化梯度下降过程,主要是速度优化?
8、自适应梯度优化是什么样子?
如momenton
AdaGrad,采用一个串口范围内的梯度平方之和。
Adam:为每个参数提供自适应学习法。
自适应优化算法结果未必如SGD
9、拟牛顿法
牛顿法是在复数域和实数域近似求解方程的方法,用f(x)的泰勒级数的前几项来寻找根,收敛速度很快。
拟牛顿法是为了改善每次解hessian矩阵的逆矩阵的缺陷,使用正定矩阵来近似hessian矩阵的逆,从而简化了运算的复杂度。
10、学习率过大会出现什么问题,怎么解决
过大容易算法不收敛,learning rate过小又收敛太慢。具体问题具体分析。
11、最大似然估计和贝叶斯估计的联系和区别
最大估计
12、如果我想预测的结果是一个置信区间你打算怎么建模型(这个是在最前面的问题)
13、一阶导和二阶导分别表示什么,能说一下意义吗?
自变量的变化率,变化率的变化率,一阶导----切线斜率,二阶导-----凹凸
14.LR和线性回归的区别与联系
1、LR和SVM都可以处理分类问题,且一般都用于处理线性二分类问题(在改进的情况下可以处理多分类问题)
2、两个方法都可以增加不同的正则化项,如L1、L2等等。所以在很多实验中,两种算法的结果是很接近的。
区别:
1、LR是参数模型,SVM是非参数模型。
2、从目标函数来看,区别在于逻辑回归采用的是Logistical Loss,SVM采用的是hinge loss.这两个损失函数的目的都是增加对分类影响较大的数据点的权重,减少与分类关系较小的数据点的权重。
3、SVM的处理方法是只考虑Support Vectors,也就是和分类最相关的少数点,去学习分类器。而逻辑回归通过非线性映射,大大减小了离分类平面较远的点的权重,相对提升了与分类最相关的数据点的权重。
4、逻辑回归相对来说模型更简单,好理解,特别是大规模线性分类时比较方便。而SVM的理解和优化相对来说复杂一些,SVM转化为对偶问题后,分类只需要计算与少数几个支持向量的距离,这个在进行复杂核函数计算时优势很明显,能够大大简化模型和计算。
15.核函数kernel
核函数是将低维数据映射到高维数据的工具。是为了解决线性不可分问题,希望在高维空间中,数据可以更容易分离或更好的结构化。非线性问题用核函数,是映射关系的内积。