常用的回归模型
线性回归
- 适用条件
因变量与自变量是线性关系 - 算法
对一个或多个自变量和因变量之间的线性关系进行建模,可用最小二乘法求解模型系数。
非线性回归
- 适用条件
因变量与自变量不都是线性关系 - 算法
对一个或多个自变量和因变量之间的非线性关系进行建模。如果非线性关系可以通过简单的函数转化为线性关系,用线性回归的思想求解;如果不能转化,用非线性最小二乘方法求解。
logistic回归(概率性非线性回归)
- 适用条件
因变量一般有1和0(是否)两种取值 - 算法
是广义线性回归模型的特例,利用Logistic函数将因变量的取值范围控制在0和1之间,表示取值为1的概率。
假设y取1的概率是 p = P ( y = 1 ∣ X ) \ p=P(y=1|X) p=P(y=1∣X),取0的概率是 1 − p \ 1-p 1−p,用 l n ( p 1 − p ) \ ln(\frac{p}{1-p}) ln(1−pp)和自变量列出线性回归方程,估计出模型中的回归系数;
图为Logistic回归模型的建模过程
可以利用Scikit-Learn对数据进行逻辑回归分析。首先进行特征筛选,特征筛选的方法有很多,主要包含在Scikit-Learn的feature_selection库中,比较简单的有通过F检验来给出各个特征的F值和p值,从而可以筛选变量(选择F值大的或者p值小的特征)。其次有递归特征消除(RFE)和稳定性选择(Stability Selection)等比较新的方法。
from sklearn.linear_model import LogisticRegression as LR
from sklearn.linear_model import RandomizedLogisticRegression as RLR
rlr = RLR() # 建立随机逻辑回归模型,筛选变量
rlr.fit(x,y) # 训练模型
rlr.get_support() # 获取特征筛选结果,也可以通过.scores_方法获取各个特征的分数
x = data[data.columns[rlr.get_support()]].as_matrix() # 筛选好特征
lr = LR() # 建立逻辑回归模型
lr.fit(x,y) # 用筛选后的特征数据来训练模型
print(u'模型的平均正确率为:%s' % lr.scores(x,y)) # 给出模型的平均正确率
逻辑回归本质上还是一种线性模型,因此这里的模型有效性检验本质上还是在做线性相关检验,因此,所筛选出来的变量,说明与结果具有比较强的线性相关性,然而被筛掉的变量并不一定就跟结果没有关系,因为它们之间有可能是非线性关系。
对于非线性关系的变量筛选方法有决策树、神经网络等。
岭回归
- 适用条件
参与建模的自变量之间具有多重共线性 - 算法
是一种改进最小二乘估计的方法
注释:多重共线性是指线性回归模型中的解释变量之间存在精确相关关系或高度相关关系而使模型估计失真或难以估计准确。
主成分回归
- 适用条件
参与建模的自变量之间具有多重共线性 - 算法
主成分回归是根据主成分分析的思想提出来的,是对最小二乘法的一种改进,它是参数估计的一种有偏估计。可以消除自变量之间的多重共线性。