回归分析
回归分析是通过建立模型来研究变量之间的相互关系的密切程度、结构状态及进行模型预测的一种有效工具,在工商管理、经济、社会、医学和生物学等领域应用十分广泛。
从经典的回归分析方法到近代的回归分析方法,按照研究方法划分,回归分析研究的范围大致如下:
在数据挖掘环境下,自变量与因变量具有相关关系,自变量的值是已知的,因变量是要预测的。
常用回归模型:
回归模型名称 | 适用条件 | 算法描述 |
线性回归 | 因变量与自变量是线性关系 | 对一个或者多个自变量和因变量之间的线性关系进行建模,可用最小二乘法求解模型系数。 |
非线性回归 | 因变量与自变量之间不都是线性关系 | 对一个或者多个自变量和因变量之间的非线性关系进行建模。如果非线性关系可以通过简单的函数变换转化成线性关系,用线性回归的思想求解;如果不能转化,用非线性最小二乘法求解。 |
Logistic回归 | 因变量一般是1和0(是/否)两种取值。 | 是广义线性回归模型的特例,利用logistics函数将因变量的取值范围控制在0和1之间,表示取值为1的概率。 |
岭回归 | 参与建模的自变量之间具有多重共线性 | 是一种改进最小二乘估计的方法 |
主成分回归 | 参与建模的自变量之间具有多重共线性 | 主成分回归是根据主成分分析的思想提出了的,是对最小二乘法的一种改进,它是参数估计的一种有偏估计。可以消除自变量之间的多重共线性。 |
一、Logistic回归分析(逻辑回归)
(1)Logistic函数
(2)Logistic回归模型
(3)Logistic回归模型解释
(4)Logistic回归建模步骤
(4)实例
利用Scikit-Learn对这个数据进行逻辑回归分析。首先进行特征筛选,特征筛选的方法有很多,主要包含在Scikit-Learn的feature-selection库中,比较简单的有通过F检验(f_regression)来给出各个特征值的F值和p值,从而可以筛选变量(选择F值大的或者p值小的特征)。其次有递归特征消除(Recursive Feature Elimination, RFE)和稳定性选择(Stability Selection)等比较新的方法。这里使用了稳定性选择方法中的随机逻辑回归进行特征筛选,然后利用筛选后的特征建立逻辑回归模型,输出平均正确率。
#-*- coding: utf-8 -*-
# 逻辑回归 自动建模
import pandas as pd
# 参数初始化
filename = '../data/bankloan.xls'
data = pd.read_excel(filename)
x = data.iloc[:,:8].as_matrix()
y = data.iloc[:,8].as_matrix()
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_ 方法获取各个特征的分数
print(u'通过随机逻辑回归模型筛选特征结束')
print(u'有效特征为%s' % ','.join(data.columns[rlr.get_support()]))
x = data[data.columns[rlr.get_support()]].as_matrix() #筛选好特征
lr = LR() #建立逻辑回归模型
lr.fit(x, y) #用筛选后的特征数据来训练模型
print(u'逻辑回归模型训练结束')
print(u'模型的平均正确率为:%s' % lr.score(x, y)) #给出模型的平均正确率
输出:
从结果可以看出,采用随机逻辑回归剔除变量,分别剔除了x2、x8、x1、x5,最终构建的模型包含的变量为常量x3、x4、x6、x7。在建立随机逻辑回归模型时,使用了默认的阈值0.25,我们可以用RLR(selection_threshold=0.5)手动设置阈值。此外,在本例中,使用随机Lasso、甚至仅仅简单地采用F回归(f_rgression)也能得到类似的结果。
- 递归特征消除的主要思想是反复的构建模型(如SVM或者回归模型)然后选出最好的(或最差的)的特征(可以根据系数来选),把选出来的特征放到一边,然后在剩余特征上重复这个过程,直到遍历所有特征。这个过程中特征被消除的次序就是特征的排序。因此,这是一种寻找最优特征子集的贪心算法。Scikit-Learn提供了RFE包,可以用于特征消除,还提供了RFECV,可以通过交叉验证来对特征进行排序。
- 稳定性选择是一种基于二次抽样和选择算法相结合较新的方法。选择算法可以是回归、SVM或其他类似的方法。他的主要思想是在不同的数据子集和特征子集上运行特征选择算法,不断重复,最终汇总特征选择结果。比如,可以统计某个特征被认为是重要特征的频率(被选为重要特征的次数除以它所在的子集被测试的次数)。在理想情况下,重要特征的得分会接近100%。稍微弱一点的特征得分会是非0的数,而最无用的特征得分会接近于0。Scikit-Learn在随机Lasso和随机逻辑回归中有对稳定性选择的实现。
逻辑回归本质上还是一种线性模型,因此这里的模型有效性检验本质上还是在做线性相关检验,因此,所筛选出来的变量,说明与结果具有比较强的线性相关性,然而被筛掉的变量并不一定就跟结果没有关系,因为他们直接有可能是非线性关系。因此在实际问题中,还需要根据问题的实际背景对筛选结果进行分析。对于非线性关系的变量筛选方法有决策树、神经网络等。