首页 > 编程知识 正文

python gui,逻辑回归解决多重共线性

时间:2023-05-06 09:05:36 阅读:10821 作者:2008

python中多重共线性的解决方法本文讨论多重共线性的相关概念,以及如何利用python自动化消除多重共线性。 为了参考,欢迎敲砖头

关于线性模型、非线性模型、线性模型的定义,似乎没有确切的定论,但就个人而言,建模首先要清楚地认识样本。 样本分为线性不可分和线性不可分两种,线性不可分是指是否存在分离样本的直线(或平面)。

上图中y=0和y=1的样本可以一条直线划分,例如逻辑回归模型的最佳应用样本为上图样本; 如果样本不可线性分离,则决策树等模型可以更有效地分离样本,此时选择逻辑回归分类的结果可能较差。

在上图中的示例中,使用逻辑回归可能会产生不良的分类效果。 但是如果将特征映射到更高维的空间,

上式在二维直角坐标系中表示为圆,可以分离图中的样品。

所以总的来说

选择哪个模型取决于数据本身,线性可分离数据使用线性可分离数据的线性模型(如逻辑回归)可以获得更好的分类效果,线性不可分离数据不适合。 在传统线性模型中,可以通过将特征映射到高维空间来实现线性分离数据的目的。 例如,SVM采用核技术,逻辑回归加上原特征的高维变换等。 多重共线性对线性回归和逻辑回归的影响多重共线性是指在变量空间中存在自变量与另一自变量近似相等的线性组合:

y约等于W1X1 W2X2 … Wn*Xn

在这种情况下,如果将所有参数用于线性回归或逻辑回归建模,则模型系数将无法准确表达参数对y的影响。 例如,如果X1和X2大致相等,则模型Y=X1 X2可能被伪合成为Y=3 X1 - X2,X2和y的正向相关被错误地伪合成为负向相关,模型在业务上无法解释。 在记分卡建模中,许多相关变量可能被添加到建模参数中,最终得到的模型不适合用变量系数说明参数与目标变量的关系。

VIF和相关系数相关矩阵是由样本相关系数组成的矩阵,自变量的相关系数过大意味着存在共线性,同时信息冗馀,维数增加。 设定相关系数的阈值,如果大于threshold,则删除IV值小的变量(IV值的定义和计算将在后面叙述)。

在VIF(varianceinflationfactors ) VIF=1/(1-R^2)式中,r^2是以xj为因变量时向其他自变量回归的复测量系数. VIF越大,该变量与其他变量的关系越高,多重共线性越严重。 如果所有变量的最大VIF超过10,则删除最大VIF的变量。

解决方案(使用statsmodels.stats )利用相关系数删除相关性过高的变量(df中的变量必须按IV值从大到小的顺序进行排序)。

defget_var_no_colinear(cutoff, df ) : corr _ high=df.corr (.apply map ) lambdax : NP.nanifxcutoffelsex ).isnull ) col _ all=corr _ high=60,I][I1:].index[NP.where ) corr] I ) I ) [ I 1: ].to list (forvarinex _ index : col _ all.removove

importnumpyasnpimportpandasaspdfromstatsmodels.stats.outliers _ influenceimportvariance _ inflation _ factor #在每个循环中计算vvied thres=10.0 ) :col=list(range(x.shape[1] ) dropped=truewhiledropped 3360 dropped=false Vif=[ variance _ ] col].shape[1](maxvif=max(vif ) maxix=vif.index ) maxvifthres : delcol (maxix ) print ) ' deletetexvifthres maxv if (dropped=true print (remain variables 3360 ),list(x.columns[col] ) ) vif3360 ),vist )。 请一起讨论哦。 值的定义和计算稍后再说

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。