逻辑回归算法梳理

  • 逻辑回归与线性回归的联系与区别
    联系:逻辑回归是一种广义的线性回归模型。
    区别:线性回归w’x+b逼近y,逻辑回归w’x+b逼近y的对数几率函数,多了一个Sigmoid函数,使样本能映射到[0,1]之间的数值,用来做分类问题。不同的就是因变量不同,如果是连续的,就是多重线性回归,如果是二项分布,就是logistic回归。线性回归用来预测,逻辑回归用来分类。线性回归是拟合函数,逻辑回归是预测函数。线性回归的参数计算方法是最小二乘法,逻辑回归的参数计算方法是梯度下降。
  • 逻辑回归原理
    通过sigmoid函数,将线性函数转化为非线性函数
    逻辑回归算法梳理
    可以把任何连续的值映射到[0,1]之间,数越大越趋向于0,越小越趋近于1。
  • 逻辑回归损失函数推导及优化
    逻辑回归算法梳理
  • 正则化与模型评估指标
    加入惩罚因子,逻辑回归算法梳理逻辑回归算法梳理
    评估指标:
    误差平方和
    逻辑回归算法梳理
    同样的数据集的情况下,SSE越小,误差越小,模型效果越好。
    决定系数:
    逻辑回归算法梳理
    分母理解为原始数据的离散程度,分子为预测数据和原始数据的误差,二者相除可以消除原始数据离散程度的影响。越接近1,表明方程的变量对y的解释能力越强,这个模型对数据拟合的也较好。越接近0,表明模型拟合的越差。
  • 逻辑回归的优缺点
    优点:
    1)预测结果是界于0和1之间的概率;
    2)可以适用于连续性和类别性自变量;
    3)容易使用和解释。
    缺点:
    1)不能解决非线性问题,高度依赖数据的正确表示;
    2)容易欠拟合,分类精度不高;
    3)数据特征有缺失或者特征空间很大时表现效果并不好。
  • 样本不均衡问题解决办法
    1)扩大数据集
    2)尝试其它评价指标
    3)对原始数据的权值进行改变
    4)通过组合集成方法解决
    通过训练多个模型的方式解决数据不均衡的问题,是指将多数类数据随机分成少数类数据的量N份,每一份与全部的少数类数据一起训练成为一个分类器,这样反复训练会生成很多的分类器。最后再用组合的方式对分类器进行组合,得到更好的预测效果。
    5)通过特征选择
  • sklearn参数
    sklearn.tree.DecisionTreeClassifier
    (criterion=‘gini’, splitter=‘best’, max_depth=None, min_samples_split=2,
    min_samples_leaf=1,min_weight_fraction_leaf=0.0, max_features=None,
    random_state=None, max_leaf_nodes=None, min_impurity_decrease=0.0,
    min_impurity_split=None, class_weight=None, presort=False)
    criterion:特征选择的标准,有信息增益和基尼系数两种,使用信息增益的是ID3和C4.5算法(使用信息增益比),使用基尼系数的CART算法,默认是gini系数。
    splitter:特征切分点选择标准,决策树是递归地选择最优切分点,spliter是用来指明在哪个集合上来递归,有“best”和“random”两种参数可以选择,best表示在所有特征上递归,适用于数据集较小的时候,random表示随机选择一部分特征进行递归,适用于数据集较大的时候。
    max_depth:决策树最大深度,决策树模型先对所有数据集进行切分,再在子数据集上继续循环这个切分过程,max_depth可以理解成用来限制这个循环次数。
    min_samples_split:子数据集再切分需要的最小样本量,默认是2,如果子数据样本量小于2时,则不再进行下一步切分。如果数据量较小,使用默认值就可,如果数据量较大,为降低计算量,应该把这个值增大,即限制子数据集的切分次数。
    min_samples_leaf:叶节点(子数据集)最小样本数,如果子数据集中的样本数小于这个值,那么该叶节点和其兄弟节点都会被剪枝(去掉),该值默认为1。
    min_weight_fraction_leaf:在叶节点处的所有输入样本权重总和的最小加权分数,如果不输入则表示所有的叶节点的权重是一致的。
    max_features:特征切分时考虑的最大特征数量,默认是对所有特征进行切分,也可以传入int类型的值,表示具体的特征个数;也可以是浮点数,则表示特征个数的百分比;还可以是sqrt,表示总特征数的平方根;也可以是log2,表示总特征数的log个特征。
    random_state:随机种子的设置,与LR中参数一致。
    max_leaf_nodes:最大叶节点个数,即数据集切分成子数据集的最大个数。
    min_impurity_decrease:切分点不纯度最小减少程度,如果某个结点的不纯度减少小于这个值,那么该切分点就会被移除。
    min_impurity_split:切分点最小不纯度,用来限制数据集的继续切分(决策树的生成),如果某个节点的不纯度(可以理解为分类错误率)小于这个阈值,那么该点的数据将不再进行切分。
    class_weight:权重设置,主要是用于处理不平衡样本,与LR模型中的参数一致,可以自定义类别权重,也可以直接使用balanced参数值进行不平衡样本处理。
    presort:是否进行预排序,默认是False,所谓预排序就是提前对特征进行排序,我们知道,决策树分割数据集的依据是,优先按照信息增益/基尼系数大的特征来进行分割的,涉及的大小就需要比较,如果不进行预排序,则会在每次分割的时候需要重新把所有特征进行计算比较一次,如果进行了预排序以后,则每次分割的时候,只需要拿排名靠前的特征就可以了。