LR
参数
多分类情况下使用一对多策略,损失函数为交叉熵损失,求解方法为LBFGS,SAG和NEWTON-CG。
1,penalty : str, 'l1' or 'l2', default: 'l2':正则项,默认为l2。三种求解方式只支持L2
2,dual : bool, default: False:是否转化为对偶问题
3,C : float, default: 1.0:正则项系数的逆序,越大越过拟合。
4,fit_intercept : bool, default: True:是否添加常数到决策函数中
5,intercept_scaling : float, default 1:是否对样本采样
6,class_weight : dict or 'balanced', default: None:类别权重
7,max_iter : int, default: 100:最大迭代次数
8,random_state : int seed, RandomState instance, default: None:随机种子
9,solver : {'newton-cg', 'lbfgs', 'liblinear', 'sag'}, default: 'liblinear':优化问题求解算法
10,multi_class : str, {'ovr', 'multinomial'}, default: 'ovr':多分类问题的求解方案
1, 线性分类器与非线性分类器的区别以及优劣
如果模型是参数的线性函数,并且存在线性分类面,那么就是线性分类器,否则不是。线性分类器可解释性好,
计算复杂度较低,不足之处是模型拟合效果相对弱些。非线性分类器拟合能力较强,不足之处是数据量不足容易过拟合,计算复杂度高,可解释性不好。线性分类器有三大类:感知器准则函数,SVM,Fisher准则,而贝叶斯分类器不是线性分类器。
1.感知准则函数:准则函数以使错分样本到分界面距离之和最小为原则。其优点是通过错分样本提供的信息对分类器函数进行修正,这种准则是人工神经元网络多层感知器的机车。
2.支持向量机:基本思想是在两类线性可分条件下,所设计的分类器界面使两类之间的间隔为最大,它的基本出发点是使期望风险尽可能小(使用核函数可解决非线性问题)。
3.Fisher准则:更广泛的称呼是线性判别分析(LDA),将所有样本投影到一条远点出发的直线,使得同类样本距离尽可能小,不同类样本尽可能大,具体为最大化“广义瑞利熵”。
常见的线性分类器有:LR,贝叶斯分类,单层感知机、线性回归
常见的非线性分类器:决策树、RF、GBDT、多层感知机SVM两种都有(看线性核还是高斯核)
2, 为什么LR要使用Sigmod函数?
说到底源于sigmoid,最大熵的性质。熵用在概率分布上可以表示这个分布中所包含的不确定度,熵越大不确定度越大。所以,均匀分布熵最大,因为基本新数据是任何值的概率都均等。而我们现在关心的是,给定某些假设之后,熵最大的分布。也就是说这个分布应该在满足我假设的前提下越均匀越好。比如大家熟知的正态分布,正是假设已知mean和variance后熵最大的分布。回过来看logistic regression,这里假设了什么呢?首先,我们在建模预测 Y|X,并认为 Y|X 服从伯努利分布,所以我们只需要知道 P(Y|X);其次我们需要一个线性模型,所以P(Y|X) = f(wx)。接下来我们就只需要知道 f 是什么就行了。而我们可以通过最大熵原则推出的这个 f,就是sigmoid。其实前面也有人剧透了伯努利分布的指数函数族形式,也即是 1/ (1 + e^-z)
3,何为共线性, 跟过拟合有啥关联?
共线性:多变量线性回归中,变量之间由于存在高度相关关系而使回归估计不准确。多重共线性是指线性回归模型中的解释变量之间由于存在精确相关关系或高度相关关系而使模型估计失真或难以估计准确。多重共线性使参数估计值的方差增大,1/(1-r2)为方差膨胀因子(Variance Inflation Factor, VIF)如果方差膨胀因子值越大,说明共线性越强。相反 因为,容许度是方差膨胀因子的倒数,所以,容许度越小,共线性越强。可以这样记忆:容许度代表容许,也就是许可,如果,值越小,代表在数值上越不容许,就是越小,越不要。而共线性是一个负面指标,在分析中都是不希望它出现,将共线性和容许度联系在一起,容许度越小,越不要,实际情况越不好,共线性这个“坏蛋”越强。进一步,方差膨胀因子因为是容许度倒数,所以反过来。
(1)完全共线性下参数估计量不存在
(2)近似共线性下OLS估计量非有效
(3)参数估计量经济含义不合理
(4)变量的显著性检验失去意义,可能将重要的解释变量排除在模型之外
(5)模型的预测功能失效。变大的方差容易使区间预测的“区间”变大,使预测失去意义。
(6)共线性会造成冗余,导致过拟合。
解决方法:
(1)排除变量的相关性/加入权重正则
(2)排除引起共线性的变量,找出引起多重共线性的解释变量,将它排除出去,以逐步回归法得到最广泛的应用。
(3)差分法,时间序列数据、线性模型:将原模型变换为差分模型。
(4)减小参数估计量的方差:岭回归法(Ridge Regression)。
4, 如何判断函数凸或非凸?
首先定义凸集,如果x,y属于某个集合C,并且所有的 也属于c,那么c为一个凸集,进一步,如果一个函数其定义域是凸集,则该函数为凸函数。上述条件还能推出更一般的结果,如果函数有二阶导数,那么如果函数二阶导数为正,或者对于多元函数,Hessian矩阵半正定则为凸函数。(也可能引到SVM,或者凸函数局部最优也是全局最优的证明,或者上述公式期望情况下的Jessen不等式)。
5,L1和L2正则的区别,如何选择L1和L2正则?L1在0处不可导,怎么处理
他们都是可以防止过拟合,降低模型复杂度
L1是在loss function后面加上模型参数的1范数(也就是|xi|)L0范数的最小化问题在实际应用中是NP难问题,无法实际应用
L2是在loss function后面加上模型参数的2范数(也就是sigma(xi^2)),注意L2范数的定义是sqrt(sigma(xi^2)),在正则项上没有添加sqrt根号是为了更加容易优化
L1 会产生稀疏的特征
L2 会产生更多地特征但是都会接近于0
L1会趋向于产生少量的特征,而其他的特征都是0,而L2会选择更多的特征,这些特征都会接近于0。L1在特征选择时候非常有用,而L2就只是一种规则化而已。
L1对应拉普拉斯分布,L2对应高斯分布,L1偏向于参数稀疏性,L1不可导可以使用近似算法或者ADMM来解决
6,为什么一些机器学习模型需要对数据进行归一化?
归一化化就是要把你需要处理的数据经过处理后(通过某种算法)限制在你需要的一定范围内。
1)归一化后加快了梯度下降求最优解的速度。等高线变得显得圆滑,在梯度下降进行求解时能较快的收敛。如果不做归一化,梯度下降过程容易走之字,很难收敛甚至不能收敛
2) 把有量纲表达式变为无量纲表达式, 有可能提高精度。一些分类器需要计算样本之间的距离(如欧氏距离),例如KNN。如果一个特征值域范围非常大,那么距离计算就主要取决于这个特征,从而与实际情况相悖(比如这时实际情况是值域范围小的特征更重要)
3) 逻辑回归等模型先验假设数据服从正态分布。
4) 归一化的类型有线性归一化、标准差归一化、非线性归一化
7, 归一化和标准化的区别?
归一化:
1)把数据变成(0,1)之间的小数
2) 把有量纲表达式变成无量纲表达
常见的有线性转换、对数函数转换、反余切函数转换等
标准化:
数据的标准化(normalization)是将数据按比例缩放,使之落入一个小的特定区间。在某些比较和评价的指标处理中经常会用到,去除数据的单位限制,将其转化为无量纲的纯数值,便于不同单位或量级的指标能够进行比较和加权。
1 ) 最小-最大规范化(线性变换)
y=((x-MinValue) / (MaxValue-MinValue))(new_MaxValue-new_MinValue)+new_minValue
2)z-score规范化(或零-均值规范化)
y=(x-X的平均值)/X的标准差
3)小数定标规范化:通过移动X的小数位置来进行规范化
y= x/10的j次方(其中,j使得Max(|y|) <1的最小整数
4)对数Logistic模式: 新数据=1/(1+e^(-原数据))
5)模糊量化模式: 新数据=1/2+1/2sin[3.1415/(极大值-极小值)]