机器学习复习
2023-02-09 16:09:12 34 举报
AI智能生成
机器学习复习
作者其他创作
大纲/内容
机器学习复习题
机器学习
树模型
决策树
学习过程
生长条件
信息熵
概念:熵是描述信息的混乱纯度,信息熵越低,说明事务的混乱度越大,既不纯度越大。而机器学习则是希望把不纯度降低。
公式:
信息增益 id3
概念:在根节点处计算信息熵,然后根据属性依次划分并计算其节点的信息熵,用根节点信息熵 - 属性节点的信息熵 = 信息增益,根据信息增益进行降序排列,排在前面的就是第一个划分属性,其后依次类推,这就得到了决策树的形状,也就是怎么“长”了。
公式
缺点:对可取值数目较多的属性有所偏好,对分类节点多的无法准确预估
信息增益率 c4.5
应用场景:对可取值数目较多的属性有所偏好,例如:考虑将“编号”作为一个属性。既:划分类别特别多
属性a的可能取值数目越多(即V越大),则IV(a)的值通常就越大。**信息增益比本质: 是在信息增益的基础之上乘上一个惩罚参数。特征个数较多时,惩罚参数较小;特征个数较少时,惩罚参数较大。**不过有一个缺点:
缺点:信息增益率偏向取值较少的特征。
使用信息增益率:基于以上缺点,并不是直接选择信息增益率最大的特征,而是现在候选特征中找出信息增益高于平均水平的特征,然后在这些特征中再选择信息增益率最高的特征。
缺点:信息增益率偏向取值较少的特征。
使用信息增益率:基于以上缺点,并不是直接选择信息增益率最大的特征,而是现在候选特征中找出信息增益高于平均水平的特征,然后在这些特征中再选择信息增益率最高的特征。
子主题
基尼指数cart树
分类树
子数学家真实聪明,想到了另外一个表示纯度的方法,叫做基尼指数
表示在样本集合中一个随机选中的样本被分错的概率。举例来说,现在一个袋子里有3种颜色的球若干个,伸手进去掏出2个球,颜色不一样的概率,这下明白了吧。Gini(D)越小,数据集D的纯度越高。
子主题
子主题
回归树
CART回归树是假设树为二叉树,通过不断将特征进行分裂。比如当前树结点是基于第j个特征值进行分裂的,设该特征值小于s的样本划分为左子树,大于s的样本划分为右子树。
子主题
回归树目标函数:
决策树防止过拟合
预剪枝
预剪枝的核⼼思想是在树中结点进⾏扩展之前,先计算当前的划分是否能带来模型泛化能⼒的提升,如果不能,则不再继续⽣⻓⼦树此时可能存在不同类别的样本同时存于结点中,搜照多数投票的原则判断该结点所属类别。预剪枝对于何时停⽌决策树的⽣⻓有以下⼏种⽅法:
( 1 )当树到达⼀定深度的时候,停⽌树的主⻓
( 2 )当到达当前结点的样本数⼩于某个阈值的时候,停⽌树的⽣⻓
( 3 )计算每次分裂对测试集的准确度提升当⼩于某个阈值的时不再继续扩展
( 2 )当到达当前结点的样本数⼩于某个阈值的时候,停⽌树的⽣⻓
( 3 )计算每次分裂对测试集的准确度提升当⼩于某个阈值的时不再继续扩展
后剪枝
后剪枝的核⼼思想是让算法⽣成⼀棵完全⽣⻓的决策树,然后从最底层向上计算是否剪枝。剪枝过程将⼦树删除⽤⼀个叶⼦结点苔代,该结点的类别同样按照多数投票的原则进⾏判断同样地后剪枝也可以通过在测试集上的准确率进⾏判断,如果剪枝过后准确率有所提升,则进⾏剪枝相⽐于预剪枝,后剪枝⽅法通常可以得到泛化能⼒更强的决策树,但时间开销会更⼤。
终止条件
当前结点包含的样本全属于同一类别,无需划分;例如:样本当中都是决定去相亲的,属于同一类别,就是不管特征如何改变都不会影响结果,这种就不需要划分了。节点包含所有样本且属于同一类别
常⻅的后剪枝⽅法包括错误率降低剪枝( Reduced Error Pruning, REP )、悲观剪枝( Pess mistic Error
Pruning, PEP )、代价复杂度剪枝( Cost Complexity Pruning , CCP )、最⼩误差剪枝( Minimum Error Pruning , MEP )、 CVP ( Critical Value Pruning )、 OP ( Optimal Pruning )等⽅法,这些剪枝万法各有利弊,关注不同的优化⻆度,本⽂选取著名的 CART 剪枝⽅法 CCP 进⾏介绍。
Pruning, PEP )、代价复杂度剪枝( Cost Complexity Pruning , CCP )、最⼩误差剪枝( Minimum Error Pruning , MEP )、 CVP ( Critical Value Pruning )、 OP ( Optimal Pruning )等⽅法,这些剪枝万法各有利弊,关注不同的优化⻆度,本⽂选取著名的 CART 剪枝⽅法 CCP 进⾏介绍。
当前属性集为空,或是所有样本在所有属性上取值相同,无法划分;例如:所有的样本特征都是一样的,就造成无法划分了,训练集太单一。
随机森林
Bagging是bootstrap aggregating。思想就是从总体样本当中随机取一部分样本进行训练,通过多次这样的结果,进行投票获取平均值作为结果输出,这就极大可能的避免了不好的样本数据,从而提高准确度。因为有些是不好的样本,相当于噪声,模型学入噪声后会使准确度不高。
Random Forest(随机森林)是一种基于树模型的Bagging的优化版本,一棵树的生成肯定还是不如多棵树,因此就有了随机森林,解决决策树泛化能力弱的特点。(可以理解成三个臭皮匠顶过诸葛亮)
而同一批数据,用同样的算法只能产生一棵树,这时Bagging策略可以帮助我们产生不同的数据集。Bagging策略来源于bootstrap aggregation:从样本集(假设样本集N个数据点)中重采样选出Nb个样本(有放回的采样,样本数据点个数仍然不变为N),在所有样本上,对这n个样本建立分类器(ID3\C4.5\CART\SVM\LOGISTIC),重复以上两步m次,获得m个分类器,最后根据这m个分类器的投票结果,决定数据属于哪一类。
而同一批数据,用同样的算法只能产生一棵树,这时Bagging策略可以帮助我们产生不同的数据集。Bagging策略来源于bootstrap aggregation:从样本集(假设样本集N个数据点)中重采样选出Nb个样本(有放回的采样,样本数据点个数仍然不变为N),在所有样本上,对这n个样本建立分类器(ID3\C4.5\CART\SVM\LOGISTIC),重复以上两步m次,获得m个分类器,最后根据这m个分类器的投票结果,决定数据属于哪一类。
每棵树的按照如下规则生成:
如果训练集大小为N,对于每棵树而言,随机且有放回地从训练集中的抽取N个训练样本,作为该树的训练集;
如果每个样本的特征维度为M,指定一个常数m<<M,随机地从M个特征中选取m个特征子集,每次树进行分裂时,从这m个特征中选择最优的;
每棵树都尽最大程度的生长,并且没有剪枝过程。
如果训练集大小为N,对于每棵树而言,随机且有放回地从训练集中的抽取N个训练样本,作为该树的训练集;
如果每个样本的特征维度为M,指定一个常数m<<M,随机地从M个特征中选取m个特征子集,每次树进行分裂时,从这m个特征中选择最优的;
每棵树都尽最大程度的生长,并且没有剪枝过程。
随机森林有什么优缺点
优点:
在当前的很多数据集上,相对其他算法有着很大的优势,表现良好。
它能够处理很高维度(feature很多)的数据,并且不用做特征选择(因为特征子集是随机选择的)。
在训练完后,它能够给出哪些feature比较重要。
训练速度快,容易做成并行化方法(训练时树与树之间是相互独立的)。
在训练过程中,能够检测到feature间的互相影响。
对于不平衡的数据集来说,它可以平衡误差。
如果有很大一部分的特征遗失,仍可以维持准确度。
在当前的很多数据集上,相对其他算法有着很大的优势,表现良好。
它能够处理很高维度(feature很多)的数据,并且不用做特征选择(因为特征子集是随机选择的)。
在训练完后,它能够给出哪些feature比较重要。
训练速度快,容易做成并行化方法(训练时树与树之间是相互独立的)。
在训练过程中,能够检测到feature间的互相影响。
对于不平衡的数据集来说,它可以平衡误差。
如果有很大一部分的特征遗失,仍可以维持准确度。
缺点:
随机森林已经被证明在某些噪音较大的分类或回归问题上会过拟合。
对于有不同取值的属性的数据,取值划分较多的属性会对随机森林产生更大的影响,所以随机森林在这种数据上产出的属性权值是不可信的。
随机森林已经被证明在某些噪音较大的分类或回归问题上会过拟合。
对于有不同取值的属性的数据,取值划分较多的属性会对随机森林产生更大的影响,所以随机森林在这种数据上产出的属性权值是不可信的。
6. 随机森林的过拟合问题
该模型过度拟合,因此,为了避免这些情况,我们要用交叉验证来调整树的数量。
xgboost
adaboot
GDBT
首先需要说一下gbdt梯度提升算法,他是属于boosting算法的一下
boosting算法是由后一个基学习累加不断修正前一个基学习器的算法,gdbt是通过后一个
学习器拟合上一个学习器的预测值与当前真实值之间的残差,gbdt的基学习是cart数,
进行一阶梯度学习,训练过程采用前向分布算法。
boosting算法是由后一个基学习累加不断修正前一个基学习器的算法,gdbt是通过后一个
学习器拟合上一个学习器的预测值与当前真实值之间的残差,gbdt的基学习是cart数,
进行一阶梯度学习,训练过程采用前向分布算法。
xgboost介绍
xgboost同样是一个基于boosting的强学习器,但是区别于gdbt的是基学器可以是线性回归
、逻辑回归等等学习器,同事可以自定义损失函数,这是由于xgboost是在梯度下降一介导的基础
上进行了梯度下降二阶导,目标函数加入正则项,支持列采样,和特征值采样,采样过程中可以并
行计算最佳分割点,计算每颗树的增益gain。
、逻辑回归等等学习器,同事可以自定义损失函数,这是由于xgboost是在梯度下降一介导的基础
上进行了梯度下降二阶导,目标函数加入正则项,支持列采样,和特征值采样,采样过程中可以并
行计算最佳分割点,计算每颗树的增益gain。
xgboost原理
1.XGB目标函数
XGBoost的目标函数由训练损失和正则化项两部分组成
2.学习T课树
1.XGBoost 是一个加法模型,假设我们第t次迭代要训练的树模型
2.新目标函数 Obj
3.泰勒展开
1.泰勒公式的二阶展开形式
3.我们的损失函数就可以转化为下式
4.最终目标函数:
4.定义一颗树
叶子结点的权重向量 ω ;
实例 -> 叶子结点的映射关系q(本质是树的分支结构
实例 -> 叶子结点的映射关系q(本质是树的分支结构
子主题
5.定义树的复杂度
叶子结点的数量;
叶子结点权重向量的L2范数;
叶子结点权重向量的L2范数;
子主题
6.叶子结点归组
我们将属于第 j 个叶子结点的所有样本 xi , 划入到一个叶子结点样本集中,数学表示如下:
然后,将【4】和【5】中一棵树及其复杂度的定义,带入到【3】中泰勒展开后的目标函数Obj中,具体推导如
为进一步简化该式,我们进行如下定
将 Gj 和 Hj 带入目标式Obj,得到我们最终的目标函数
树结构打分
求出最优的最优wj和obj
xgboost树的生长停止
1.分裂节点
在实际训练过程中,当建立第 t 棵树时,XGBoost采用贪心法进行树结点的分裂
对树中的每个叶子结点尝试进行分裂;
每次分裂后,原来的一个叶子结点继续分裂为左右两个子叶子结点,原叶子结点中的样本集将根据该结点的判断规则分散到左右两个叶子结点中;
新分裂一个结点后,我们需要检测这次分裂是否会给损失函数带来增益,增益的定义如下:分裂后的损失函数-分裂前的损失函数
每次分裂后,原来的一个叶子结点继续分裂为左右两个子叶子结点,原叶子结点中的样本集将根据该结点的判断规则分散到左右两个叶子结点中;
新分裂一个结点后,我们需要检测这次分裂是否会给损失函数带来增益,增益的定义如下:分裂后的损失函数-分裂前的损失函数
子主题
2.寻找最佳分裂点
遍历每个结点的每个特征;
对每个特征,按特征值大小将特征值排序;
线性扫描,找出每个特征的最佳分裂特征值;
在所有特征中找出最好的分裂点(分裂后增益最大的特征及特征值)
对每个特征,按特征值大小将特征值排序;
线性扫描,找出每个特征的最佳分裂特征值;
在所有特征中找出最好的分裂点(分裂后增益最大的特征及特征值)
最佳分裂点的方案
特征预排序+缓存:XGBoost在训练之前,预先对每个特征按照特征值大小进行排序,然后保存为block结构,后面的迭代中会重复地使用这个结构,使计算量大大减小。
分位点近似法:对每个特征按照特征值排序后,采用类似分位点选取的方式,仅仅选出常数个特征值作为该特征的候选分割点,在寻找该特征的最佳分割点时,从候选分割点中选出最优的一个。
并行查找:由于各个特性已预先存储为block结构,XGBoost支持利用多个线程并行地计算每个特征的最佳分割点,这不仅大大提升了结点的分裂速度,也极利于大规模训练集的适应性扩展。
分位点近似法:对每个特征按照特征值排序后,采用类似分位点选取的方式,仅仅选出常数个特征值作为该特征的候选分割点,在寻找该特征的最佳分割点时,从候选分割点中选出最优的一个。
并行查找:由于各个特性已预先存储为block结构,XGBoost支持利用多个线程并行地计算每个特征的最佳分割点,这不仅大大提升了结点的分裂速度,也极利于大规模训练集的适应性扩展。
并行化:注意不是tree维度的并行,与随机森林不同,随机森林是确定好树的个数可以并行计算每颗树,每棵树不会影响,而xgb是特征维度的并行,是在形成单课决策树时遍历每个特征值所形成的决策树。XGBoost预先将每个特征按特征值排好序,存储为块结构,分裂结点时可以采用多线程并行查找每个特征的最佳分割点,极大提升训练速度。
3.树的停止生长
(1) 当新引入的一次分裂所带来的增益Gain<0时,放弃当前的分裂。这是训练损失和模型结构复杂度的博弈过程
(2) 当树达到最大深度时,停止建树,因为树的深度太深容易出现过拟合,这里需要设置一个超参数max_depth。
(3) 当引入一次分裂后,重新计算新生成的左、右两个叶子结点的样本权重和。如果任一个叶子结点的样本权重低于某一个阈值,也会放弃此次分裂。这涉及到一个超参数:最小样本权重和,是指如果一个叶子节点包含的样本数量太少也会放弃分裂,防止树分的太细,这也是过拟合的一种措施。
xgboost常见20道面试题
https://mp.weixin.qq.com/s?__biz=Mzg2MjI5Mzk0MA==&mid=2247484181&idx=1&sn=8d0e51fb0cb974f042e66659e1daf447&chksm=ce0b59cef97cd0d8cf7f9ae1e91e41017ff6d4c4b43a4c19b476c0b6d37f15769f954c2965ef&scene=21#wechat_redirect
Lightgbm
XGBoost的缺点
首先,空间消耗大。这样的算法需要保存数据的特征值,还保存了特征排序的结果
时间上也有较大的开销,在遍历每一个分割点的时候,都需要进行分裂增益的计算,消耗的代价大
lightgbm改进
- 基于Histogram的决策树算法。
- 单边梯度采样 Gradient-based One-Side Sampling(GOSS):使用GOSS可以减少大量只具有小梯度的数据实例,这样在计算信息增益的时候只利用剩下的具有高梯度的数据就可以了,相比XGBoost遍历所有特征值节省了不少时间和空间上的开销。
- 互斥特征捆绑 Exclusive Feature Bundling(EFB):使用EFB可以将许多互斥的特征绑定为一个特征,这样达到了降维的目的。
- 带深度限制的Leaf-wise的叶子生长策略:大多数GBDT工具使用低效的按层生长 (level-wise)的决策树生长策略,因为它不加区分的对待同一层的叶子,带来了很多没必要的开销。实际上很多叶子的分裂增益较低,没必要进行搜索和分裂。LightGBM使用了带有深度限制的按叶子生长 (leaf-wise) 算法。
- 直接支持类别特征(Categorical Feature)
- 支持高效并行
lightgbm原理
lightgbm与xgboost区别
(1)树生长策略:XGB采用level-wise的分裂策略,LGB采用leaf-wise的分裂策略。XGB对每一层所有节点做无差别分裂,但是可能有些节点增益非常小,对结果影响不大,带来不必要的开销。Leaf-wise是在所有叶子节点中选取分裂收益最大的节点进行的,但是很容易出现过拟合问题,所以需要对最大深度做限制 。
(2)分割点查找算法:XGB使用特征预排序算法,LGB使用基于直方图的切分点算法,其优势如下:
减少内存占用,比如离散为256个bin时,只需要用8位整形就可以保存一个样本被映射为哪个bin(这个bin可以说就是转换后的特征),对比预排序的exact greedy算法来说(用int_32来存储索引+ 用float_32保存特征值),可以节省7/8的空间。
计算效率提高,预排序的Exact greedy对每个特征都需要遍历一遍数据,并计算增益,复杂度为𝑂(#𝑓𝑒𝑎𝑡𝑢𝑟𝑒×#𝑑𝑎𝑡𝑎)。而直方图算法在建立完直方图后,只需要对每个特征遍历直方图即可,复杂度为𝑂(#𝑓𝑒𝑎𝑡𝑢𝑟𝑒×#𝑏𝑖𝑛𝑠)。
LGB还可以使用直方图做差加速,一个节点的直方图可以通过父节点的直方图减去兄弟节点的直方图得到,从而加速计算
减少内存占用,比如离散为256个bin时,只需要用8位整形就可以保存一个样本被映射为哪个bin(这个bin可以说就是转换后的特征),对比预排序的exact greedy算法来说(用int_32来存储索引+ 用float_32保存特征值),可以节省7/8的空间。
计算效率提高,预排序的Exact greedy对每个特征都需要遍历一遍数据,并计算增益,复杂度为𝑂(#𝑓𝑒𝑎𝑡𝑢𝑟𝑒×#𝑑𝑎𝑡𝑎)。而直方图算法在建立完直方图后,只需要对每个特征遍历直方图即可,复杂度为𝑂(#𝑓𝑒𝑎𝑡𝑢𝑟𝑒×#𝑏𝑖𝑛𝑠)。
LGB还可以使用直方图做差加速,一个节点的直方图可以通过父节点的直方图减去兄弟节点的直方图得到,从而加速计算
(3)支持离散变量:无法直接输入类别型变量,因此需要事先对类别型变量进行编码(例如独热编码),而LightGBM可以直接处理类别型变量。
(4)缓存命中率:XGB使用Block结构的一个缺点是取梯度的时候,是通过索引来获取的,而这些梯度的获取顺序是按照特征的大小顺序的,这将导致非连续的内存访问,可能使得CPU cache缓存命中率低,从而影响算法效率。而LGB是基于直方图分裂特征的,梯度信息都存储在一个个bin中,所以访问梯度是连续的,缓存命中率高。
线性分类器
逻辑回归
也就是把Y的结果带入一个非线性变换的Sigmoid函数中,即可得到[0,1]之间取值范围的数S,S可以把它看成是一个概率值,如果我们设置概率阈值为0.5,那么S大于0.5可以看成是正样本,小于0.5看成是负样本,就可以进行分类了
损失函数:交叉熵损失
支持向量机
SVM境界
线性分类器:在一个线性可分的平面,找到一个最优的切割线把样本集分成正例和负例。
子主题
子主题
函数间隔与几何间隔
这样定义的函数间隔有问题,即如果成比例的改变w和b(如将它们改成2w和2b),则函数间隔的值f(x)却变成了原来的2倍(虽然此时超平面没有改变),所以只有函数间隔还远远不够。
其中||w||为w的二阶范数(范数是一个类似于模的表示长度的概念)
找寻最大间隔约束参数
将寻找最大值问题转换成寻找最小值问题
还可以通过拉格朗日对偶性(Lagrange Duality)变换到对偶变量 (dual variable) 的优化问题,即通过求解与原问题等价的对偶问题(dual problem)得到原始问题的最优解,这就是线性可分条件下支持向量机的对偶算法
KKT
通过拉格朗日对偶化简后的公式:
这样,求出了,根据,即可求出w,然后通过,即可求出b,最终得出分离超平面和分类决策函数。
在求得L(w, b, a) 关于 w 和 b 最小化,以及对的极大之后,最后一步则可以利用SMO算法求解对偶问题中的拉格朗日乘子。
线性不可分的情况
核函数:如果有一种方式可以在特征空间中直接计算内积〈φ(xi · φ(x)〉,就像在原始输入点的函数中一样,就有可能将两个步骤融合到一起建立一个非线性的学习器,这样直接计算法的方法称为核函数方法
目标函数:原先是数据之间做内即,现在通过映射函数做内积
几种和函数:高斯核,多项式核函数,线性核函数
软间隔
据本身是非线性结构的,而只是因为数据有噪音。对于这种偏离正常位置很远的数据点,我们称之为 outlier ,在我们原来的 SVM 模型里,outlier 的存在有可能造成很大的影响,因此引入松弛变量是的硬间隔变成软间隔,解决方法是在约束条件时,增加松弛变量
子主题
回归算法
线性回归
岭回归L2
使用场景:只要数据线性相关,用LinearRegression拟合的不是很好,需要正则化,可以考虑使用岭回归(L2)
缺点:很高,而且是稀疏线性关系的话, 岭回归就不太合适,考虑使用Lasso回归。
子主题
Lasso回归L1
很高,而且是稀疏线性关系的话, 岭回归就不太合适,考虑使用Lasso回归。
子主题
ARIMA
ar
自回归项
自回归模型是用自身的数据进行预测
I
差分
I是差分模型,ARIMA是经过差分后的ARMA模型,保证了数据的稳定性。
ma
滑动平滑
移动平均模型关注的是自回归模型中的误差项的累加
参数:p--代表预测模型中采用的时序数据本身的滞后数(lags) ,也叫做AR/Auto-Regressive项
d--代表时序数据需要进行几阶差分化,才是稳定的,也叫Integrated项。
q--代表预测模型中采用的预测误差的滞后数(lags),也叫做MA/Moving Average项
d--代表时序数据需要进行几阶差分化,才是稳定的,也叫Integrated项。
q--代表预测模型中采用的预测误差的滞后数(lags),也叫做MA/Moving Average项
特征工程
数据清洗
过滤缺失比较高列
过滤不同值过多离散列
数据类型转换
过滤取值一样的列
过滤重复数据
填充缺失比较少列
连续性数据用均值填充
离散型数据用0 1填充
数据探索
1.对数据不平衡数据进行采样:上采样或者下采样
2.对训练集和测试分布不一样的列进行删除
3.删除特征与label相关性低的列
4.对数据进行box-cox变换
5.对数据进行归一化
6.异常值过滤
无监督方法
监督方法
7.计算特征共线性,使用pca降维
构造特征
1.类别编码,独热编码
2.数值特征:交叉统计,业务特征
3.数据特征:离散化处理,分桶,二值化
特征选择
相关系数
互信息法
卡方检验
评价指标
分类指标
ACC
roc
auc
F1score
召回率
回归指标
R2
MSE
ma'e
聚类算法
k-means
相似度计算
欧式距离
余弦相似度
皮尔斯系数
聚类过程
1.迭代过程,随意选取或者根据先验知识来判断族的个数和位置
2.计算样每个本点距离族中心的距离,并划分区域
3.更新族中心位置,通过计算每个族的均值来确定
4.重复上述步骤直至类别中心的变化小于某个阈值
聚类终止条件:迭代次数完成/满足阈值/
k-means++
k-means++就是解决初值选择的问题
1.假设有k个族,随机先选取一个样本作为第一个族中心。
2.计算所有样本到第一个族中心最远的点作为第二族中心。
3.计算所有样本到第一族中和第二个族中心距离最远的点作为第三个族中心
4.以此类推计算出k个族中心,确定初值问题。
初值如何选择
尽可能的选择相互较远的数据作为初始值
层次聚类
层次聚类是把数据通过层次划分
凝聚式,这种方式比较好
分列式
子主题
密度聚类
只要样本的密度大于某个阈值就把样本添加到最近的簇中
优点:密度聚类可以抗噪声。 缺点:对高维数据效果不算好
如果样本的密度不均, 效果会不理想
如果样本的密度不均, 效果会不理想
密度聚类一些定义
一些概念:1.对象领域,给定一个样本为中心点,a为半径的一个领域
2.核心对象,就算这个领域内样本的个数
3.直接密度可达:在以q为中心的领域内包含p,p是以p为中心的领域。p到q的距离就算密度可达,也可以说p是q的核心对象
4.密度相连,存在一个o,到q和p都可以直接密度可达
5.簇就算密度相连形成的一个最大集合
聚类过程
1.样本点p的领域包含多个密度可达的q点,将其连接
1.不断更新簇,使得找到该簇包含的所有密度可达的领域
簇不在更新为止
评价指标
轮廓系数
轮廓系数越大说明聚类的比较好
均一性
一个族只包含一个类别
完整性
同类别的被归类到相同族中
将均一性和完整性加权
损失函数
回归
平方损失
绝对值损失
发类
0-1损失
交叉熵损失
指数损失
对数损失
合页损失
深度学习
多层感知机MLP
神经网络优化
加入正则项
使用dropout
batch-size
batchNom
梯度下降方法
随机梯度下将方法
小批量梯度下降
Adam算法
增加数据,添加噪声/降低特征数量,特征优化
神经网络传播
正向传播
子主题
反向传播
神经网络存在问题
梯度消失
原因:在神经网络反向传播过程中,神经元需要通过链式法则才能求出梯度,这个过程中如果偏导数很小,炼成的化就会接近于0
梯度爆炸
原因:在神经网络反向传播过程中,神经元需要通过链式法则才能求出梯度,这个过程中如果偏导数很大,炼成的化就会接近于无穷
解决方法:
梯度剪切:对梯度设定阈值
权重正则化
选择relu等梯度大部分落在常数上的激活函数
batch normalization
自然语言处理
RNN
为什么要有RNN,rnn是解决传统神经网络不能很好预测序列数据的模型
rnn隐藏层神经元,输入是上一个时刻的神经元ht以及当前时刻xt。
rnn训练会发生梯度消失的现象
子主题
LSTM
子主题
遗忘门:LSTM 中的第一步是决定我们会从细胞状态中丢弃什么信息。这个决定通过一个称为 忘记门层 完成。该门会读取h_t−1和x_t,输出一个在 0 到 1 之间的数值给每个在细胞
输入门:第二步是确定什么样的新信息被存放在细胞状态中。这里包含两个部分。第一,sigmoid 层称 “输入门层” 决定什么值我们将要更新。然后,一个 tanh 层创建一个新的候选值向量,C~t,会被加入到状态中。下一步,我们会讲这两个信息来产生对状态的更新
第三步是确定更新的信息现在是更新旧细胞状态的时间了,Ct−1更新为Ct。前面的步骤已经决定了将会做什么,我们现在就是实际去完成。把旧状态与ft相乘,丢弃掉我们确定需要丢弃的信息。接着加上需要更新的信息。这就是新的候选值,根据我们决定更新每个状态的程度进行变化。在语言模型的例子中,这就是我们实际根据前面确定的目标,丢弃旧代词的类别信息并添加新的信息的地方
输出门:需要确定输出什么值。这个输出将会基于我们的细胞状态,但是也是一个过滤后的版本。首先,我们运行一个 sigmoid 层来确定细胞状态的哪个部分将输出出去。接着,我们把细胞状态通过 tanh 进行处理(得到一个在 -1 到 1 之间的值)并将它和 sigmoid 门的输出相乘,最终我们仅仅会输出我们确定输出的那部分。
LSTM是如何解决梯度消失的
通过这些门的作用,削弱rnn中的连成效应,因为lstm中更多是+处理,可以有效解决梯度消失
seq2seq
子主题
注意力机制
子主题
注意力机制
子主题
encoder,包含两层,一个self-attention层和一个前馈神经网络,self-attention能帮助当前节点不仅仅只关注当前的词,从而能获取到上下文的语义。
decoder也包含encoder提到的两层网络,但是在这两层中间还有一层attention层,帮助当前节点获取到当前需要关注的重点内容。
transformer
Transformer的结构和Attention模型一样,Transformer模型中也采用了 encoer-decoder 架构。但其结构相比于Attention更加复杂,论文中encoder层由6个encoder堆叠在一起,decoder层也一样。
位置编码:transformer模型中缺少一种解释输入序列中单词顺序的方法,它跟序列模型还不不一样。为了处理这个问题,transformer给encoder层和decoder层的输入添加了一个额外的向量Positional Encoding,维度和embedding的维度一样,这个向量采用了一种很独特的方法来让模型学习到这个值,这个向量能决定当前词的位置,或者说在一个句子中不同的词之间的距离。其中pos是指当前词在句子中的位置,i是指向量中每个值的index,可以看出,在偶数位置,使用正弦编码,在奇数位置,使用余弦编码。
自注意力机制:
1.首先,self-attention会计算出三个新的向量,在论文中,向量的维度是512维,我们把这三个向量分别称为Query、Key、Value,这三个向量是用embedding向量与一个矩阵相乘得到的结果,这个矩阵是随机初始化的,维度为(64,512)注意第二个维度需要和embedding的维度一样,其值在BP的过程中会一直进行更新,得到的这三个向量的维度是64。
2.计算self-attention的分数值,该分数值决定了当我们在某个位置encode一个词时,对输入句子的其他部分的关注程度。这个分数值的计算方法是Query与Key做点成,以下图为例,首先我们需要针对Thinking这个词,计算出其他词对于该词的一个分数值,首先是针对于自己本身即q1·k1,然后是针对于第二个词即q1·k2。
3.接下来,把点成的结果除以一个常数,这里我们除以8,这个值一般是采用上文提到的矩阵的第一个维度的开方即64的开方8,当然也可以选择其他的值,然后把得到的结果做一个softmax的计算。得到的结果即是每个词对于当前位置的词的相关性大小,当然,当前位置的词相关性肯定会会很大。
多头注意力机制:机制理解起来很简单,就是说不仅仅只初始化一组Q、K、V的矩阵,而是初始化多组,tranformer是使用了8组,所以最后得到的结果是8个矩阵。
BN 和 LN 区别
BN 主要是对单个样本的做均值方差,意思是比如某个样本身高,体重,对身高做均值方差,对体重做均值方差
LN是对整个数据做均值方差
BatchNorm: 对一个batch-size样本内的每个特征做归一化
LayerNorm: 针对每条样本,对每条样本的所有特征做归一化
LayerNorm: 针对每条样本,对每条样本的所有特征做归一化
相同点:都是在深度学习中让当前层的参数稳定下来,避免梯度消失或者梯度爆炸,方便后面的继续学习
不同点:如果你的特征依赖不同样本的统计参数,那BatchNorm更有效, 因为它不考虑不同特征之间的大小关系,但是保留不同样本间的大小关系
Nlp领域适合用LayerNorm, CV适合BatchNorm,
对于Nlp来说,它不考虑不同样本间的大小关系,保留样本内不同特征之间的大小关系*
Nlp领域适合用LayerNorm, CV适合BatchNorm,
对于Nlp来说,它不考虑不同样本间的大小关系,保留样本内不同特征之间的大小关系*
残差网络作用:增加网络层数,并且能够减少梯度消失
bert
bert是tranformer的encoder部分叠加,一本base bert由12层encoder叠加而成
bert输入由tonken emb,seg emb,position emb 三部分组成上下游任务
Token Embeddings是词向量,第一个单词是CLS标志,可以用于之后的分类任务
Segment Embeddings用来区别两种句子,因为预训练不光做LM还要做以两个句子为输入的分类任务
Position Embeddings和之前文章中的Transformer不一样,不是三角函数而是学习出来的
Segment Embeddings用来区别两种句子,因为预训练不光做LM还要做以两个句子为输入的分类任务
Position Embeddings和之前文章中的Transformer不一样,不是三角函数而是学习出来的
作者会随机mask每一个句子中15%的词
80%是采用[mask],my dog is hairy → my dog is [MASK]
10%是随机取一个词来代替mask的词,my dog is hairy -> my dog is apple
10%保持不变,my dog is hairy -> my dog is hairy
10%是随机取一个词来代替mask的词,my dog is hairy -> my dog is apple
10%保持不变,my dog is hairy -> my dog is hairy
自然语言处理实战
网易云课堂bert'文本分类
xgboost调参
xgboost
调参
n_estimators:基学习器个数
subsample:有放回的抽样
eta:迭代决策树迭代,学习率
alpha:决策树正则化l1正则系数
lambda:决策树正则化L2正则化系数
gamma:让树停止生长参数,,控制叶子节点个数的参数
max_depth:最大树深
调参方法
1.通过设定学习曲线,网格搜索
lightgbm
调参
(learning_rate=0.05, # 学习率
n_estimators=300,# 集成树数量
min_child_samples=10,# 是叶节点所需的最小样本数
max_depth=5, # 决策树深度
num_leaves = 25,
colsample_bytree =0.8,#构建树时特征选择比例
subsample=0.8,# 抽样比例
reg_alpha = 0.5,
reg_lambda = 0.1
n_estimators=300,# 集成树数量
min_child_samples=10,# 是叶节点所需的最小样本数
max_depth=5, # 决策树深度
num_leaves = 25,
colsample_bytree =0.8,#构建树时特征选择比例
subsample=0.8,# 抽样比例
reg_alpha = 0.5,
reg_lambda = 0.1
xgboost面试题
https://mp.weixin.qq.com/s?__biz=Mzg2MjI5Mzk0MA==&mid=2247484193&idx=1&sn=81ff5a898e2f22357aab9e3742f1cc22&chksm=ce0b59faf97cd0ec095ec8b1e0d7521fb3ec6dea829dbd8a3960ed7ed5c3c0fe7d9e34649074&scene=21#wechat_redirect
项目
智能工厂工业蒸汽预测
1.数据探索
1.查看数据信息info()
2. 查看数据统计信息decribe()
3.查看所有训练集和测试机特征之间的数据分布情况,观察是否一致,不一致剔除掉
4.通过计算特征之间的热力图,计算出特征与特征之间的相关性,主要是计算出各个特征和标签label之间的相关性。
5.剔除所有绝对值小于0.1的特征
- 0.8-1.0 极强相关;
- 0.6-0.8 强相关;
- 0.4-0.6 中等程度相关;
- 0.2-0.4 弱相关;
- 0.0-0.2 极弱相关或无相关(过滤极弱相关的特征)
2.特征工程
1.最大值最小值归一化
2.数据正态化操作
3.异常值过滤
1.使用机器学习学习算法,训练训练数据,训练好模型,将训练数据带入,计算出预测数据
2.计算预测数据和真是数据之间误差,成为残差,使用3sigma准则将异常值计算出来
3.计算各个机器学习算法的异常值交集
4.多重共线性
1.去除多重共线性,各个特征之间存在多重共线性,会导致数据冗余,或导致训练有所偏差
2.,计算方差膨胀系数,小于10不存在,大于100严重,10-100较强
3.解决方法:采用PCA降维方法
3.模型预测
1.定义学习曲线
2.各种机器学习算法调参
3.使用网格搜索法调参超参数
4.多模型bagging
1.计算多种机器学习回归算法,然后取平均值
汽车产品聚类分析项目
天猫复购预测
数据处理
数据集成
数据类型转换
特征工程
空数据填充
重复数据删除
kaggle反欺诈预测
京东购买意向预测
特征工程
目标编码:labelcode(),将字符串,编码成数字
onehot:将这些数字向量化。
工艺参数调优
背景
中海油煤加氢炼化项目,主要是油四道工序,每到工序有多个指标,通过机器学习方法对其参数优化
解决方案
特征构造:时差,温度,材料,等特征进行交叉
数据探索:数据修正,填充,删除重复数据
时间序列异常检测
无监督异常检测
arima
3sgima
设置90%置信区间
孤立森林
有监督异常检测
特征工程
- 原始数据,先确定滑动窗口,比如滑动窗口设置为6。
2. 1-6时间数据构建特征,第六个时间点的label为标签,2-7时间数据构造特征,第7个是异常
3.构建特征,指标1平均值,指标1标准差,取指标1最后两个时间点值
4.构建多维时间特征,指标1平均值,指标2平均值,指标1标准差,指标2标准差,最后两个点
子主题
机器学习
过采样,欠采样
电力负荷预测
数据采集及预处理
历史负荷
气象因素
湿度
温度
风速
降雨量
气压
日期类型
小时
星期
月份
节假日
总计32维电力负荷属性
设备监测影响
背景:如果预先知道负荷需求,便可以尽可能的降低成本运行发电机,从而提高电厂的经济效益,有助于起到节能减排和环境保护的目标
机器学习面试题
https://zhuanlan.zhihu.com/p/82105066
python面试题
数据结构与算法面试题
深度学习
https://gitcode.net/mirrors/scutan90/DeepLearning-500-questions?utm_source=csdn_github_accelerator
0 条评论
下一页