文章快速检索     高级检索
  北京化工大学学报(自然科学版)  2020, Vol. 47 Issue (2): 130-136   DOI: 10.13543/j.bhxbzr.2020.02.018
0

引用本文  

陈少东, 李志强. 海量数据广义线性模型变量选择算法研究[J]. 北京化工大学学报(自然科学版), 2020, 47(2): 130-136. DOI: 10.13543/j.bhxbzr.2020.02.018.
CHEN ShaoDong, LI ZhiQiang. A variable selection algorithm for generalized linear models of massive data[J]. Journal of Beijing University of Chemical Technology (Natural Science), 2020, 47(2): 130-136. DOI: 10.13543/j.bhxbzr.2020.02.018.

第一作者

陈少东, 男, 1994年生, 硕士生.

通信联系人

李志强, E-mail:li-zhiqiang2000@163.com

文章历史

收稿日期:2019-11-03
海量数据广义线性模型变量选择算法研究
陈少东 , 李志强     
北京化工大学 数理学院, 北京 100029
摘要:首先推导出了用于求解一般广义线性模型变量选择问题的非凸惩罚迭代估计算法,并利用分治思想对算法进行修正,使其能够适用于海量数据情形,以解决海量数据下进行变量选择时可能存在的内存溢出等问题。考虑到当前处理海量数据实际使用的工具,进一步给出了算法在分布式并行下的计算步骤,大幅提高了计算速度。在数值模拟中,通过单机和集群两种方式对算法进行数值计算,结果表明本文方法有效解决了数据存储问题且适用于分布式环境。最后,通过所提算法来完成Probit模型的变量选择,并将其用于新闻数据集的分类问题。
关键词海量数据    广义线性模型    变量选择    分治算法    
A variable selection algorithm for generalized linear models of massive data
CHEN ShaoDong , LI ZhiQiang     
College of Mathematics and Science, Beijing University of Chemical Technology, Beijing 100029, China
Abstract: We derive a non-convex penalty iterative estimation algorithm for solving the generalized linear model variable selection problem, and then use the divide-and-conquer principle to modify the algorithm so that it can be applied to massive data problems and solve the problem of memory overflow bottlenecks which are common with massive data. Compared with the tools currently used to process massive amounts of data, our algorithm's computation steps utilize distributed parallelism, which greatly improves the calculation speed. In subsequent numerical simulations, the algorithm was numerically calculated in two ways:stand-alone and cluster. The results show that our method effectively solves the data storage problem and is suitable for distributed environments. Finally, this algorithm was used to complete the variable selection of the Probit model and used for classification of news datasets.
Key words: massive data    generalized linear model    variable selection    divide-and-conquer    
引言

广义线性模型由Nelder等[1]在研究指数族分布时引入,该模型不仅能刻画连续型数据,还可刻画计数数据、属性数据等离散型数据,因此在医学、经济学以及社会科学等领域得到广泛应用。

随着数据时代的到来,数据呈现海量化趋势。数据海量化主要体现在两个方面:一是能获取的变量维度越来越高;二是可获取的观测样本越来越多。在数据量不是很大时,面对高维的变量如何进行变量选择的问题已得到了广泛的研究。在以往文献中,有许多研究人员利用惩罚函数进行变量选取,例如Tibshirani[2]提出的least absolute shrinkage and selection operator (Lasso)惩罚、Fan等[3]提出的smoothly clipped absolute deviation (SCAD)惩罚以及Zhang[4]提出的minimax concave penalty (MCP)惩罚等。

为了解决基于惩罚函数的广义线性模型变量选择问题,Breheny和Huang[5]给出一种基于坐标下降法的计算方法,该算法能有效求出模型局部最优解;然而,在海量数据环境下,由于该方法使用了全部海量数据进行迭代计算,导致出现计算效率较低甚至计算机存储空间不足等问题。为了克服这些瓶颈,需要探究新的估计算法来解决海量数据下广义线性模型的变量选择问题。

分治算法是在海量数据下估计统计模型参数的一类主流方法。目前已有部分文献利用分治算法研究海量数据下的统计模型。其中,Lin等[6]提出了一种解决海量数据非线性估计方程的估计方法;在变量选取方面,方方等[7]研究了海量数据下Logistic模型的平均算法;Chen等[8]给出了一种非凸惩罚下具有典则连接的广义线性模型的变量选择估计方法。基于分治算法处理海量数据的详细介绍可参考文献[9]。

然而,以上研究的相关工作还有待进一步深入,例如采用文献[7]中的模型平均估计方法难以进行高效的运算;文献[6]、文献[8]只研究了海量数据下具有典则连接的广义线性模型。但在实际建模应用中,大部分连接函数都是非典则连接,因此研究一般广义线性模型的惩罚估计具有更重要的现实意义。

本文基于文献[5]在Logistic模型下的估计方法,推导出一般广义线性模型在SCAD惩罚和MCP惩罚下的迭代公式,并将该方法推广到了海量数据下一般广义线性模型中。该方法避免了在迭代过程中一次性加载全部数据,从而有效地克服了基于原始海量数据的估计方法带来的计算机存储空间不足等问题。与此同时,考虑到当前在解决海量数据问题时,大部分处理工具采用分布式并行框架,本文结合分治算法与分布式计算的共同特征,给出了算法在Spark集群环境的计算步骤。模拟结果表明,估计算法在克服内存瓶颈的同时提高了计算效率,其估计精度要优于随机抽样得到的估计,而且能有效应用于集群环境。

1 广义线性模型及惩罚方法 1.1 广义线性模型

一般广义线性模型满足

$ \left\{ \begin{array}{l} f\left( {{y_i}} \right) = \exp \left\{ {\frac{{{y_i}{\theta _i} - b\left( {{\theta _i}} \right)}}{{a\left( \phi \right)}} + c\left( {{y_i},\phi } \right)} \right\}\\ E\left( {{y_i}} \right) = {\mu _i} = b'\left( {{\theta _i}} \right)\\ {\rm{Var}}\left( {{y_i}} \right) = \sigma _0^2V\left( {{\mu _i}} \right)\\ g\left( {{\mu _i}} \right) = \mathit{\boldsymbol{x}}_i^{\rm{T}}\mathit{\boldsymbol{\beta }} \end{array} \right. $ (1)

式中,f(·)为概率密度函数, yi$\mathbb{R}$为响应变量,xi$\mathbb{R}$p为观测变量,β$\mathbb{R}$p为未知参数,θ为典则参数,a(·)、b(·)、c(·)为已知函数,μi为均值函数,V(μi)为方差函数,g为连接函数,σ02为常数,i=1, …, N

为了估计模型的未知参数β,通常采用极大似然估计方法,其似然函数可表示为

$ l\left( \mathit{\boldsymbol{\beta }} \right) = \frac{1}{N}\sum\limits_{i = 1}^N {\left[ {\frac{{{y_i}{\theta _i} - b\left( {{\theta _i}} \right)}}{{a\left( \phi \right)}} + c\left( {{y_i},\phi } \right)} \right]} $ (2)
1.2 基于惩罚的变量选择

惩罚函数方法是一种常用的变量选择方法,在进行变量选择时,通过在式(2)上添加惩罚项,即可得到惩罚目标函数,现将其转化为极小化问题

$ {l_p}\left( \mathit{\boldsymbol{\beta }} \right) = - l\left( \mathit{\boldsymbol{\beta }} \right) + \sum\limits_{j = 1}^p {{p_{\lambda ,\gamma }}\left( {\left| {{\beta _j}} \right|} \right)} $ (3)

式中,βjβ的第j维分量。

SCAD惩罚和MCP惩罚是两种常用的非凸惩罚函数,与Lasso方法相比,这两种惩罚能保证Oracle性质,因此本文将围绕这两种惩罚方法进行研究。

1.2.1 SCAD惩罚函数

SCAD惩罚函数在βj∈[0, ∞)上定义为

$ {p_{\lambda ,\gamma }}\left( {{\beta _j}} \right) = \left\{ {\begin{array}{*{20}{l}} {\lambda {\beta _j},}&{{\beta _j} \le \lambda }\\ {\frac{{\gamma \lambda {\beta _j} - 0.5\left( {\beta _j^2 + {\lambda ^2}} \right)}}{{\gamma - 1}},}&{\lambda < {\beta _j} \le \gamma \lambda }\\ {\frac{{{\lambda ^2}\left( {{\gamma ^2} - 1} \right)}}{{2\left( {\gamma - 1} \right)}},}&{{\beta _j} \ge \gamma \lambda } \end{array}} \right. $ (4)

式中,λ≥0,γ>2。

βj较小时,SCAD和Lasso具有一样的惩罚力度;随着βj增大至λ,SCAD惩罚力度开始逐渐下降;当βj>γλ时,惩罚力度降为0。SCAD惩罚保留了Lasso惩罚的稀疏性等优点,并修正了Lasso惩罚过度压缩系数的问题。

1.2.2 MCP惩罚函数

MCP惩罚函数在βj∈[0, ∞)上定义为

$ {p_{\lambda ,\gamma }}\left( {{\beta _j}} \right) = \left\{ \begin{array}{l} \lambda {\beta _j} - \frac{{\beta _j^2}}{{2\gamma }},\;\;\;\;{\beta _j} \le \gamma \lambda \\ \frac{1}{2}\gamma {\lambda ^2},\;\;\;\;\;\;\;\;\;\;{\beta _j} > \gamma \lambda \end{array} \right. $ (5)

式中,λ≥0,γ>1。

MCP惩罚起初与Lasso惩罚有相等的惩罚力度,然后随着βj的增大,惩罚力度逐渐减小,当βj>γλ时,惩罚力度降到0。在高维线性回归中,MCP惩罚方法是一种几乎无偏且准确的变量选择方法。

1.2.3 Logistic模型惩罚估计方法

为了解决Logistic模型在上述两种惩罚下的估计问题,Breheny和Huang[5]结合了文献[10]给出的用于求解广义线性模型的迭代加权最小二乘法,将优化问题转化为线性模型下加权最小二乘的优化问题,然后采用以下方法进行估计。

设对数似然函数的第m次迭代的估计值为$\hat{\boldsymbol{\beta}}_{m}$,Logistic模型在$\boldsymbol{\beta}=\hat{\boldsymbol{\beta}}_{m}$处的近似惩罚似然函数为

$ \begin{array}{l} {l_p}\left( \mathit{\boldsymbol{\beta }} \right) \approx \frac{1}{{2N}}\sum\limits_{i = 1}^N {\left( {\begin{array}{*{20}{l}} {{{\tilde y}_{mi}} - \boldsymbol{x}_i^T{\boldsymbol{\beta }} ){w_{mi}}({{\tilde y}_{mi}} - \boldsymbol{x}_i^T{\boldsymbol{\beta }} ) + } \end{array}} \right.} \\ \sum\limits_{j = 1}^p {{p_{\lambda ,\gamma }}\left( {\left| {{\beta _j}} \right|} \right)} \end{array} $ (6)

式中,$\tilde{y}_{m i}=\boldsymbol{x}_{i}^{\mathrm{T}} \hat{\boldsymbol{\beta}}_{m}+\left(\hat{w}_{m i}\right)^{-1}\left(y_{i}-\hat{\boldsymbol{\mu}}_{m i}\right), \hat{w}_{m i}=\hat{\mu}_{m i}(1-\left.\hat{\mu}_{m i}\right), \hat{\mu}_{m i}$μi$\boldsymbol{\beta}=\hat{\boldsymbol{\beta}}_{m}$时计算得到的值。

Xj为第j个自变量所对应的整体观测值,$\hat{\mathit{\beta}}_{m j}$$\hat{\boldsymbol{\beta}}_{m}$的第j维分量,${\hat r_i} = {\left( {{{\hat w}_{mi}}} \right)^{ - 1}}\left( {{y_i} - {{\mathit{\boldsymbol{\hat \mu }}}_{mi}}} \right), \mathit{\boldsymbol{\hat r}} = $${\left( {{{\hat r}_1}, \cdots , {{\hat r}_N}} \right)^{\rm{T}}}, \mathit{\boldsymbol{W}} = {\mathop{\rm diag}\nolimits} \left( {{{\hat w}_{m1}}, \cdots , {{\hat w}_{mN}}} \right), {\hat v_j} = \frac{1}{N}\mathit{\boldsymbol{X}}_j^{\rm{T}}\mathit{\boldsymbol{WX}}$。为了求解式(6)的极小值,文献[5]给出具体估计步骤如下:

(1) 计算${z_j} = \frac{1}{N}\mathit{\boldsymbol{X}}_j^ \top \mathit{\boldsymbol{W\hat r}} + {\hat v_j}{\hat \beta _{mj}}$

(2) 更新${\hat \beta _{m + 1, j}} = \frac{{f\left( {{z_j}, \lambda , \gamma } \right)}}{{{v_j}}}$

(3) 更新残差$\mathit{\boldsymbol{\hat r}}$

(4) 基于坐标下降法重复步骤(1)~(3)直到收敛。

当惩罚函数为SCAD时,f(zj, λ, γ)满足

$ f = {f_{{\rm{SCAD}}}} = \left\{ {\begin{array}{*{20}{l}} {S({z_j},\lambda ),}&{\left| {{z_j}} \right| \le 2\lambda }\\ {\frac{{S({z_j},\lambda \gamma /(\gamma - 1))}}{{1 - 1/(\gamma - 1)}},}&{2\lambda < \left| {{z_j}} \right| \le \gamma \lambda }\\ {z,}&{\left| {{z_j}} \right| > \gamma \lambda } \end{array}} \right. $

当惩罚函数为MCP时,f(zj, λ, γ)满足

$ f = {f_{{\rm{MCP}}}} = \left\{ {\begin{array}{*{20}{l}} {\frac{{S\left( {{z_j},\lambda } \right)}}{{1 - 1/\gamma }},}&{\left| {{z_j}} \right| \le \gamma \lambda }\\ {{z_j},}&{\left| {{z_j}} \right| > \gamma \lambda } \end{array}} \right. $

这里,

$ S\left( {z,\lambda } \right) = \left\{ {\begin{array}{*{20}{l}} {z - \lambda ,}&{z > \lambda }\\ {0,}&{ - \lambda \le z \le \lambda }\\ {z + \lambda ,}&{z < - \lambda } \end{array}} \right. $
2 海量数据下一般广义线性模型的惩罚估计方法 2.1 一般广义线性模型下的惩罚估计

Logistic模型仅仅是广义线性模型中的一个特例,在实际问题中,因变量除了服从两点分布外,还可能服从多项分布、泊松分布等,且在建模时,大部分连接函数都是非典则连接。因此有必要进一步研究一般情形下的广义线性模型的估计方法。

在研究一般情形下的广义线性模型的惩罚估计方法时,为了降低非线性计算的复杂度,需要将广义线性模型线性化。根据文献[10]可知,对于广义线性模型对数似然函数,令${\tilde y_{mi}} = \mathit{\boldsymbol{x}}_i^{\rm{T}}{\mathit{{\widehat \beta }}_m} + \left( {{y_i} - {{\mathit{{\widehat \mu }}}_{mi}}} \right) \times {g^\prime }{\hat \mu _{mi}})$,此时$\operatorname{Var}\left(\tilde{y}_{m i}\right)=V\left({{\mathit{{\widehat \mu }}}_{mi}}\right)\left[g^{\prime}\left({{\mathit{{\widehat \mu }}}_{mi}}\right)\right]^{2}$,进一步令${\hat w_{mi}} = \frac{1}{{V\left( {{\mathit{{\widehat \mu }}}_{mi}} \right){{\left[ {{g^\prime }\left( {{\mathit{{\widehat \mu }}}_{mi}}\right)} \right]}^2}}}$,则有

$ l\left( \mathit{\boldsymbol{\beta }} \right) \approx \frac{1}{{2N}}\sum\limits_{i = 1}^N {\left( {{{\tilde y}_{mi}} - \mathit{\boldsymbol{x}}_i^{\rm{T}}\mathit{\boldsymbol{\beta }}} \right){{\hat w}_{mi}}\left( {{{\tilde y}_{mi}} - \mathit{\boldsymbol{x}}_i^{\rm{T}}\mathit{\boldsymbol{\beta }}} \right)} $ (7)

因此结合式(6)的惩罚函数和式(7),可以利用与式(6)类似的计算步骤得到一般广义线性模型的惩罚估计。

上述方法在求解过程中需要把所有的观测数据一次性加载到计算机内存当中,当观测数据量N很大时,可能会带来计算机内存不足等问题。因此,需要对该算法进行改进,以适应海量数据情形。

2.2 海量数据下一般广义线性模型的惩罚估计

为了解决海量数据下具有典则连接的广义线性模型的变量选择问题,Chen等[8]采用分治思想,给出了一种具有典则连接的广义线性模型的变量选择方法, 其基本思想是:首先将全部数据划分为K个互不相交的子数据集;接着分别求解每块子数据集下的变量选择及参数估计结果;然后通过投票的方式解决不同子数据集下选取的变量可能不同的问题,确定最终选取的变量;最后通过加权方式对K个估计结果进行聚合,将其作为最终估计结果。本文延续上述思路,给出了具有一般连接函数的广义线性模型变量选择的估计方法。

设全部观测数据为D={xi, yi}i=1N,将数据集D分为K块小数据集,不失一般性,设每一个子数据集有相同样本数n,每块子数据集记为Dk= $\left\{ {{{\boldsymbol{x}}_{ki}}, {y_{ki}}} \right\}_{i = 1\;k = 1}^{n\;\;\;\;K}$

为了求解第k块数据集Dk下的压缩统计量${\mathit{\boldsymbol{\widehat \beta }}_k}$,记XkjDk下第j个自变量所对应的观测值,${\mathit{\boldsymbol{\widehat \beta }}_{mk}}$为第m次迭代的估计值,${\widehat \beta _{mkj}}$${\mathit{\boldsymbol{\widehat \beta }}_{mk}}$的第j维分量,$g^{\prime}\left(\hat{\mu}_{m k i}\right)\left(y_{k i}-\hat{\mu}_{m k i}\right)$, ${\mathit{\boldsymbol{\widehat r}}_k} = {\left( {{{\hat r}_{k1}}, \cdots , {{\hat r}_{kn}}} \right)^{\rm{T}}}, {\hat w_{mki}} = $$\frac{1}{V\left(\hat{\mu}_{m h i}\right)\left[g^{\prime}\left(\hat{\mu}_{m k i}\right)\right]^{2}}, \hat{v}_{k j}=\frac{1}{n} \boldsymbol{X}_{k j}^{\top} \boldsymbol{W}_{k} \boldsymbol{X}_{k j}, \boldsymbol{W}_{k}=$${\mathop{\rm diag}\nolimits} \left( {{{\hat w}_{mk1}}, \cdots , {{\hat w}_{mkn}}} \right)$, 通过1.2.3节方法进行估计:

(1) 计算$z_{k j}=\frac{1}{n} \boldsymbol{X}_{k j}^{\mathrm{T}} \boldsymbol{W}_{k} \hat{\boldsymbol{r}}_{k}+\hat{v}_{k} \hat{\boldsymbol{\beta}}_{m k}$

(2) 更新$\hat{\beta}_{m+1, k j}=\frac{f_{k}\left(z_{k j}, \lambda, \gamma\right)}{v_{k j}}$

(3) 更新残差$\hat{\boldsymbol{r}}_{k}$

(4) 基于坐标下降法重复步骤(1)~(3)直到收敛。这里,$\hat{\boldsymbol{r}}_{k}, \hat{w}_{m k i}, \hat{v}_{k j}$均为$\mathit{\boldsymbol{\beta }} = {\mathit{\boldsymbol{\widehat \beta }}_{mk}}$时代入相应公式计算得到的值。

因为不同的子数据集选取的变量可能不同,所以可先采用投票方式确定选取的变量

$ {v_j} = \left\{ {\begin{array}{*{20}{l}} {1,}&{\sum\limits_{k = 1}^K I \left( {{{\hat \beta }_{kj}} \ne 0} \right) \ge w}\\ {0,}&{其他} \end{array}} \right. $ (8)

vj=1表明第j个变量被选中,否则剔除该变量, I(·)为示性函数,w∈(0, K]为阈值。设A={j|vj=1, j=1, …, p}为被选中变量集。令${\mathit{\boldsymbol{\widehat \beta }}_{Ak}}$表示由${\mathit{\boldsymbol{\widehat \beta }}_k}$的第j维分量组成的子向量,其中jA

为了对K个数据集上的估计结果${\mathit{\boldsymbol{\widehat \beta }}_{Ak}}$进行聚合,将似然函数的二阶近似导数${\mathit{\boldsymbol{S}}_k} = \sum\limits_{i = 1}^n {{\mathit{\boldsymbol{x}}_{ki}}} {\mathit{\boldsymbol{\hat w}}_{hi}}\mathit{\boldsymbol{x}}_{ki}^{\rm{T}}$k=1, …, K作为权重矩阵进行加权,得到最终的聚合估计结果

$ {{\mathit{\boldsymbol{\hat \beta }}}_{ANK}} = {\left( {\sum\limits_{k = 1}^K {{\mathit{\boldsymbol{S}}_{Ak}}} } \right)^{ - 1}}\sum\limits_{k = 1}^K {{\mathit{\boldsymbol{S}}_{Ak}}} {{\mathit{\boldsymbol{\hat \beta }}}_{Ak}} $ (9)

式中SAk=ATSkA。令v=diag(v1, …, vp),则A为由v的第{j|jA}列元素组成的子矩阵。

由式(9)可知,在变量选择及参数估计的实现过程中,仅需保留每个子数据集Dk上的压缩变量${\mathit{\boldsymbol{\widehat \beta }}_{Ak}}{\mathit{\boldsymbol{S}}_{Ak}}$即可得到整块数据集的近似估计。因为每个小数据集上的估计是独立的,所以对计算机性能的依赖大大降低,只需要能保证每个小数据集的估计能正常进行即可。

2.3 基于Spark集群的并行实现

当前处理海量数据的主流工具是基于分布式搭建的。分布式计算通过将一个大型计算任务拆分为多个子任务,然后将这些子计算任务分发给集群中的多个计算机节点进行计算,以此来完成并行化计算。

在本文所提算法的估计过程中,数据压缩是耗时最久、占用计算资源最多的步骤,然而基于分治算法,每个子数据集在进行数据压缩过程中是独立的,该特性使其适合以分布式方式实现。

Spark和Hadoop是目前处理海量数据的主流工具,借助Hadoop的存储框架HDFS对数据按块进行分布式存储,并采用适合处理迭代式计算的Spark计算框架,便能将该算法以并行的方式实现,从而提高计算效率。

并行计算流程如图 1所示,每个计算节点从HDFS中读取不同的数据块,然后以并行的方式对每一个子数据块上数据进行压缩,接着将所有数据块上的结果广播给主节点,让主节点完成聚合步骤,最后输出结果。

图 1 Spark并行流程 Fig.1 Parallel process of Spark
3 数值模拟

本节对算法进行数值模拟,以验证算法的有效性。有效性通过估计精度和时间消耗两个角度来衡量,模拟通过普通单机和Spark集群两种方式完成。选择常用的两点分布,即yi|xi~B(1, μi),其中μi通过以下两种方式来建模。

(1) 在典则连接下,即为常用的Logistic模型

$ \mu \left( {\mathit{\boldsymbol{x}}_i^{\rm{T}}{\mathit{\boldsymbol{\beta }}_0}} \right) = \frac{{exp\left( {\mathit{\boldsymbol{x}}_i^{\rm{T}}{\mathit{\boldsymbol{\beta }}_0}} \right)}}{{1 + exp\left( {\mathit{\boldsymbol{x}}_i^{\rm{T}}{\mathit{\boldsymbol{\beta }}_0}} \right)}},i = 1, \cdots ,N $

(2) 在非典则连接下,选择Probit模型

$ \mu \left( {\mathit{\boldsymbol{x}}_i^{\rm{T}}{\mathit{\boldsymbol{\beta }}_0}} \right) = \mathit{\Phi }\left( {\mathit{\boldsymbol{x}}_i^{\rm{T}}{\mathit{\boldsymbol{\beta }}_0}} \right),i = 1, \cdots ,N $

式中,Φ (·)为标准正态分布的累积函数。

模拟时选取的数据量N=106β0的维数为200,其中非零个数为24,自变量独立同分布,服从标准正态分布。

3.1 单机计算

本次实验在Ubuntu 16.0.4操作系统下,使用Python 3.7.0完成,计算机配置为CPU 3.40 GHz、内存8 G。所有实验重复50次取平均值作为最终结果。

为了检验估计效果,重新随机生成了100万个样本点,并将这些样本下的模型分类准确率作为估计效果的评价指标,结果如表 1所示。在所有的实验中,变量选取结果均是正确的非零变量。由表 1可以看出,Logistic模型的分类准确率可达0.928以上,Probit模型的分类准确率可达0.958以上,并且经过分块后,两个模型的分类准确率下降基本控制在0.1%内,这说明该估计的精确度较高且稳定。

下载CSV 表 1 分类准确率与分块数的关系 Table 1 Relationship between classification accuracy and number of blocks

表 2给出了单机环境下参数估计消耗的时间与分块数的关系。由表 2可知,随着分块数的增加,两个模型的参数估计过程所消耗的时间逐渐减少,这说明了分块方法在一定程度上可以提高模型参数的估计效率。

下载CSV 表 2 单机环境下计算时间与分块数关系 Table 2 Relationship between calculation time and number of blocks in a single machine environment

结合表 1表 2的实验结果,分块方法能够在保证分类准确率微小下降的情况下提升模型的参数估计效率。

表 3表 4给出了本文的聚合估计方法与随机抽样方法的估计结果对比。选取的评价指标为估计偏差,其计算公式为:设$\mathit{\boldsymbol{\widehat \beta }}$为估计结果,β0为真实值,则估计偏差定义为bias(β)= $\frac{{{{\left\| {{\mathit{\boldsymbol{\beta }}_0} - \mathit{\boldsymbol{\widehat \beta }}} \right\|}_1}}}{{{{\left\| {{\mathit{\boldsymbol{\beta }}_0}} \right\|}_1}}}$,这里‖·‖1为一范数。因模拟所用数据是随机产生的,所以可将分块后的每一块数据集下的估计结果视为一次以$\frac{1}{K}$的比例进行随机抽样得到的估计结果。由表中结果可知,两个模型的结果是一致的:固定分块数K的情况下,因为聚合方法使用了全部数据进行估计,所以其估计偏差要比基于随机抽样得到的估计偏差小。该结论表明:在计算机内存有限的情况下,采用聚合的估计方法总要优于随机抽样方法。

下载CSV 表 3 Logisitc下聚合方法与抽样方法偏差比较 Table 3 Comparison of aggregation method and sampling method with Logistic
下载CSV 表 4 Probit下聚合方法与抽样方法偏差比较 Table 4 Comparison of aggregation method and sampling method with Probit

抽样方法展示的是以$\frac{1}{K}$比例随机抽样得到的结果。

3.2 Spark集群计算

在海量数据环境下,实际上数据多数是以分布式的方式存储在多台计算机上。Spark是目前用于海量数据计算的主流分布式计算框架之一,本文通过Spark计算框架来完成模拟。实验在Ubuntu 16.0.4系统下,通过4台普通计算机组成的Spark集群来完成,计算环境为Python 3.7.0及Spark 2.3.2。其中,计算节点的配置为CPU 3.40 GHz、内存4 G。

表 5给出的是Spark集群下,模型参数估计消耗的时间与分块数的关系。由表 5可知,相比于单机环境,采用集群方法可以提高模型参数估计的效率,这也说明了分块方法在集群环境中的可行性。

下载CSV 表 5 Spark集群下计算时间与分块数的关系 Table 5 Relationship between calculation time and number of blocks in a Spark cluster
4 实证分析

选取搜狗实验室(https://www.sogou.com/labs)公开的2012年6月—7月科技板块和股票板块的新闻数据集建立Probit模型,以此来检验本文算法在实际应用中的可行性。其中随机抽取40 138条科技新闻和39 971条股票新闻用于估计模型参数,将剩余的9 844条科技新闻和4 437条股票新闻用于测试,将其分类准确度作为模型分类效果评价指标。

整个建模流程为:首先对新闻文本进行分词并过滤掉无用的停用词,然后通过term frequenc y- inverse document frequency (T F- IDF)方法将每个新闻文本转化为1 000维的词向量,最后通过本文算法完成Probit模型的变量选择。结果表明,采用MCP惩罚在测试集上得到的准确率为0.955 8,采用SCAD惩罚在测试集上得到的准确率为0.951 4。由以上结果可知,两种惩罚方法在实证数据集上都有较好的表现,对测试集的新闻分类准确度可达0.95以上,这也进一步证明了本文给出的方法对于解决实际问题是可行的。

5 结束语

本文研究了海量数据下一般广义线性模型的变量选择估计问题,结合分治思想与坐标下降法,给出了基于MCP惩罚和SCAD惩罚的估计方法,该方法有效降低了估计时对计算机内存的依赖,克服了计算时内存不足的瓶颈。数值模拟表明该方法能进一步提高计算效率,并通过实证分析证明了本文估计方法在解决实际问题时的可行性。

参考文献
[1]
NELDER J A, WEDDERBURN R W M. Generalized linear models[J]. Journal of the Royal Statistical Society. Series A (General), 1972, 135(3): 370-384. DOI:10.2307/2344614
[2]
TIBSHIRANI R. Regression shrinkage and selection via the Lasso[J]. Journal of the Royal Statistical Society. Series B (Methodological), 1996, 58(1): 267-288. DOI:10.1111/j.2517-6161.1996.tb02080.x
[3]
FAN J Q, LI R Z. Variable selection via nonconvave penalized likelihood and its oracle properties[J]. Journal of the American Statistical Association, 2001, 96(456): 1348-1360. DOI:10.1198/016214501753382273
[4]
ZHANG C H. Nearly unbiased variable selection under minimax concave penalty[J]. The Annals of Statistics, 2010, 38(2): 894-942. DOI:10.1214/09-AOS729
[5]
BREHENY P, HUANG J. Coordinate descent algorithms for nonconvex penalized regression, with applications to biological feature selection[J]. The Annals of Applied Statistics, 2011, 5(1): 232-253. DOI:10.1214/10-AOAS388
[6]
LIN N, XI R B. Aggregated estimating equation estimation[J]. Statistics and Its Interface, 2011, 4(1): 73-83. DOI:10.4310/SII.2011.v4.n1.a8
[7]
方方, 尹相菊, 张强. 海量数据下模型平均的分治算法[J]. 系统科学与数学, 2018, 38(7): 764-776.
FANG F, YIN X J, ZHANG Q. Divide and conquer algorithms for model averaging with massive data[J]. Journal of System Science and Mathematical Science, 2018, 38(7): 764-776. (in Chinese)
[8]
CHEN X Y, XIE M G. A split-and-conquer approach for analysis of extraordinarily large data[J]. Statistica Sinica, 2014, 24(4): 1655-1684.
[9]
WANG C, CHEN M H, SCHIFANO E, et al. Statistical methods and computing for big data[J]. Statistics and Its Interface, 2016, 9(4): 399-414. DOI:10.4310/SII.2016.v9.n4.a1
[10]
MCCULLAGH P, NELDER J A. Generalized linear models[M]. 2nd ed. Berlin: Springer-Science+Business Media, 1989.