R语言组lasso改进逻辑回归变量选择分析高血压、易感因素、2型糖尿病和LDL可视化
全文链接:https://tecdat.cn/?p=33015
原文出处:拓端数据部落公众号
本文用逻辑回归和lasso算法医学上的疾病的相关因素,帮助客户确定哪种模型可用于某种疾病的相关因素分析。3个模型:Logistic模型、成组Lasso Logistic模型、由组Lasso选出协变量的Logistic模型,有3个易感因素、高血压、2型糖尿病和LDL,得出误差率和变量数目的图。
为了比较不同调整参数筛选解释变量的效果, 建立如下三个包含不同协变量的模型并通过十折交叉验证计算判断误差:
1)模型 I:包含所有待选协变量的 Logistic 模型;
2)模型 II:成组 Lasso Logistic 模型;
3)模型 III:仅包含由成组 Lasso 选出协变量的 Logistic 模型
查看数据变量
读取数据
data=read.spss("test1_3.sav", to.data.frame=T)
head(data)
1)模型I:包含所有待选协变量的Logistic模型;
包含所有待选协变量的Logistic模型是一种统计模型,用于预测二分类结果的概率。协变量是指与待预测结果相关的特征或变量。在这种模型中,使用了所有待选的协变量作为自变量,并基于这些自变量与待预测结果之间的关系,建立了一个数学模型。
具体而言,模型使用logistic函数(也称为sigmoid函数)来建立自变量和待预测结果之间的关系。logistic函数将自变量的线性组合映射到一个0到1之间的概率值,表示该样本属于某个特定类别的概率。
在构建模型时,需要确定每个协变量的系数(也称为权重),以及和结果之间的关系。通常使用最大似然估计方法来确定这些系数,以最大化模型对观测数据的拟合度。
该模型的目标是通过对待选协变量的使用,最大化对结果的预测准确性和可解释性。然而,选择合适的协变量需要基于领域知识、统计分析和模型评估等综合考虑。
需要注意的是,选择所有待选协变量并不意味着所有的协变量都是对结果有帮助的,也可能存在一些多余或不相关的协变量。因此,在模型构建过程中,还需要进行变量筛选、特征工程和模型评估等步骤来确保选择的协变量和模型的可靠性和精确性。
split <- sample(1:nrow(data),nrow(data)*(2/3))
data$HP=as.numeric(data$HP!=0)
HP ~.,family=binomial(link='logit'
混淆矩阵
混淆矩阵是用于评估分类模型性能的一种表格形式。它是由预测结果和实际结果组成的二维矩阵,其中行表示实际类别,列表示预测类别。每个单元格的值代表了在特定类别下的样本数量。
混淆矩阵的四个主要单元格包括:
- 真正例(True Positive, TP):预测为正例且实际也为正例的样本数量。
- 假正例(False Positive, FP):预测为正例但实际为负例的样本数量。
- 假反例(False Negative, FN):预测为负例但实际为正例的样本数量。
- 真反例(True Negative, TN):预测为负例且实际也为负例的样本数量。
通过混淆矩阵,我们可以计算出一些常用的分类模型评估指标,例如准确率(Accuracy)、精确率(Precision)、召回率(Recall)和 F1 值等。这些指标可以帮助我们了解模型在不同类别上的表现,并判断其分类能力的好坏。
res <- data.frame(real,predict =ifelse(predict>0.5,'good','bad'))
table(res)
auc
AUC (Area Under the Curve) 是一种常用的评估二分类模型性能的指标。它表示模型在不同阈值下的真阳性率(True Positive Rate,也称为召回率)与假阳性率(False Positive Rate)之间的关系。
AUC的取值范围在0到1之间,其中0.5表示模型的预测性能与随机猜测相当,而1表示模型完美地预测了正例和负例。
AUC的计算方法是首先将模型的预测结果按照概率从高到低进行排序,然后根据不同的阈值,计算出对应的真阳性率和假阳性率。最后,通过对这些真阳性率和假阳性率的数值进行积分,得到AUC的值。
AUC的优点是不受分类阈值的影响,能够全面评估模型的性能。它适用于不平衡数据集和多类别问题,并且对于数据集中存在噪声和异常值的情况也比较鲁棒。因此,AUC是评估和比较分类模型性能的重要指标之一。
performance( prediction( predict, real ), "auc" )@y.values[[1]]
## [1] 0.7642045
2)模型II:组Lasso Logistic模型;
组Lasso Logistic模型是一种用于分类问题的机器学习模型。它结合了Lasso回归和逻辑回归的方法。Lasso回归是一种用于特征选择和正则化的线性回归方法,它倾向于将参数稀疏化,即将一些参数设为零,从而获得更简单的模型。逻辑回归则是一种常用的分类算法,适用于二分类或多分类问题。
组Lasso Logistic模型通过结合Lasso回归和逻辑回归的思想,旨在同时实现特征选择和分类任务。它在建模过程中考虑了特征选择的问题,从而可以处理高维数据集中的冗余特征,并且能够在给定的特征集中选择出对分类任务最有用的特征。通过对损失函数进行优化,模型可以找到最佳的参数设置,以最大程度地减小预测错误,并增强模型的泛化能力。
组Lasso Logistic模型在许多实际应用中都表现出很好的性能。它在生物信息学、文本分类、图像识别和金融预测等领域都有广泛的应用。通过结合Lasso回归的特征选择能力和逻辑回归的分类能力,组Lasso Logistic模型能够提供更准确和可解释的分类结果。
##建立lasso模型
cv.lasso <- cv.ata_train$HP[1:nrow(xmat)] ) )
绘制误差
coef(cv.lasso
根据lasso筛选出最优的变量
Lasso(Least Absolute Shrinkage and Selection Operator)是一种用于变量选择和模型建立的统计方法。它通过对目标函数添加一个惩罚项,将某些变量的系数缩减为零,从而实现变量筛选和模型简化。
根据Lasso筛选出最优的变量的过程可以概括为以下几个步骤:
-
数据准备:将数据集分为训练集和测试集,用于模型的训练和评估。
-
模型建立:使用训练集数据,通过Lasso算法建立回归模型。Lasso算法通过最小化目标函数,其中包括了一个惩罚项,该项是变量系数的绝对值之和与一个常数的乘积。这个常数称为惩罚力度,用于控制变量收缩的程度。
-
变量筛选:根据Lasso算法的特点,它会将一些变量的系数收缩为零,从而将这些变量排除在最优模型之外。通过观察Lasso算法得到的变量系数,可以确定哪些变量被选中,即为最优的变量。
-
模型评估:使用测试集数据,对选中的最优变量建立回归模型进行评估。可以使用一些评估指标(如均方误差、决定系数等)来评估模型的性能。
总之,根据Lasso筛选出最优的变量是通过使用Lasso算法建立回归模型,并根据变量系数的收缩情况来确定哪些变量被选中,从而得到最优的变量组合。这可以帮助简化模型、提高预测准确性,并揭示出对目标变量具有显著影响的变量。
#筛选变量
data_train=data_train[,c(variables
=binomial(link='logit')
混淆矩阵
table(res)
lot( performance( prediction(
"auc" )@y.values[[1]]
## [1] 0.75
3)模型III:仅包含由成组Lasso选出协变量的Logistic模型。
仅包含由成组Lasso选出协变量的Logistic模型是一种统计模型,用于预测二元分类问题。在此模型中,使用了Lasso方法来选择协变量(也称为特征或自变量),该方法可以帮助确定对目标变量有最强预测能力的协变量。
Lasso方法是一种特征选择和正则化技术,它可以通过对模型中的系数进行惩罚,将某些系数推向零,从而实现变量选择的效果。这意味着,在仅包含由成组Lasso选出的协变量的Logistic模型中,只有少数对预测目标有重要影响的协变量被保留下来,而其他对预测目标没有重要影响的协变量则被排除。
Logistic模型是一种广泛应用于分类问题的模型。它使用逻辑函数(也称为sigmoid函数)来将输入特征映射到0和1之间的概率值,该概率值表示样本属于某个类别的可能性。在仅包含由成组Lasso选出的协变量的Logistic模型中,利用这些协变量的值来预测样本的分类标签。
这种模型在实际应用中具有一定的优势,因为它可以减少模型的复杂性和计算成本,同时提供准确的预测能力。然而,需要注意的是,选择哪些协变量是一个重要的决策,并且应该考虑相关领域的专业知识和实际需求。
reg(X, y ,colnames(data)[-14], penalty
select(fit, "AIC")
最受欢迎的见解
3.matlab中的偏最小二乘回归(PLSR)和主成分回归(PCR)
5.R语言回归中的Hosmer-Lemeshow拟合优度检验