赞
踩
经典的机器学习模型,用于解决分类和回归问题。
y = w₁x₁ + ... + wₙxₙ + b
,y
表示输出变量,x₁, ..., xₙ
表示输入特征,w₁, ..., wₙ
表示特征的权重,b
表示偏差或截距。模型通过学习特征的权重和偏差,以最小化预测值与真实值之间的差距。线性模型简单、可解释性强、计算效率高,适用于特征与输出之间存在线性关系的问题。p = 1 / (1 + exp(-(w₁x₁ + ... + wₙxₙ + b)))
其中,p
表示样本属于某个类别的概率。模型通过学习特征的权重和偏差,以最大化似然函数或最小化对数损失函数来拟合训练数据,并进行分类预测。逻辑回归模型模型简单、可解释性强、计算效率高,广泛应用于二分类问题。逻辑回归模型还可以通过正则化技术来防止过拟合。逻辑回归假设数据服从伯努利分布,通过极大似然函数的方法,运用梯度下降来求解参数,来达到将数据二分类的目的。
假设:
损失函数:
逻辑回归中用到sigmoid函数,若用均方误差则为非凸函数,有多个极小值,采用梯度下降法容易陷入局部最优解中。
逻辑回归其实是概率类模型,通过极大似然估计(MLE)推导逻辑回归损失函数。目的是将所得似然函数极大化,而损失函数是最小化。
求解:
最小二乘法的误差符合正态分布,而逻辑回归的误差符合的是二项分布,所以不能用最小二乘法来作为损失函数,那么能够用最大似然预计来做。使用梯度下降法求解。
优点:
缺点:
推导:
分类问题 | 输出层激活函数 | 损失函数 | 说明 |
---|---|---|---|
二分类 | Sigmoid | 二分类交叉熵损失函数(binary_crossentropy) | sigmoid作为最后一层输出,不能把最后一层的输出看作成一个分布,因为加起来不为1。应将最后一层的每个神经元看作一个分布 |
多分类 | Softmax | 多类别交叉熵损失函数(categorical_crossentropy) | Softmax后最后一层输出概率相加为1 |
多标签分类 | Sigmoid | 二分类交叉熵损失函数(binary_crossentropy) | 计算一个样本各个标签的损失取平均值。把一个多标签问题转化为在每个标签上的二分类问题 |
令y表示数据的label,f(x)表示测试数据的预测值, f ( x ) ‾ \overline{f(x)} f(x)表示学习算法对所有数据集的期望预测值。则偏差表示期望预测值 f ( x ) ‾ \overline{f(x)} f(x)与标记y之间的差距,差距越大说明偏差越大;而方差是测试预测值f(x)与预测值的期望值 f ( x ) ‾ \overline{f(x)} f(x)之间的差距,差距越大说明方差越大。偏差表征模型对数据的拟合能力;而方差表征数据集的变动导致的学习性能的变化,也就是泛化能力。
“独立同分布”的数据能让人很快地发觉数据之间的关系,因为不会出现像过拟合等问题。为了解决ICS(internal covarivate shift内部协变量漂移)问题,即数据分布会发生变化,对下一层网络的学习带来困难。一般在模型训练之前,需要对数据做归一化。
LayerNorm,对单个样本的所有维度特征做归一化,对模型中每个子层的输入归一化处理,使得每个特征的均值为0,方差为1。有助于缓解内部协变量偏移的问题,提高模型的训练效率和鲁棒性。
batch normalization是对一批样本的同一纬度特征做归一化。强行将数据转为均值为0,方差为1的正态分布,使得数据分布一致,并且避免梯度消失。而梯度变大意味着学习收敛速度快,能够提高训练速度。设batch_size为m,网络在向前传播时,网络 中每个神经元都有m个输出,BN就是将每个神经元的m个输出进行归一化处理。
区别:
关系:
小结:
【深度学习】batch normalization和layer normalization区别
为什么要从原问题转换为对偶问题求解?
SVM从原始问题到对偶问题的转换及原因
SVM中,高斯核为什么会把原始维度映射到无穷多维?
数据不均衡(如正例很少,负例很多)解决办法:
目标是从原始特征集中选择最相关、最有用的特征,以提高模型性能和泛化能力。常用特征选择方法:
旨在根据用户偏好和上下文信息,预测每个项目的相关性或排名,为用户提供最相关和个性化的结果。模型输入包括:
常见排序模型包括:
一种基于boosting增强策略的加法模型,训练时采用前向分布算法进行贪婪学习,迭代地训练一系列弱学习器,并将它们组合成一个强大的集成模型。每次迭代都学习一棵CART树来拟合之前t-1棵树的预测结果与训练样本真实值的残差。
LR是线性模型,可解释性强,很容易并行化,但学习能力有限,需要大量的人工特征工程。GBDT是非线性模型,具有天然的特征组合优势,特征表达能力强,但是树与树之间无法并行训练,且树模型很容易过拟合;当在高维稀疏特征的场景下,LR的效果一般会比GBDT好。
相同点:都是由多棵树组成,最终的结果都是由多棵树一起决定。
不同点:
eXtreme Gradient Boosting用于解决分类和回归问题。基于梯度提升框架,集成多个弱学习器(决策树)逐步改善模型的预测能力。原理:
XGBoost在训练前预先将特征按照特征值进行了排序,并存储为block结构,以后在结点分裂时可以重复使用该结构。因此,可以采用特征并行的方法利用多个线程分别计算每个特征的最佳分割点,根据每次分裂后产生的增益,最终选择增益最大的那个特征的特征值作为最佳分裂点。
如果在计算每个特征的最佳分割点时,对每个样本都进行遍历,计算复杂度会很大,这种全局扫描的方法并不适用大数据的场景。
XGBoost提供了一种直方图近似算法,使用weighted quantile sketch算法近似地找到best split,对特征排序后仅选择常数个候选分裂位置作为候选分裂点。
按比例来选择,从n个样本中抽取k个样本来进行计算,取k个样本中的最优值作为split value,这样就大大减少了运算数量。按样本均分会导致loss分布不均匀,取到的分位点会有偏差。我们要均分的是loss,而不是样本的数量。将样本对应的残差二阶导h作为划分依据,将同范围h占比的特征值划分到同一范围内。残差二阶导差异越大的地方,样本分布越稀疏,反之则稠密。加权意义在于把候选节点选取的机会更多地让于二阶导更大的地方,同时忽略导数差异小的节点。
当数据量太大不能全部放入主内存的时候,为了使得out-of-core计算称为可能,将数据划分为多个Block并存放在磁盘上。计算时使用独立的线程预先将Block放入主内存,因此可以在计算的同时读取磁盘。但是由于磁盘IO速度太慢,通常更不上计算的速度。因此,需要提升磁盘IO的销量。Xgboost采用了2个策略:
首先需初始化一些基本变量,如:max_depth = 5, min_child_weight = 1, gamma = 0, subsample, colsample_bytree = 0.8, scale_pos_weight = 1
,确定learning rate和estimator的数量 lr可先用0.1,用xgboost.cv()
来寻找最优的estimators。
max_depth, min_child_weight
: 首先将这两个参数设置为较大的数,通过迭代方式不断修正,缩小范围。max_depth每棵子树的最大深度,check from range(3,10,2)。min_child_weight子节点的权重阈值,check from range(1,6,2)。 如果一个结点分裂后,它的所有子节点的权重之和都大于该阈值,该叶子节点才可以划分。gamma
: 最小划分损失min_split_loss,check from 0.1 to 0.5,对于一个叶子节点,当对它采取划分之后,损失函数的降低值的阈值。如果大于该阈值,则该叶子节点值得继续划分。如果小于该阈值,则该叶子节点不值得继续划分。subsample, colsample_bytree
: subsample是对训练的采样比例,colsample_bytree是对特征的采样比例,both check from 0.6 to 0.9有两类参数可以缓解:
直接减小learning rate,但需要同时增加estimator参数。
对存在缺失值的特征,一般的解决方法是:
一些模型如SVM和KNN,其模型原理中涉及到了对样本距离的度量,如果缺失值处理不当,最终会导致模型预测效果很差。而树模型对缺失值的敏感度低,大部分时候可以在数据缺失时时使用。原因是,一棵树中每个结点在分裂时,寻找的是某个特征的最佳分裂点(特征值),完全可以不考虑存在特征值缺失的样本,如果某些样本缺失的特征值缺失,对寻找最佳分割点的影响不是很大。
XGBoost对缺失数据有特定的处理方法, 因此,对于有缺失值的数据在经过缺失处理后:
RF单颗树更深。Boosting主要关注降低偏差,因此Boosting能基于泛化性能相当弱的学习器构建出很强的集成;Bagging主要关注降低方差,因此它在不剪枝的决策树、神经网络等学习器上效用更为明显。
Bagging算法会并行地训练很多不同的分类器来降低方差variance:
E
[
h
−
E
(
h
)
]
E[h−E(h)]
E[h−E(h)],因为采用了相互独立的基分类器多了以后,h的值自然就会靠近E(h)。所以对于每个基分类器来说,目标就是降低偏差bias,所以会采用深度很深甚至不剪枝的决策树。对于Boosting来说,每一步会在上一轮的基础上更加拟合原数据,所以可以保证偏差bias,所以对于每个基分类器来说,问题就在于如何选择variance更小的分类器,即更简单的分类器,所以我们选择了深度很浅的决策树。
区别:
区别:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。