logistic regression(用python实现)
一、 理论知识
logistic 回归,虽然名字里有 “回归” 二字,但实际上是解决分类问题的一类线性模型。在某些文献中,logistic 回归又被称作 logit 回归,maximum-entropy classification(MaxEnt,最大熵分类),或 log-linear classifier(对数线性分类器)。该模型利用函数 logistic function 将单次试验(single trial)的可能结果输出为概率。
scikit-learn 中 logistic 回归在 LogisticRegression 类中实现了二分类(binary)、一对多分类(one-vs-rest)及多项式 logistic 回归,并带有可选的 L1 和 L2 正则化。
注意,scikit-learn的逻辑回归在默认情况下使用L2正则化,这样的方式在机器学习领域是常见的,在统计分析领域是不常见的。正则化的另一优势是提升数值稳定性。scikit-learn通过将C设置为很大的值实现无正则化。
作为优化问题,带 L2罚项的二分类 logistic 回归要最小化以下代价函数(cost function):
m i n w , c 1 2 w T w + C ∑ i = 1 n log ( exp ( − y i ( X i T w + c ) ) + 1 ) . \underset{w, c}{min\,} \frac{1}{2}w^T w + C \sum_{i=1}^n \log(\exp(- y_i (X_i^T w + c)) + 1) .w,cmin21wTw+Ci=1∑nlog(exp(−yi(XiTw+c))+1).
类似地,带 L1 正则的 logistic 回归解决的是如下优化问题:
m i n w , c ∥ w ∥ 1 + C ∑ i = 1 n log ( exp ( − y i ( X i T w + c ) ) + 1 ) . \underset{w, c}{min\,} \|w\|_1 + C \sum_{i=1}^n \log(\exp(- y_i (X_i^T w + c)) + 1) .w,cmin∥w∥1+Ci=1∑nlog(exp(−yi(XiTw+c))+1).
Elastic-Net正则化是L1 和 L2的组合,来使如下代价函数最小:
min w , c 1 − ρ 2 w T w + ρ ∥ w ∥ 1 + C ∑ i = 1 n log ( exp ( − y i ( X i T w + c ) ) + 1 ) . \min_{w, c} \frac{1 - \rho}{2}w^T w + \rho \|w\|_1 + C \sum_{i=1}^n \log(\exp(- y_i (X_i^T w + c)) + 1) .w,cmin21−ρwTw+ρ∥w∥1+Ci=1∑nlog(exp(−yi(XiTw+c))+1).
其中ρ控制正则化L1与正则化L2的强度(对应于l1_ratio参数)。
注意,在这个表示法中,假定目标y_i在测试时