ML基本问题
如何理解SVM二分类的不等式条件
如何理解核函数?什么情况下采用SVM?样本数量太多是否适合SVM
SVM软间隔最优化目标
优化目标多了一个惩罚项,并且限制条件适当放宽
支持向量回归
容忍f(x)与y之间有一定的误差,并且误差绝对值大于一定值e的时候才计算损失。这就相当于以f(X)为中心,构建了宽度为2e的间隔带,如训练样本落入此间隔带,则认为分类正确。并且损失值为差值的绝对值
如何理解交叉熵
描述的是两个分布的距离,-$\int$p(x)log(g(x)) dx。神经网络训练的目的就是用训练的g(x)去逼近真实的p(x)
注意交叉熵和对数损失log后面的内容都是softmax或者sigmoid的概率。
熵:随机变量的不确定性度量。熵越大,不确定性越高。熵越小,不确定性越小,数据纯度越高。
信息增益:得知特征X的信息,使得Y的信息的不确定性减少的程度。
Gini指数:表示从数据中随机选择两条数据不一致的概率。也是衡量数据集合纯度的衡量。
为什么交叉熵前面都会有一个负号?
损失函数一般是对数似然函数的相反数(因为对数似然可以想象为样本得益,和损失是相反的概念)
决策树的划分标准比较
信息增益:会倾向于选择属性取值较多的属性。比如按照数据编号进行切分,每个子集都只包含一个数据,纯度会非常高。但实际上却不是一个有意义的特征。另外一个缺点是不能处理连续属性的数据
信息增益比(C4.5):解决倾向属性值多的问题。划分采用启发式规则,先从候选属性中找出信息增益高于平均水平的属性,再从中选择增益率最高的。可以处理连续值属性,需要先将属性值排序。
CART:分类回归树,分类回归都可以。分类树特征选择标准是Gini指数。回归树mse,要确定最优化分,要遍历所有属性以及其所有的取值,并计算此种情况的最小均方误差,并选择最优切分特征和切分点s。注意由CART生成树都是二叉树,不可能是多叉树
决策树的剪枝
通常是设置一个验证集和评估当前节点是否分裂。准则:划分前后验证集精度是否下降。
非均衡样本学习
再缩放
欠采样
假设负例多,这时候不是随机丢弃负例,而是利用集成学习机制,将反例划分为若干集合供不同学习器使用。这样对每个学习器来看都进行了欠采样,最后综合多个模型。
过采样
不能简单对正例进行重复采样,否则会导致过拟合。可以通过对训练集的正例进行插值产生额外正例。
深度网络的训练技巧
加入BN与LN;dropout;除了gate门和输出层可以用sigmoid,其他地方尽量用relu和tanh。sigmoid容易梯度消失,非0均值;数据shuffle
那么神经网络学不出东西怎么办?
打印出训练集的loss和测试集合的loss,正常情况下,训练集合的loss应该一直平滑下降,而测试集合先下降,然后开始震荡或者上升。如果训练集loss不降,代码本身有问题,或者超参数如学习率有问题。
生成模型和判别模型
生成模型:先计算联合概率,再计算条件概率或者先验概率。有朴素贝叶斯、混合高斯和隐马尔可夫模型。优点:能够应付有随机变量的情况,速度快,但是效果没有判别模型好。判别模型:SVM,LR等是直接求取条件概率或者函数f(x)。优化过程:已知模型分布种类,需要求取参数。那就直接上极大似然估计啊。
GBDT
GBDT的基模型是树模型,建树的时候是通过启发式学习,没有明确的损失函数。换言之,就没有单棵决策树loss也对数模型参数求导。假设在t+1时刻,GBDT模型为H(t+1),那么GBDT的损失函数L(H(t+1)),L对H可导,但H对树模型参数不可导。所以函数空间梯度下降
那么这里的L损失函数可以是什么?
XGBOOST
学习的时候,都是采用的前向分布算法,在学习第K棵树的时候,前面K-1棵树都已经学好。而且第K棵树的学习需要依赖K-1棵树的结果。
那么第K棵树如何联系第K-1棵树模型的结果呢?
第二颗树学习时的训练数据需要第一颗树的预测结果,由hi和gi的偏导数决定的