逻辑回归算法LR
逻辑回归相信很多人都很熟悉,这个算法科能不如随机森林、SVM、神经网络、GBDT等分类算法那么复杂那么高深,但是绝不能小瞧这个算法,因为这个这个算法有几个优点是那几个算法无法达到的,一是逻辑回归算法已经比较成熟,预测较为准确;二是模型求出的系数易于理解,便于解释,不属于黑盒模型,尤其在金融业,80%的预测是使用逻辑回归;三是结果是概率值,可以做ranking model; 四是训练快。当然它也有缺点,分类较多的y都不是很适用;对于自变量的多重共线性比较敏感,所以需要利用因子分析或者聚类分析来选择代表性的自变量;另外,预测结果呈现S型,两端概率变化比较小,中间的概率变化比较大比较敏感,导致很多区间的变化对目标概率的影响没有区分度,无法确定阈值。下面我先具体介绍下这个模型。
一、逻辑回归LR介绍
首先要搞清楚当你的目标变量是分类变量时,才会考虑逻辑回归,并且主要用于二分类问题。举个例子说医生希望通过肿瘤的大小x1、长度x2、种类x3等特征来判断病人的肿瘤时恶性还是良性的,这是目标变量y就是分类变量(0良性肿瘤,1恶性肿瘤)。显然我们希望像保留线性回归一样可以通过一些列x与y之间的线性关系来进行预测,但是此时由于y时分类变量,它的取值只能是0,1或者0,1,2等,不可能时负无穷或者正无穷,这个问题怎么解决呢?此时引入一个sigmoid函数,这个函数的性质,非常好的满足了x的输入是负无穷到正无穷,而输出y总是【0,1】,并且当x=0时,y=0.5,以一种概率的形式表示。x=0时,y=0.5这是决策边界。当你确定肿瘤是良性还是恶性时,其实我们是要找出能够分开这两类样本的边界,叫决策边界。
而通过sigmoid函数,可以将我们喜欢的线性表示的函数嵌入其中,当theta*x得到的值大于0,则h(x)得到的概率值大于0.5时,表示属于该分类;当theta * x的值小于0,则h(x)小于0.5时表示不属于该分类。这样就形成了我们看到的逻辑回归,具体如下:
其theta是向量:
二、逻辑回归估计(最小化损失函数 loss function)
损失函数是在机器学习中经常出现的概念,用于衡量均方误差[(模型估计值-模型实际值)^2/n]最小,即预测的准确度,因而需要损失函数最小,得到的参数才最优。线性回归中的最小二乘估计也是由此而来)但是由于逻辑回归的这种损失函数非凸,不能找到全局最低点。因此,需要采用另一种方式,将其转化为最大似然,如下:
如果y=1,你胆敢给出一个h(x)很小的概率值如0.01,那么损失函数就会变得很大:
此时的损失函数就变成了凸函数,theta的求解,就是梯度下降法球最小值,此时引入正则项,是解决过拟合问题(过拟合问题:如果我们的模型有非常多的特征,模型很复杂,模型对原始数据的拟合效果很好,但是丧失一般性,对新的待预测样本预测效果很差)。那么怎么解决呢?限制参数theta,损失函数加上theta的限制,即如果theta 太多太大,则就给予惩罚。L2正则化
该公式将一直被迭代执行,直到达到收敛(J(theta)在每一步迭代中都减小,如果某一步减小的值小于某一个很小的阈值(小于0.001),则判定其收敛;或者达到某个停止条件为止(如迭代次数达到阈值或者算法达到某个可以允许的误差范围)。
三、评价指标roc曲线/auc值
模型的评价主要用ROC曲线。ROC曲线实际上是对概率输出设置一个门槛D,当P(C|x)>D时,事件C为真,而roc曲线反应了,在一系列可能门槛值下,真正率(TPR)和假正率(FPR)的值,一个好的模型必须在一个高的真正率和一个低的假正率中取得一个折中水平,即auc(area of roc :roc曲线下的面积)越大越好,最大值为1.
表1:混淆矩阵
| 预测值 | |||
|---|---|---|---|
| 真实值 | positive | negative | |
| positive | true positive (TP) | false negative(FN) | |
| negative | false positive(FP) | true negative(TN) |
TP(真正):被模型预测为正的正样本 FN(假负):被模型预测为负的正样本
FP(假正): 被模型预测为正的负样本 TN(真负):被模型预测为负的负样本
TPR = TP /(TP + FN) #正样本预测结果数 / 正样本实际数
FPR = FP / (FP + TN) #被预测为正的负样本结果数 /负样本实际数
FNR = FN / (FN + TP)
TNR = TN / (TN + FP)
图1:roc曲线
四、LR应用经验
如果连续变量,注意做标准化处理。LR对样本分布敏感,所以要注意样本的平衡性(y=1不能太少)样本量足的情况下采用下采样,不足的情况用上采样。
LR对于特征处理非常重要,常用的处理手段包括:通过组合特征引入个性化因素;注意特征的频度;聚类、分桶。但是LR不怕特征大,GBDT比较怕。对于连续变量的离散化,可以用cart(GBDT)查看离散的结果,生成新特征,最用LR。
LR和FM对于稀疏高维特征处理时无压力的,GBDT对于连续值自己会找到合适的切分点,xgboost也可以处理分类类型的特征,无需one-hot,平展开的高维稀疏特征对它没有好处。
算法调优方面,选择合适的正则化,正则化系数,收敛阈值e、迭代轮数,调整loss function给定不同权重;
LR和SVM 对于线性切分都有着比较好的表现,对于非线性切分,必须在原始数据上做一些非线性变换。LR必须做feature mapping,比如把x做个平方项,x1*x2等;SVM 则需要利用核函数