机器学习和深度学习理论知识

一.AI&ML&DL
1.机器学习是一种实现人工智能的方法,深度学习受到了人工神经网络的影响,驱动了机器学习的发展,是机器学习的一个子集。

二.AL&DL的区别
1.数据量
深度学习比较适合数据量比较大的情况,而传统的机器学习的话在小数据量的情况下效果会好一点
2.硬件依赖
深度学习算法需要进行大量的矩阵运算,需要高端的硬件设备,像GPU
3.特征工程
在机器学习方法中,几乎所有的特征都需要通过行业专家在确定,然后手工就特征进行编码。然而深度学习算法试图自己从数据中学习特征
4.解决问题的方式
传统的机器学习会将问题进行拆分,逐个解决然后进行合并,而深度学习则不需拆分,集中解决
5.执行时间
深度学习因为有大量的参数需要训练,所需的时间会更长
6.可解释性
深度学习模型虽然有时候能达到不错的效果,但是结果却很难解释,传统的机器学习像决策树这些的解释性会更强

三.如何选择合适的模型
1.对数据的认知
1.了解数据
查看总结统计和数据可视化的结果
百分比可以帮助你识别大多数数据的范围
平均数和中位数可以描述集中趋势
相关系数可以指出强的关联性
2. 数据可视化
箱形图可以识别出异常值
密度图和直方图可以显示出数据的散布情况
散点图可以描述二元关系
3.数据清洗
处理缺失值。缺失的数据对于某些模型的影响比对其它模型更大。即使是对于那些被用于处理缺失数据的模型来说,它们也可能对缺失数据很敏感(某些变量的缺失数据可能导致预测性能变差)
4.选择处理异常值的方法
有些模型对异常值的敏感性比其它模型要低。通常而言,树模型对于异常值的存在不太敏感。然而回归模型、或者任何试图使用方程的模型都会受到异常值的严重影响。

2.对问题进行分类
所有的问题可以分为监督学习,无监督学习和强化学习
强化学习算法针对每个数据点做出决策,在机器人学中比较常见,传感器每读取一个数据,算法必须决定机器人下一步该做什么。
[1]依据输入数据进行分类,如果我们的数据有标签,这就是一个监督学习问题;如果数据没有标签就是无监督学习;如果我们想通过与环境交互来优化目标函数,这是强化学习。
[2]根据输出结果分类:如果模型输出结果是一个数值,这是回归问题;如果输出结果是一个类别,这是分类问题;如果输出结果是一组输入数据,那这是聚类问题

3.考虑要满足的约束条件
[1]能够存储数据的容量有多大
[2]模型训练和预测的时间

4.寻找算法
[1]模型是否满足业务目标
[2]模型需要多少数据预处理工作
[3]模型有多准确
[4]模型的可解释性如何
[5]模型运行的速度有多快:构造模型需要多久?模型做出预测需要多长时间?
[6]模型的可伸缩性如何

四.各种算法的比较
1.线性回归
可以预测一个正在运行过程的未来值,但是如果特征之间存在多重共线性时就会不太稳定,不能拟合非线性数据
[1]多重共线性的检测
回归系数的正负号与预先估计的相反
相关系数:两个特征之间的相关系数如果高于0.8,可以认为存在共线性
容忍度与方差扩大因子(VIF):一般认为容忍度小于0.1时,共线性严重;VIF等于容忍度的倒数
[2]多重共线性的解决
PCA :保留主要特征,忽略次要特征
增加样本数量
训练模型时加入L2正则,可以避免模型参数过于发散无法收敛的情况
改变特征的表现形式,像取对数等等
逐步回归分析
a.基本思想是通过相关系数r、拟合优度R2和标准误差三个方面综合判断一系列回归方程的优劣,从而得到最优回归方程。具体方法
分为两步:
第一步,先将被解释变量y对每个解释变量作简单回归:
第二步,将其他解释变量逐一引入到基本回归方程中,建立一系列回归方程,根据每个新加的解释变量的标准差和复相关系数来考察其对每个回归系数的影响,一般根据如下标准进行分类判别:
1.如果新引进的解释变量使R2得到提高,而其他参数回归系数在统计上和经济理论上仍然合理,则认为这个新引入的变量对回归模型是有利的,可以作为解释变量予以保留。
2.如果新引进的解释变量对R2改进不明显,对其他回归系数也没有多大影响,则不必保留在回归模型中。
3.如果新引进的解释变量不仅改变了R2,而且对其他回归系数的数值或符号具有明显影响,则认为该解释变量为不利变量,引进后会使回归模型出现多重共线性问题

2.KNN
优点
[1]对数据没有假设,准确度高
[2]可用于非线性分类
[3]既可以用来做分类,也可以用来做回归
缺点
[1]计算量大,需要大量内存
[2]样本类别不均衡问题

3.LR(逻辑回归)
优点
[1]将线性回归的不确定范围的连续值映射到了(0,1)范围内,成了一个概率预测问题,对需要求分类概率的场景适用
[2]参数代表每个特征对输出的影响,可解释性强。
实施简单,非常高效(计算量小、存储占用低),可以在大数据场景中使用。
[3]可扩展,可以使用online learning的方式更新轻松更新参数,不需要重新训练整个模型。
缺点
[1]容易欠拟合,分类精度不高。(概率范围比较小,导致很多区间的变量变化对结果没有什么影响)
[2]因为它本质上是一个线性的分类器,对于非线性特征需要进行转换。
[3]特征空间很大时,性能不好。容易欠拟合,精度不高

3.决策树
优点
[1]比较适合处理有缺失属性的样本,能够处理不相关的特征
[2]可解释性强
[3]短时间对大型数据可以做出不错的预测
缺点
[1]不支持在线学习,当新的样本出现需要重新构建决策树
[2]容易发生过拟合,可以使用随机森林
[3]忽略了特征之间的相关性
[4]对于各类别样本数量不一致的情况,信息增益偏向于那些有更多特征的数值

4.随机森林
优点
[1]可以处理高维数据,不用进行特征选择(特征子集是随机选择)
[2]模型的泛化能力较强
[3]训练模型时速度快,成并行化方式,即树之间相互独立
[4]模型可以处理不平衡数据,平衡误差
[5]最终训练结果,可以对特征排序,选择比较重要的特征
[6]对缺失值、异常值不敏感
[7]模型训练结果准确度高
缺点
[1]随机森林在某些噪音较大的分类或回归问题上会过拟合
[2]取值划分较多的属性会对随机森林产生更大的影响
适用场景
[1]数据维度相对低(几十维),准确率要求比较高

5.SVM
一种在模式识别和分类问题中被广泛应用的监督机器学习技术——当你的数据恰好有两类时
优点
[1]可以解决小样本情况下的机器学习问题
[1]可以解决特征空间很大的情况
[2]可以解决非线性问题
[3]无需依赖整个数据
处理时提前对数据进行归一化
缺点
[1]当观测样本很多时,效率不高
[2]对于非线性问题很难找到一个合适的核函数
[3]对缺失数据敏感

6.NB
对于给出的待分类项,求出在这个特征空间上属于每个类别的概率,选出概率最大的类别作为结果
优点
[1]有比较坚实的数学基础,分类比较稳定
[2]算法比较简单,常用于文本分类
[3]对小规模的数据表现比较好,可以处理多分类问题,进行增量训练
缺点
[1]需要计算先验概率
[2]假设特征之间相互独立

7.adboost
每个模型都是基于上一次模型的错误率来建立的,过分关注分错的样本,而对正确分类的样本减少关注度,逐次迭代之后,可以得到一个相对较好的模型
优点
[1]adaboost是一种有很高精度的分类器。
[2]可以使用各种方法构建子分类器,Adaboost算法提供的是框架。
[3]当使用简单分类器时,计算出的结果是可以理解的,并且弱分类器的构造极其简单。
[4]不用做特征筛选。
[5]不容易发生overfitting
缺点
对异常值比较敏感

8.xgboost
[1]高准确率高效率高并发,支持自定义损失函数,既可以用来分类又可以用来回归
[2]可以像随机森林一样输出特征重要性,因为速度快,适合作为高维特征选择的一大利器
[3]在目标函数中加入正则项,控制了模型的复杂程度,可以避免过拟合
[4]支持列抽样,也就是随机选择特征,增强了模型的稳定性
[5]对缺失值不敏感,可以学习到包含缺失值的特征的分裂方向

  1. 人工神经网络的优缺点
    优点:
    [1]分类的准确度高;
    [2]并行分布处理能力强,分布存储及学习能力强,
    [3]对噪声神经有较强的鲁棒性和容错能力,能充分逼近复杂的非线性关系;
    缺点:
    [1]神经网络需要大量的参数,如网络拓扑结构、权值和阈值的初始值;
    [2]不能观察之间的学习过程,输出结果难以解释,会影响到结果的可信度和可接受程度;
    [3]学习时间过长,甚至可能达不到学习的目的。

五.回归&分类&聚类算法
1.回归
[1]线性回归
[2]Ridge回归
适用于模型容易出现过拟合,或者特征之间存在多重共线性的情况
[3]LassO回归
Lasso 的基本思想是在回归系数的绝对值之和小于一个常数的约束条件下,使残差平方和最小化,从而能够产生某些严格等于0 的回归系数,得到可以解释的模型
[4]KNN
[5]决策树(目标值为连续值)
[6]SVR(找到一个回归平面,让一个集合的所有数据到该平面的距离最近)
2.分类
[1]LR
[2]Softmax
[3]KNN
[4]决策树
[5]SVM
[6]NB
3.聚类
[1]层次聚类
首先我们将每个数据点视为一个单一的簇,然后选择一个测量两个簇之间距离的度量标准
在每次迭代中,我们将两个具有最小average linkage的簇合并成为一个簇
重复以上步骤直到所有的数据点合并成一个簇,然后选择我们需要多少个簇
[2]划分聚类
K-Means
2.1.K值如何确定
1)最简单的方法 K=sqrt(n/2)
1)手肘法,核心指标是SSE(误差平方和)
手肘法的核心思想是:随着聚类数k的增大,样本划分会更加精细,每个簇的聚合程度会逐渐提高,那么误差平方和SSE自然会逐
渐变小。并且,当k小于真实聚类数时,由于k的增大会大幅增加每个簇的聚合程度,故SSE的下降幅度会很大,而当k到达真实聚
类数时,再增加k所得到的聚合程度回报会迅速变小,所以SSE的下降幅度会骤减,然后随着k值的继续增大而趋于平缓,也就是
说SSE和k的关系图是一个手肘的形状,而这个肘部对应的k值就是数据的真实聚类数
2)间隔统计量Gap statistic公式计算
3)轮廓系数法
轮廓系数考虑了样本的簇内凝聚度和簇间分离度,轮廓系数越接近1,表示聚类效果越好
4)适用Canopy先进行粗略的聚类,得到K的值
就是对数据进行不断遍历,T2<dis<T1的可以作为中心名单,dis<T2的认为与canopy太近了,以后不会作为中心点,从list中删除
2.2.初始质心的选择
1)多次运行,每次使用一组不同的随机初始质心,然后选取具有最小SSE(误差的平方和)的簇集。
2)先使用层次聚类进行聚类。从层次聚类中提取K个簇,并用这些簇的质心作为初始质心。该方法通常很有效,但仅对下列情况有效:(1)样本相对较小,例如数百到数千(层次聚类开销较大);(2)K相对于样本大小较小
3)K-Means++。随机地选择第一个点,或取所有点的质心作为第一个点。然后,对于每个后继初始质心,选择离已经选取过的初始质心最远的点。具体步骤如下:
Step 1:从数据集中随机选取一个样本点作为初始聚类中心C1;
Step 2:首先计算每个样本与当前已有聚类中心之间的最短距离(即最近的聚类中心的距离),用D(x)表示;接着计算每个样本点被选为下一个聚类中心的概率(某个样本D(x)的平方/所有样本距离的平方和)。最后,按照轮盘法选择出下一个聚类中心;
Step 3:重复第2步直到选择出K个聚类中心

[3]密度聚类(DBSCAN)
首先确定半径r和minPoints. 从一个没有被访问过的任意数据点开始,以这个点为中心,r为半径的圆内包含的点的数量是否大于或等于minPoints,如果大于或等于minPoints则改点被标记为central point,反之则会被标记为noise point。
重复以上步骤,如果一个noise point存在于某个central point为半径的圆内,则这个点被标记为边缘点,反之仍为noise point。直到所有的点都被访问过。
优点:不需要知道簇的数量
缺点:需要确定距离r和minPoints

[4]谱聚类
谱聚类算法建立在谱图理论基础上,可以在任意形状的样本空间上聚类且收敛于全局最优解
谱聚类算法将数据集中的每个对象看作是图的顶点V,将顶点间的相似度量化作为相应顶点连接边E的权值,这样就得到一个基于相似度的无向加权图G(V, E),于是聚类问题就可以转化为图的划分问题。基于图论的最优划分准则就是使划分成的子图内部相似度最大,子图之间的相似度最小
具体的实现方法如下:
1) 构建表示对象集的相似度矩阵W;
2) 通过计算相似度矩阵或拉普拉斯矩阵的前k个特征值与特征向量,构建特征向量空间;
3) 利用K-means或其它经典聚类算法对特征向量空间中的特征向量进行聚类

六.生成模型和判别模型
1.生成模型:先由数据学习联合概率分布P(x,y)和先验概率分布P(x),然后求出条件概率分布P(y|x)=P(x,y)/P(x)作为预测的模型,即得到生成模型:
2.判别模型:判别方法由数据直接学习决策函数f(x)或者条件概率分布P(y|x)作为预测的。判别模型利用正负例和分类标签,关注在判别模型的边缘分布。寻找不同类别之间的最优分类面,反映的是异类数据之间的差异。

七.PCA和LDA的区别
1.PCA 选择的是投影后数据方差最大的方向。由于它是无监督的,因此PCA 假设方差越大,信息量越多,用主成分来表示原始数据可以去除冗余的维度,达到降维。而LDA 选择的是投影后类内方差小、类间方差大的方向。其用到了类别标签信息,为了找到数据中具有判别性的维度,使得原始数据在这些方向上投影后,不同类别尽可能区分开

八.确定 LDA (隐狄利克雷模型) 中主题的个数
1.将数据分成训练集,测试集,验证集,选择不同的超参数进行交叉验证,并在验证集上检验哪一组超参数所对应的模型取得了最好的效果。最终,在验证集上效果最好的一组超参数和其对应的模型将被选定,并在测试集上进行测试。
为了衡量LDA 模型在验证集和测试集上的效果,需要寻找一个合适的评估指标。一个常用的评估指标是困惑度(perplexity)
2.一开始,随着主题个数的增多,模型在训练集和验证集的困惑度呈下降趋势,但是当主题数目足够大的时候,会出现过拟合,导致困惑度指标在训练集上继续下降但在验证集上反而增长。这时,可以取验证集的困惑度极小值点所对应的主题个数作为超参数。在实践中,困惑度的极小值点可能出现在主题数目非常大的时候,然而实际应用并不能承受如此大的主题数目,这时就需要在实际应用中合理的主题数目范围内进行选择,比如选择合理范围内困惑度的下降明显变慢(拐点)的时候

九.随机梯度下降
梯度下降算法是通过沿着目标函数J(θ)参数θ∈R的梯度(一阶导数)相反方向−∇θJ(θ)来不断更新模型参数来到达目标函数的极小值点(收敛),更新步长为η。
1.BGD
批量梯度下降每次学习都使用整个训练集,因此其优点在于每次更新都会朝着正确的方向进行,最后能够保证收敛于极值点(凸函数收敛于全局极值点,非凸函数可能会收敛于局部极值点),但是其缺点在于每次学习时间过长,并且如果训练集很大以至于需要消耗大量的内存,并且全量梯度下降不能进行在线模型参数更新。
2.SGD
随机梯度下降算法每次只随机选择一个样本来更新模型参数,因此每次的学习是非常快速的,并且可以进行在线更新。最大的缺点在于每次更新可能并不会按照正确的方向进行,因此可以带来优化波动(扰动),波动可能会跳过局部最优解,但是会使迭代次数增多,收敛速度变慢
3.MBGD
每次更新从训练集中随机选择 m,m<n 个样本进行学习

4.面临的问题
[1]选择一个合理的学习速率很难。如果学习速率过小,则会导致收敛速度很慢。如果学习速率过大,那么其会阻碍收敛,即在极值点附近会振荡。
[2]学习速率调整。一般使用某种事先设定的策略或者在每次迭代中衰减一个较小的阈值。无论哪种调整方法,都需要事先进行固定设置,无法自适应每次学习的数据集特点。
[3]模型所有的参数每次更新都是使用相同的学习速率。如果数据特征是稀疏的或者每个特征有着不同的取值统计特征与空间,那么便不能在每次更新中每个参数使用相同的学习速率,那些很少出现的特征应该使用一个相对较大的学习速率。
[4]对于非凸目标函数,容易陷入那些次优的局部极值点中,如在神经网路中

十.梯度下降优化算法
1.动量(Momentum)方法
为了解决随机梯度下降法山谷震荡和鞍点停滞的问题,做到每次学习过程中能够根据损失函数的斜率做到自适应更新(在更新模型参数时,对于那些当前的梯度方向与上一次梯度方向相同的参数,那么进行加强,即这些方向上更快了;对于那些当前的梯度方向与上一次梯度方向不同的参数,那么进行削减)来加速SGD的收敛
2.AdaGrad 方法
它能够对每个参数自适应不同的学习速率,对稀疏特征,得到大的学习更新,对非稀疏特征,得到较小的学习更新,因此该优化算法适合处理稀疏特征数据
3.Adam 方法
Adam 方法将惯性保持和环境感知这两个优点集于一身。一方面, Adam 记录梯度的一阶矩(first moment),即过往梯度与当前梯度的平均,这体现了惯性保持;另一方面,Adam 还记录梯度的二阶矩(second moment),即过往梯度平方与当前梯度平方的平均,这类似AdaGrad 方法,体现了环境感知能力,为不同参数产生自适应的学习速率。一阶矩和二阶矩采用类似于滑动窗口内求平均的思想进行融合,即当前梯度和近一段时间内梯度的平均值,时间久远的梯度对当前平均值的贡献呈指数衰减。具体来说,一阶矩和二阶矩采用指数衰退平均(exponential decayaverage)技术

在鞍点(saddle points)处(即某些维度上梯度为零,某些维度上梯度不为零),SGD、Momentum与NAG一直在鞍点梯度为零的方向上振荡,很难打破鞍点位置的对称性;Adagrad、RMSprop与Adadelta能够很快地向梯度不为零的方向上转移。

如果你的数据特征是稀疏的,那么你最好使用自适应学习速率SGD优化方法(Adagrad、Adadelta、RMSprop与Adam),因为你不需要在迭代过程中对学习速率进行人工调整

4.其他SGD优化算法
[1].为了使得学习过程更加无偏,应该在每次迭代中随机打乱训练集中的样本
[2].在每次mini-batch反向传播之后重新对参数进行0均值1方差标准化。这样可以使用更大的学习速率,以及花费更少的精力在参数初始化点上。Batch normalization充当着正则化、减少甚至消除掉Dropout的必要性
[3].在验证集上如果连续的多次迭代过程中损失函数不再显著地降低,那么应该提前结束训练
[4].即在每次迭代计算梯度中加上一个高斯分布N(0,σ2t)的随机误差,对梯度增加随机误差会增加模型的鲁棒性,即使初始参数值选择地不好,并适合对特别深层次的负责的网络进行训练。其原因在于增加随机噪声会有更多的可能性跳过局部极值点并去寻找一个更好的局部极值点

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值