京公网安备 11010802034615号
经营许可证编号:京B2-20210330
广义线性模型中的Gauss Seidel 迭代算法实现
数值模拟的算法迭代公式推导
R代码实现
根据以上公式,代入迭代步骤,即可实现算法。
##------数据模拟--------
library(MASS)
##mvrnorm()
##定义一个产生多元正态分布的随机向量协方差矩阵
Simu_Multi_Norm<-function(x_len, sd = 1, pho = 0.5){
#初始化协方差矩阵
V <- matrix(data = NA, nrow = x_len, ncol = x_len)
#mean及sd分别为随机向量x的均值和方差
#对协方差矩阵进行赋值pho(i,j) = pho^|i-j|
for(i in 1:x_len){ ##遍历每一行
for(j in 1:x_len){ ##遍历每一列
V[i,j] <- pho^abs(i-j)
}
}
V<-(sd^2) * V
return(V)
}
##产生模拟数值自变量X
set.seed(123)
X<-mvrnorm(n = 200, mu = rep(0,10), Simu_Multi_Norm(x_len = 10,sd = 1, pho = 0.5))
##产生模拟数值:响应变量y
beta<-c(1,2,0,0,3,0,0,0,-2,0)
#alpha<-0
#prob<-exp(alpha + X %*% beta)/(1+exp(alpha + X %*% beta))
prob<-exp( X %*% beta)/(1+exp( X %*% beta))
y<-rbinom(n = 200, size = 1,p = prob)
##产生model matrix
mydata<-data.frame(X = X, y = y)
#X<-model.matrix(y~., data = mydata)
##包含截矩项的系数
#b_real<-c(alpha,beta)
b_real<-beta
#define the log-likelihood function
loglikelihood<-function(X, y, b){
linear_comb<-as.vector(X %*% b)
ll<-sum(y*linear_comb) + sum(log(1/(1+exp(linear_comb))))
return (ll)
}
##初始化系数
b0<-rep(0,length(b_real))
#b0<- b_real+rnorm(length(b_real), mean = 0, sd = 0.1)
##b1用于记录更新系数
b1<-b0
##b.best用于存放历史最大似然值对应系数
b.best<-b0
# the initial value of loglikelihood
ll.old<-loglikelihood(X = X,y = y, b = b0)
# initialize the difference between the two steps of theta
diff<-1
#record the number of iterations
iter<-0
#set the threshold to stop iterations
epsi<-1e-10
#the maximum iterations
max_iter<-10000
#初始化一个列表用于存放每一次迭代的系数结果
b_history<-list(data.frame(b0))
#初始化列表用于存放似然值
ll_list<-list(ll.old)
#-------Gauss-Seidel 迭代-------
while(diff > epsi & iter < max_iter){
for(j in 1:length(b_real)){
#对j循环,对每个系数最优化
#线性部分
linear_comb<-as.vector(X %*% b0)
#分子
nominator<-sum(y*X[,j] - X[,j] * exp(linear_comb)/(1+exp(linear_comb)))
#分母,即二阶导部分
denominator<- -sum(X[,j]^2 * exp(linear_comb)/(1+exp(linear_comb))^2)
#
b0[j]<-b0[j] - nominator/denominator
#更新似然值
ll.new<- loglikelihood(X = X, y = y, b = b0)
# #若似然值有所增加,则将当前系数保存
if(ll.new > ll.old){
#更新系数
b.best[j]<-b0[j]
}
#求差异
diff<- abs((ll.new - ll.old)/ll.old)
ll.old <- ll.new
iter<- iter+1
b_history[[iter]]<-data.frame(b0)
ll_list[[iter]]<-ll.old
##当达到停止条件时,跳出循环
if(diff < epsi){
break
}
}
}
b_hist<-do.call(rbind,b_history)
#b_hist
ll_hist<-do.call(rbind,ll_list)
#ll_hist
#
iter
##
ll.best<-max(ll_hist)
ll.best
##
b.best
##---------glm()验证-------
my_glm<-glm(y~0 + X.1 + X.2 + X.3+ X.4+ X.5+ X.6+ X.7+ X.8+ X.9+ X.10,
data = mydata,family = binomial(link = "logit"))
summary(my_glm)
coeff_glm<-my_glm$coefficients
cbind(coeff_glm,b.best,b_real)
迭代结果如下:
迭代206步收敛,系数结果非常接近R内部函数glm()运行的结果,甚至稍好于这一结果。
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
在数字化时代,企业的每一次业务优化、每一项技术迭代,都需要回答一个核心问题:这个动作到底能带来多少价值?是提升了用户转化 ...
2026-05-15在数据仓库建设中,事实表与维度表是两大核心组件,二者相互关联、缺一不可,共同构成数据仓库的基础架构。事实表聚焦“发生了什 ...
2026-05-15 很多数据分析师沉迷于复杂的机器学习算法,却忽略了数据分析最基础也最核心的能力——描述性统计。事实上,80%的商业分析问 ...
2026-05-15【核心关键词】互联网、机会、运营、关键词、账户、数字化、后台、客户、成本、网络、数据分析、底层逻辑、市场推广、数据反馈、 ...
2026-05-14在Python数据分析中,Pandas作为核心工具库,凭借简洁高效的数据处理能力,成为数据分析从业者的必备技能。其中,基于两列(或多 ...
2026-05-14 很多人把统计学理解为“一堆公式和计算”,却忽略了它的本质——一门让数据“开口说话”的科学。真正的数据分析高手,不是会 ...
2026-05-14在零售行业存量竞争日趋激烈的当下,客户流失已成为侵蚀企业利润的“隐形杀手”——据行业数据显示,零售企业平均客户流失率高达 ...
2026-05-13当流量红利消退、用户需求日趋多元,“凭经验决策、广撒网投放”的传统营销模式早已难以为继。大数据的崛起,为企业营销提供了全 ...
2026-05-13 许多数据分析师精通Excel函数和SQL查询,但当面对一张上万行的销售明细表,要快速回答“哪个地区销量最高”“哪款产品增长最 ...
2026-05-13【专访摘要】本次CDA持证专访邀请到拥有丰富物流供应链数据分析经验的赖尧,他结合自身在京东、华莱士、兰格赛等企业的从业经历 ...
2026-05-12在手游行业存量竞争日趋激烈、流量成本持续高企的当下,“拉新”早已不是行业核心痛点,“留存”尤其是“付费留存”,成为决定手 ...
2026-05-12 很多数据分析师掌握了Excel函数、会写SQL查询,但当被问到“数据从哪里来”“数据加工有哪些步骤”“如何使用分析工具连接数 ...
2026-05-12用户调研是企业洞察客户需求、优化产品服务、制定运营策略的核心前提,而调研数据的可靠性,直接决定了决策的科学性与有效性。在 ...
2026-05-11在市场竞争日趋激烈、流量成本持续攀升的今天,企业的核心竞争力已从“获取流量”转向“挖掘客户价值”。客户作为企业最宝贵的资 ...
2026-05-11 很多数据分析师精通Excel单元格操作,熟练应用多种公式,但当被问到“表结构数据的基本处理单位是什么”“字段和记录的本质 ...
2026-05-11在互联网运营、产品优化、用户增长等领域,次日留存率是衡量产品价值、用户粘性与运营效果的核心指标,更是判断新用户是否认可产 ...
2026-05-09相关性分析是数据分析领域中用于探究两个或多个变量之间关联强度与方向的核心方法,广泛应用于科研探索、商业决策、医疗研究、社 ...
2026-05-09 数据分析师八成以上的时间在和数据表格打交道,但许多人拿到Excel后习惯性地先算、先分析,结果回头发现漏了一列关键数据, ...
2026-05-09在数据驱动运营的时代,指标是连接业务目标与实际行动的核心桥梁,是企业解读业务现状、发现问题、预判趋势的“量化标尺”。一套 ...
2026-05-08在存量竞争日趋激烈的商业时代,“以客户为中心”早已从口号落地为企业运营的核心逻辑。而客户画像作为打通“了解客户”与“服务 ...
2026-05-08