1、XGBoost原理介绍一下?
①首先,XGBoost是集成算法之一,它用多个弱学习器去生成一个强学习器。XGBoost基于梯度提升框架实现,沿着梯度负方向更新模型参数,使损失函数达到最小化。(梯度提升框架)
②其次,XGBoost的目标函数由损失函数和正则化项组成。使用二阶泰勒公式去近似目标函数,这样的好处就是可以将所有自定义损失写成只关于节点值的式子,再去优化这个参数,并且更精确。目标函数的优化以叶子节点为单位,而不是树,这是因为树是阶跃的,不适合前项梯度优化。(目标函数)
③最后,XGBoost的基学习器是一棵棵回归树,利用贪心算法去构建树,贪心算法就是分步+贪婪的思想。每一步对应一个结点的分类,每一步取增益最大的操作叫做贪婪。(回归树)
2、GBDT原理介绍一下?
①首先,GBDT基于梯度提升框架实现,沿着梯度负方向更新模型参数,使损失函数达到最小化。它用多个弱学习器去生成一个强学习器。(梯度提升框架)
②其次,使用回归树作为基学习器,用于预测连续性的目标变量。在每一轮迭代中,GBDT训练一个新的回归树来拟合前一轮的残差(预测值与真实值之间的差异)。(残差学习)
3、AdaBoost原理介绍一下?
①首先,AdaBoost是一种迭代的集成学习方法,主要用于分类任务,它通过加权多个弱分类器的预测结果来构建一个强分类器,在训练过程中,会调整每个样本的权重,增加被错误分类的样本的权重,减少被正确分类的样本的权重。(迭代思想)
②其次,最终的强分类器通过对所有弱分类器进行加权投票得到,权重由每个弱分类的误差率决定。误差率越小的分类器在最终分类器中的权重越大。(加权投票)
4、boosting和bagging的区别?
boosting和bagging都是集成学习方法。
①过程顺序不同。bagging是并行的集成学习方法,独立的训练n个模型,最终结果由n个模型的平均或投票获得。boosting是串行的集成学习方法,按顺序训练n个模型,后续模型依赖于之前的模型。
②基学习器之间的关系不同。bagging基学习器之间不存在强依赖关系。boosting基学习器之间存在强依赖关系。
5、sql如何进行优化?
①选择合适的索引。对于经常用于查询条件的列,可以创建索引以提高查询性能。
②避免全表扫描。尽量避免使用没有where子句的select语句,以免触发全表扫描。
③分页查询优化:对于分页查询,应该使用LIMIT子句限制返回的行数,并尽量避免使用offset,因为offset会导致数据库跳过大量的行。
6、random forest 和xgboost的区别?
随机森林和XGBoost都是集成学习方法。
①随机森林采用Bagging集成方法,通过并行训练多个决策树,然后对它们的预测结果进行投票或平均来进行最终预测。
②XGBoost采用Boosting集成方法,通过迭代训练多个决策树,然后对它们的预测结果来构建最终模型。
7、说一下SVM原理?
决策边界。wx+b=0,也叫分离超平面。如果数据是线性可分的,这样的超平面有无穷多个,但是间隔最大的分离超平面是唯一的。
支持向量。到决策边界的距离最小的点。
①基本思想。找到一个超平面,使支持向量到超平面的距离(间隔)最大。
②引入软间隔允许某些点不满足约束。在实际应用中,对于某个样本数据,总有一些点,无论怎么分,都会存在分错的情况。此时可以引入软间隔(软结果),允许一些样本点处于错误的一侧。通过引入惩罚参数C,可以平衡间隔的最大化和分类错误的惩罚。
③引入核函数处理非线性问题。当数据不能够被线性分割时,SVM可以通过引入核函数来将数据映射到高维空间,从而实现非线性分类。常用的核函数包括线性核、多项式核、高斯核等。
8、L1、L2的原理?两者区别?
L1和L2正则化都是用来解决模型过拟合的两种方法。(模型复杂容易导致过拟合)
①L1正则化使用各个参数向量的绝对值的和作为惩罚项,L1正则化会导致参数向量中某些元素变为0,因此L1具有稀疏性,使得某些特征对模型的影响几乎为0,从而提高模型的泛化能力和解释性。
②L2正则化使用各个参数向量的平方和的平方根作为惩罚项,L2正则化会导致参数向量中的元素都接近于0,降低模型对数据的敏感度,从而提高模型的泛化能力。
9、说一下显著性水平、置信区间、假设检验?
①显著性水平。指在统计推断中所允许的拒绝原假设的概率阈值。通常用符号α表示,常见的显著性水平包括0.05、0.01等。当p值小于或等于显著性水平时(表示落在小概率事件发生的区间内),我们通常会拒绝原假设,即认为观察到的差异是显著的。
②置信区间。置信区间(Confidence Interval)是用来估计总体参数(如均值、比例等)的范围,以一定的置信水平给出的区间估计。置信区间提供了对估计参数精度的一种度量。
③假设检验。它的主要目的是对某个假设进行推断。将假设代入,如果落在拒绝原假设的概率区间内,则推翻该假设,否则接收该假设。
10、SQL掌握运用的程度?学过sql吗?
我在SQL方面有一定的经验和掌握。我熟悉基本的SQL语法,包括SELECT、INSERT、UPDATE和DELETE语句,以及常见的聚合函数和连接操作。我能够编写复杂的查询来从数据库中检索所需的数据,并且了解索引和优化查询的方法。学过MySQL。