一 什么是逻辑回归
首先,LR虽然名字里有回归,但它并不是解决回归问题,而是解决分类问题的。
另外,有人会问,为线性回归提供阈值来做分类不可以吗? 不可以,因为阈值是无法准确定义,模型是容易被样本数据拉偏的。 之所以LR是个分类问题,
却被叫做回归,因为它利用了sigmoid函数。 sigmoid 可以将数据(LR中指输出y)压缩到[0, 1]之间,它经过一个重要的点(0, 0.5)。这样,将输出压缩到[0,1]之间,
0.5作为边界值,大于0.5作为一类,小于0.5作为另一类。 对应边界的自变量是0. 而0可以作为一条曲线线上点的值,例如y = a*x + b直线上的点值为0. 所以可以
将一条曲线作为输入作为sigmoid的自变量,这样又利用到了线性回归的知识。 所以逻辑回归可以理解为线性回归和sigmoid的结合。
,
二 损失函数
模型 :
,
,
将自变量使用参数回归后交给sigmoid函数,这就是逻辑回归的模型函数
则z =
是判定边界(有高次项时是非线性判定边界,否则是线性判定边界),因为这是模型输出值0.5的分界。
是判定边界(有高次项时是非线性判定边界,否则是线性判定边界),因为这是模型输出值0.5的分界。
损失函数
使用的loss function:
, 这样,y值偏差越大(h 与y偏差大)时,loss会很大
则
加上正则化项:
GD 参数迭代:
三 特色
1. LR分类是,将样本分开就停止迭代,决策边界不唯一; svm会选择一个更加健壮的决策边界
2. LR输出概率,是一个0~1之间的概率,所以适合做ranking model; svm只能输出分类结果,当然可以计算预测点到超平面的距离
3. 训练快; 添加特征简单
四 使用说明
1. 工业使用中很少使用高次项(二次项都较少使用),可能会使用多个线性逼近
2. 如果连续变量,注意做SCALING,缩放单位即标准化。LR对样本分布敏感,所以要注意样本的平衡性(y=1不能太少)样本量足的情况下采用下采样,不足的情况用上采样。
3.LR对于特征处理非常重要,常用处理手段包括,通过组合特征引入个性化因素(FM,FFM);注意特征的频度;聚类、HASH。但LR不怕特征大,GBDT比较怕。对于连续变量的离散化,可以用CART查看离散的结果,生成新的特征,再用LR。
4.LR和FM对于稀疏高维特征处理是无压力的,GBDT对于连续值自己会找到合适的切分点,xgboost也可以处理category类型的feature,无需one-hot,平展开的高维稀疏特征对它没好处。
5.算法调优方面,选择合适的正则化,正则化系数,收敛阈值e,迭代轮数,调整loss function给定不同权重;bagging或其他方式的模型融合;最优算法选择(‘newton-cg’,’lbfgs’, ‘liblinear’);bagging或其他模型融合。Sklearn中的LR实际上是liblinear的封装。
6.LR和SVM对于线性切分都有着比较好的表现,对于非线性切分,必须在原始数据上做一些非线性变换。LR必须做feature mapping,比如把X做个平方项,X1*X2等;SVM则需要利用核函数
7. 本人代码可以参考: https://github.com/liuleigit/ML_tutorial/LogicRegression
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/9354.html