介绍LR
一句话概括
:逻辑回归假设数据服从伯努利分布,通过极大化似然函数的方法,运用梯度下降来求解参数,来达到将数据二分类的目的。基本假设
:
第一个基本假设是假设数据服从伯努利分布。
第二个假设是假设样本为正的概率是 11+e−z 1 1 + e − z求解方法
:
一般通过对该函数进行梯度下降来不断逼近最优解。梯度下降法、拟牛顿法。
随机梯度下降,批梯度下降,small batch 梯度下降三种方式,这三种方式的优劣以及如何选择。
批梯度下降:会获得全局最优解,缺点是在更新每个参数的时候需要遍历所有的数据,计算量会很大,每个参数的更新都会很慢。
随机梯度下降:每次使用一个样本点更新参数。
小批量梯度下降:结合了sgd和batch gd的优点,每次更新的时候使用n个样本。减少了参数更新的次数,可以达到更加稳定收敛结果。
动量法,Adam优化方法。因为上述方法其实还有两个致命的问题。
第一个是如何对模型选择合适的学习率。
第二个是如何对参数选择合适的学习率。
LR和SVM的联系和区别
- 相同点:
1、都是监督、分类算法,且一般处理二分类问题,如果不考虑核函数,LR和SVM都是线性分类算法。
2、两个方法都可以增加不同的正则化项,如l1、l2等等
3、都是判别模型 - 不同点:
1、损失函数不同:LR用似然函数;SVM用合页损失函数。
这两个损失函数的目的都是增加对分类影响较大的数据点的权重,减少与分类关系较小的数据点的权重
2、SVM只考虑支持向量,也就是和分类最相关的少数点。而逻辑回归通过非线性映射,大大减小了离分类平面较远的点的权重,相对提升了与分类最相关的数据点的权重。所以, 线性SVM不直接依赖于数据分布,分类平面不受一类点影响;LR则受所有数据点的影响,如果数据不同类别strongly unbalance,一般需要先对数据做balancing。
3、在解决非线性问题时,支持向量机采用核函数的机制,而LR通常不采用核函数的方法,做特征。因为SVM只有少数几个点运算,LR要全部(计算量)
4、Linear SVM依赖数据表达的距离测度,所以需要对数据先做归一化;LR不受其影响,但是如果要正则的话也要归一化
5、SVM不能产生概率,LR可以产生概率
6、SVM的目标函数就自带正则(目标函数中的1/2||w||^2项),这就是为什么SVM是结构风险最小化算法的原因。而LR必须另外在损失函数上添加正则项。
为什么要对特征做离散化
- 离散化后特征易于管理,方便迭代;稀疏向量内积乘法运算快
- 连续特征离散化,对异常数据有较强的鲁棒性(如>10岁的300岁),更稳定
- LR属于广义线性模型,表达能力受限,离散化后每个变量有单独的权重,相当于引入非线性,提升模型表达能力
- 离散化后做特征交叉,数量更多,可进一步引入非线性
- 通过“海量离散特征+简单模型”的方式解决,相对“少量连续特征+复杂模型”效率更高,更简单,可n人一起做。
- 特征离散化以后,起到了简化了逻辑回归模型的作用,降低了模型过拟合的风险。(当使用连续特征时,一个特征对应于一个权重,那么,如果这个特征权重较大,模型就会很依赖于这个特征,这个特征的一个微小变化可能会导致最终结果产生很大的变化,而使用离散特征的时候,一个特征变成了多个,权重也变为多个,那么之前连续特征对模型的影响力就被分散弱化了,从而降低了过拟合的风险。)
如何进行并行化
无论是梯度下降法、牛顿法、拟牛顿法,计算梯度都是其最基本的步骤,逻辑回归的并行化最主要的就是对目标函数梯度计算的并行化。从参数更新公式中可以看出,目标函数的梯度向量计算中只需要进行向量间的点乘和相加,可以很容易将每个迭代过程拆分成相互独立的计算步骤,由不同的节点进行独立计算,然后归并计算结果。 * 样本的切分 * 特征的切分介绍SVM
- SVM就是支持向量机,是一种二分类模型,基本模型定义为特征空间上的间隔最大的线性分类器。模型为分离超平面,策略是间隔最大化,学习算法是凸二次优化。
- (1)当训练样本线性可分时,通过硬间隔最大化,学习一个线性分类器,即线性可分支持向量机;
- (2)当训练数据近似线性可分时,引入松弛变量,通过软间隔最大化,学习一个线性分类器,即线性支持向量机;
- (3)当训练数据线性不可分时,通过使用核技巧及软间隔最大化,学习非线性支持向量机。
SVM为什么采用间隔最大化?
当训练数据线性可分时,存在无穷个分离超平面可以将两类数据正确分开。 感知机利用误分类最小策略,求得分离超平面,不过此时的解有无穷多个。 线性可分支持向量机利用间隔最大化求得最优分离超平面,这时,解是唯一的。另一方面,此时的分隔超平面所产生的分类结果是最鲁棒的,对未知实例的**泛化**能力最强。 然后应该借此阐述,几何间隔,函数间隔,及从函数间隔—>求解最小化1/2 ||w||^2 时的w和b。即线性可分支持向量机学习算法—最大间隔法的由来。为什么要将求解SVM的原始问题转换为其对偶问题?
- 对偶问题一般更容易求解
- 自然引入核函数,推广至非线性分类问题
为什么SVM要引入核函数?
当样本在原始空间线性不可分时,可将样本从原始空间映射到一个更高维的特征空间,使得样本在这个特征空间内线性可分。 引入映射后的对偶问题: 在学习预测中,只定义核函数K(x,y),而不是显式的定义映射函数ϕ。因为特征空间维数可能很高,甚至可能是无穷维,因此直接计算ϕ(x)·ϕ(y)是比较困难的。相反,直接计算K(x,y)比较容易(即直接在原来的低维空间中进行计算,而不需要显式地写出映射后的结果)。 核函数的定义:K(x,y)=svm RBF核函数的具体公式?
![](https://img-blog.csdn.net/20160828185625701) 这个核会将原始空间映射为无穷维空间。不过,如果 σ 选得很大的话相当于一个低维的子空间;反过来,如果 σ 选得很小,则可以将任意的数据映射为线性可分——当然,随之而来的可能是非常严重的过拟合问题。 不过,总的来说,通过调控参数σ ,高斯核实际上具有相当高的灵活性,也是使用最广泛的核函数之一。为什么SVM对缺失数据敏感?
这里说的缺失数据是指缺失某些特征数据,向量数据不完整。SVM没有处理缺失值的策略(决策树有)。而SVM希望样本在特征空间中线性可分,所以特征空间的好坏对SVM的性能很重要。缺失特征数据将影响训练结果的好坏。核函数选择
https://www.zhihu.com/question/21883548/answer/112128499 一般用线性核和高斯核,也就是Linear核与RBF核 注意数据归一化处理 然后一般情况下RBF效果是不会差于Linear 但是时间上RBF会耗费更多 下面是吴恩达的见解: 1. 如果Feature的数量很大,跟样本数量差不多,这时候选用LR或者是Linear Kernel的SVM 2. 如果Feature的数量比较小,样本数量一般,不算大也不算小,选用SVM+Gaussian Kernel 3. 如果Feature的数量比较小,而样本数量很多,需要手工添加一些feature变第一种情况Boosting和Bagging
bagging:从原始数据中进行N次有放回抽样形成一份数据集,重复M次用于训练M个基学习器,最后通过简单投票的方式得到结果。
* 从偏差-方差分解的角度看,Bagging主要关注的是降低方差,因此它在不剪枝决策树,神经网络等易受样本扰动的学习器上效果更为明显。
* 思想:基模型要有差异;效果不能太差;数据不重叠的话数据量太少
* 每轮随机采样中,训练集中大约有36.8%的数据没有被采样集采集中
* 集成:泛化性能和局部极小
boosting:用所有数据训练基学习器,每个学习器都基于之前训练的学习器的结果,并关注错分样本,达到提升效果。最后通过分类器输出加权得到结果。
* 从偏差-方差分解的角度来看,Boosting主要关注降低偏差,因此Boosting能基于泛化性能相当弱的学习器构建出很强的集成。
* AdaBoost:(1)初始化样本权重;(2)训练弱分类器;(3)计算弱分类器的分类误差率、权重系数然后更新样本权重;(4)重复2、3;(5)基分类器加权求解。【精度高、不易过拟合;对异常样本敏感】
* GBDT:梯度提升。每一次的计算是为了减少上一次的残差,通过在残差减小的梯度方向上建立一个新的模型,与单纯的对正确、错误的样本进行加权不同。
介绍RF
https://blog.csdn.net/timcompp/article/details/61919851- Random Forest(随机森林)是一种Bagging方法。除了Bagging的数据采样和简单投票外,(1)以CART决策树作为基学习器;(2)每次分裂先随机取特征子集再取最优,推荐k=log2d(泛化能力);(3)可以用OOB进行袋外估计,不需要交叉验证。
- 优点:(1)行采样、列采样,可以有效的避免过拟合;(2)可处理高维度的特征,并且不用做特征选择,在训练完后,给出特征的重要性;(3)简单、容易实现、可以并行;(4)不需要对数据进行归一化;
- 缺点:在噪声比较大的情况下会过拟合。
- 特征评分:1)对每一颗决策树计算袋外数据误差,记为errOOB1;2)随机对袋外数据OOB所有样本的特征X加入噪声干扰(可以随机改变样本在特征X处的值),再次计算袋外数据误差,记为errOOB2;3)假设森林中有N棵树,则特征X的重要性=∑(errOOB2-errOOB1)/N。【如果加入随机噪声后,袋外数据准确率大幅度下降(即errOOB2上升),说明这个特征对于样本的预测结果有很大影响,进而说明重要程度比较高。】
介绍GBDT
- GBDT(梯度提升树)是一种Boosting的方法,除了Boosting的梯度提升外。(1)以CART决策树为基学习器;(2)【不是对样本进行的权值进行改变,而是改变每个样本的回归目标值】每一次的计算是为了减少上一次的残差,通过在残差减小的梯度方向上建立一个新的模型。
- GBDT的分类算法从思想上和GBDT的回归算法没有区别,但是由于样本输出不是连续的值,而是离散的类别,导致我们无法直接从输出类别去拟合类别输出的误差。为了解决这个问题,主要有两个方法:1)用指数损失函数,即退化为Adaboost算法;2)用类似于逻辑回归的对数似然损失函数的方法,也就是,用类别的预测概率值和真实概率值的差来拟合损失。
- 优点:能处理连续、离散数据类型;在相对少的调参时间情况下,预测的准备率也可以比较高(相对SVM);不需要特征归一化(相对LR)
- 缺点:弱学习器之间存在以来关系,难以并行训练
- 防止过拟合的方法:树的数量、学习率、采样比例、叶子结点最小结点树(最大深度等)
介绍XGBoost
- 相对于GBDT而言。对损失函数进行泰勒展开,展开之后,得到迭代模型,使得目标函数只依赖于上一次迭代模型损失函数的一阶导数和二阶导数。
- 具体看GBDT和XGBoost的区别
RF和GBDT的区别
- 相同点:(1)都是由多棵CART树组成;(2)最终的结果都是由多棵树一起决定
- 不同点:(1)RF是Bagging思想,通过数据集采样来形成不同的基学习器、GBDT是Boosting思想,每次拟合上一轮结果的残差;(2)RF可以并行;GBDT只能串行;(3)输出结果来说,RF为等权的投票、GBDT为所有结果的加权累加;(4)RF可以是分类树或回归树、GBDT只能回归树;(5)RF对异常值不敏感,GBDT比较敏感;(6)RF减少模型方差,GBDT减少模型偏差;(7)RF中训练集等权,GBDT不改样本权重,但会改变每个样本的目标回归值。
GBDT和XGBoost的区别
- 【线性分类器】传统的GBDT以CART树作为基学习器,XGBoost还支持线性分类器,这个时候XGBoost相当于L1和L2正则化的逻辑斯蒂回归(分类)或者线性回归(回归);
- 【泰勒展开,更精确】传统的GBDT在优化的时候只用到一阶导数信息,XGBoost则对代价函数进行了二阶泰勒展开,得到一阶和二阶导数;xgboost工具支持自定义代价函数,只要函数可一阶和二阶求导。
- 【正则化】把树的复杂度加入了正则化项。降低了模型的方差,使学习出来的模型更加简单,防止过拟合,这也是XGBoost优于传统GBDT的一个特性;
- 【学习率】shrinkage,和GBDT类似;
- 【列抽样】借鉴RF,防止过拟合,还能减少计算;
- 【缺失值】XGBoost还可以自动学习出它的分裂方向;
- 【特征粒度的并行】XGBoost的并行不是tree粒度的并行,XGBoost也是一次迭代完才能进行下一次迭代的(第t次迭代的代价函数里包含了前面t-1次迭代的预测值)。XGBoost的并行是在特征粒度上的。我们知道,决策树的学习最耗时的一个步骤就是对特征的值进行排序(因为要确定最佳分割点),XGBoost在训练之前,预先对数据进行了排序,然后保存为block结构,后面的迭代 中重复地使用这个结构,大大减小计算量。这个block结构也使得并行成为了可能,在进行节点的分裂时,需要计算每个特征的增益,最终选增益最大的那个特征去做分裂,那么各个特征的增益计算就可以开多线程进行。
- 【分割点寻找】可并行的近似直方图算法。树节点在进行分裂时,我们需要计算每个特征的每个分割点对应的增益,即用贪心法枚举所有可能的分割点。当数据无法一次载入内存或者在分布式情况下,贪心算法效率就会变得很低,所以xgboost还提出了一种可并行的近似直方图算法,用于高效地生成候选的分割点。
XGBoost和lightGBM的区别
https://www.cnblogs.com/infaraway/p/7890558.htmlXGBoost泰勒展开的优势
- xgboost使用了一阶和二阶偏导, 二阶导数有利于梯度下降的更快更准
- 使用泰勒展开取得函数做自变量的二阶导数形式, 可以在不选定损失函数具体形式的情况下, 仅仅依靠输入数据的值就可以进行叶子分裂优化计算, 本质上也就把损失函数的选取和模型算法优化/参数选择分开了。这种去耦合增加了xgboost的适用性, 使得它按需选取损失函数, 可以用于分类, 也可以用于回归。
偏差、方差、噪声
偏差:【算法本身的拟合能力】学习算法的期望预测与真实结果的偏离程度
方差:【数据扰动造成的影响】训练集的变动导致学习性能的变化
噪声:【问题本身的难度】当前任务上任何学习算法所能达到的期望泛化误差下届
偏差-方差分解表明:泛化性能是由学习算法的能力、数据的充分性和学习任务本身的难度共同决定的
高偏差表现为欠拟合,训练集上准确率低,可以检查数据准确性、或更换模型;
高方差表现为过拟合,训练集高,验证集低,可以加入更多数据、加正则、换模型;
哪些机器学习算法不需要做归一化处理?
概率模型不需要归一化处理,如树模型、不带正则的LR。 其他的需要计算距离的应当进行归一化消除量岗影响,如带正则的LR、Lasso/Ridge回归、SVM等 归一化的好处:加快收敛速度、提高模型精度距离度量和特点
- 闵可夫斯基距离(与各指标的量纲有关;
没有考虑指标之间的相关性) d(a,b)=(∑nk=1|xak−xbk|p)1p d ( a , b ) = ( ∑ k = 1 n | x a k − x b k | p ) 1 p
- 欧式距离
- 曼哈顿距离[北京道路]
- 切比雪夫距离 maxni=1|xi−yi| max i = 1 n | x i − y i |
- 马氏距离:消除不同维度之间的相关性和尺度不同
- 余弦距离[-1,1]
- 相关系数
- 汉明距离
- KL散度
- DTW距离
过拟合和解决方法
过拟合的表现为训练集上的误差越来越小,而验证集上的误差越来越大,也称为“泛化”性能不好,通常是因为模型复杂度太高。 * 数据:加数据、数据增强、加噪声 * 特征:减少特征(特征选择) * 正则化:L1正则化——绝对值和、特征筛选;L2正则——平方和、惩罚大权重; * 交叉验证和早停 * 使用多个模型:如集成方法Boosting、Bagging等 * 深度学习:随机失活(dropout)、逐层归一化(batch normalization)、CNN参数共享特征选择
关于熵
- 熵(entropy)表示随机变量不确定性的度量。X有n种取值
-
H(p)=H(X)=−∑i=1npilogpi H ( p ) = H ( X ) = − ∑ i = 1 n p i log p i
- 条件熵
H(Y|X)
H
(
Y
|
X
)
表示已知随机变量X的条件下随机变量Y的不确定性
H(Y|X)=∑i=1npiH(Y|X=xi)=∑i=1n|Di||D|H(Di)=−∑i=1n|Di||D|∑k=1K|Dik||Di|log2|Dik||Di| H ( Y | X ) = ∑ i = 1 n p i H ( Y | X = x i ) = ∑ i = 1 n | D i | | D | H ( D i ) = − ∑ i = 1 n | D i | | D | ∑ k = 1 K | D i k | | D i | log 2 | D i k | | D i | - 信息增益Gain表示得知特征X的信息而使得类Y的信息的不确定性减少的程度,决策树中等价为类与特征的互信息
g(D,A)=H(D)−H(D|A) g ( D , A ) = H ( D ) − H ( D | A ) - 信息增益比,用于解决信息增益偏向于选择取值较多的特征的问题,n是特征A的取值个数
gR(D,A)=g(D,A)HA(D)HA(D)=−∑I=1n|Di||D|log2|Di||D| g R ( D , A ) = g ( D , A ) H A ( D ) H A ( D ) = − ∑ I = 1 n | D i | | D | log 2 | D i | | D | - 基尼指数,表示集合D的不确定性,表示经过A=a分割后的集合D的不确定性
Gini(p)=∑k=1Kpk(1−pk)=1−∑k=1Kp2kGini(D,A)=|D1||D|Gini(D1)+|D2||D|Gini(D2) G i n i ( p ) = ∑ k = 1 K p k ( 1 − p k ) = 1 − ∑ k = 1 K p k 2 G i n i ( D , A ) = | D 1 | | D | G i n i ( D 1 ) + | D 2 | | D | G i n i ( D 2 ) - 联合熵:
H(X,Y)=−∑x,yp(x,y)lnp(x,y)
H
(
X
,
Y
)
=
−
∑
x
,
y
p
(
x
,
y
)
ln
p
(
x
,
y
)
(X,Y)在一起时的不确定性度量 - 交叉熵:
H(p,q)=−∑xp(x)lnq(x)
H
(
p
,
q
)
=
−
∑
x
p
(
x
)
l
n
q
(
x
)
衡量p与q的相似性 - 相对熵:
KL(p||q)=−∑xp(x)lnq(x)p(x)
K
L
(
p
|
|
q
)
=
−
∑
x
p
(
x
)
l
n
q
(
x
)
p
(
x
)
p与q不相似的度量
梯度下降和牛顿法
- 梯度下降法的优化思想是用当前位置负梯度方向作为搜索方向,也被称为是”最速下降法“。
批量梯度下降、随机梯度下降、小批量梯度下降。
最速下降法越接近目标值,步长越小,前进越慢。 - 牛顿法是二阶收敛,梯度下降是一阶收敛,所以牛顿法就更快。
牛顿法目光更加长远,所以少走弯路;相对而言,梯度下降法只考虑了局部的最优,没有全局思想。 - 从几何上说,牛顿法就是用一个二次曲面去拟合你当前所处位置的局部曲面,而梯度下降法是用一个平面去拟合当前的局部曲面,通常情况下,二次曲面的拟合会比平面更好,所以牛顿法选择的下降路径会更符合真实的最优下降路径。
牛顿法的优缺点总结:
优点:二阶收敛,收敛速度快;
缺点:牛顿法是一种迭代算法,每一步都需要求解目标函数的Hessian矩阵的逆矩阵,计算比较复杂。 - 拟牛顿法的本质思想是改善牛顿法每次需要求解复杂的Hessian矩阵的逆矩阵的缺陷,它使用正定矩阵来近似Hessian矩阵的逆,从而简化了运算的复杂度。
数据不平衡
采样,对小样本加噪声采样,对大样本进行下采样 数据生成,利用已知样本生成新的样本 进行特殊的加权,如在Adaboost中或者SVM中 采用对不平衡数据集不敏感的算法 改变评价标准:用AUC/ROC来进行评价 采用Bagging/Boosting/ensemble等方法 在设计模型的时候考虑数据的先验分布公式
- LR:模型、似然函数、对数似然函数、梯度下降
P(Y=1|x)=π(x), P(Y=0|x)=1−π(x)∏i=1N[π(xi)]yi[1−π(xi)]1−yiL(w)=∑I=1N[yilogπ(xi)+(1−yi)log(1−π(xi)]wj^:=wj−α1m∑i=1m(π(xi)−yi)xji P ( Y = 1 | x ) = π ( x ) , P ( Y = 0 | x ) = 1 − π ( x ) ∏ i = 1 N [ π ( x i ) ] y i [ 1 − π ( x i ) ] 1 − y i L ( w ) = ∑ I = 1 N [ y i log π ( x i ) + ( 1 − y i ) log ( 1 − π ( x i ) ] w j ^ := w j − α 1 m ∑ i = 1 m ( π ( x i ) − y i ) x i j - SVM:函数间隔、几何间隔、间隔最大化、对偶、软间隔最大化、对偶、合页损失函数、核函数
γ̂ i=yi(w⋅xi+b)γi=yi(w‖w‖⋅xi+b‖w‖) γ ^ i = y i ( w ⋅ x i + b ) γ i = y i ( w ‖ w ‖ ⋅ x i + b ‖ w ‖ )
地图匹配的内容
- 基础数据:GPS轨迹点+道路网
- 应用:轨迹分类、轨迹离群值/异常检测、轨迹不确定性、轨迹模式挖掘
- 流程:基础数据->数据清洗->建立索引->选取候选路段->确定匹配路段
- 按依据信息划分:
1)几何匹配:点到点、点到线、线到线
2)拓扑关系:简单拓扑(作为筛选)、加权拓扑(作为权重)
3)概率统计:置信区间匹配、新型概率匹配方法(绘制概率椭圆)
4)先进匹配算法:模糊逻辑、证据理论、卡尔曼滤波、贝叶斯推理 - 问题:噪声和数据稀疏
- 按采样点范围划分(按计算时间):局部/增量的方法(online)、全局方法(offline)
- 按采样频率划分:高频、低频、更低频
- HMM方法
1)隐含状态序列:路网
2)可观测序列:GPS点
3)状态转移概率矩阵A:t时刻i状态到t+1时刻j状态的概率,N*N;【状态中前后点越近概率越大;路段上的距离和观测上的距离越相近概率越大;考虑拓扑、考虑速度等】
4)观测概率矩阵B:t时刻i状态,观测到k的概率;【点与路段越近,概率越大】
5)初始状态概率矩阵pai:表示初始状态的概率