如何处理多重共线性逻辑回归和LDA ?

26日视图(30天)
大家好!我要用一个多项式逻辑回归数据集分类器和LDA分类器。然而,这些数据集包含两列是线性相关的,因为他们都是由0。因此,函数 B = mnrfit(数据集类) 我使用返回矩阵B由南元素,因为矩阵数据集不可逆的因为不是一个满秩矩阵。
我的想法被delecting克服多重共线性的线性相关的列和数据集一个可逆矩阵。然而,这可能会导致损失的信息和一个overfitted模型。
有其他方法可以克服多重共线性的数据集和应用逻辑回归?
我和LDA也有同样的问题,特别是我用下面的代码:
LDAmodel = fitcdiscr (X、类“DiscrimType”,“pseudolinear”);
W,λ= eig (LDAmodel。BetweenSigma LDAmodel.Sigma);
λ=诊断接头(λ);
(λ,排序方式)=排序(λ,“下”);
W = W(:,排序方式);
Z = X * W;
模型= fitcnb (Z,类);
使用pseudolinear参数,LDA连non-invertible矩阵,但当我使用这个函数 fitcnb MATLAB返回下列错误:
错误使用ClassificationNaiveBayes / findNoDataCombos
一个正态分布不能适合的组合类0 x1和预测。数据为零
方差。
错误在ClassificationNaiveBayes / fitNonMNDists(第320行)
distParams = findNoDataCombos(这个);
错误在ClassificationNaiveBayes(第108行)
这一点。DistributionParameters = fitNonMNDists(这个);
错误在classreg.learning。FitTemplate /适合(第291行)
[varargout {1: nargout}] = this.MakeFitObject (X, Y, W, this.ModelParams, fitArgs {:});
错误在ClassificationNaiveBayes。适合(第222行)
这=适合(temp, X, Y);
错误在fitcnb(第250行)
这= ClassificationNaiveBayes.fit (X, Y, RemainingArgs {:});
错误在脚本(第137行)
scalarmodel = fitcnb (Ztr Wtr);
与LDA我如何解决这个问题?
3评论
骑自行车的人
骑自行车的人 2023年2月1日
你描述的是一个更大问题的症状。如果列向量是线性相关的,那是一个极端的例子——这列的相关相关违反逻辑回归的一个假设。
在现实生活中的问题, 一些 相关性是不可避免的。但更大的关联性意味着你不会能够解释系数。(完全线性相关的极端的例子)。
取决于你所有解释变量的整体相关性结构是什么样的,你可能要做一些预处理步骤。例如,您可能想要使用主成分分析和因子分析在你的解释变量,以减少他们的一组变量是完全(或者至少是大部分)不相关的。
如果你不真正关心的回归系数的解释,只关心预测能力,你可能不是想走向成熟的机器学习模型(通常不会对多重共线性的假设)。

登录置评。

答案(1)

瑜伽
瑜伽 2023年3月10日
@Picasso ,
有几种方法可以克服多重共线性在应用逻辑回归到一个数据集。这里有几个方法:
  1. 特征选择:减少多重共线性的方法之一是只选择最重要的功能逻辑回归模型。这可以通过使用技术,如相关性分析,功能重要性排名,或专业领域。
  2. 正则化:正则化技术如岭回归和套索也可以用来克服多重共线性。这些方法添加一个惩罚项逻辑回归目标函数,这有助于降低系数的大小,避免过度拟合。
  3. 主成分分析(PCA):主成分分析是一种降维技术,可用于减少变量的数据集的数量,同时捕获的大部分方差数据。通过创建新变量是原始变量的线性组合,主成分分析可以减少多重共线性的逻辑回归模型的影响。