A Gaussian Mixture Model for Mobile Location Prediction Nguyen Thanh An, Tu Minh Phuong Posts and Telecommunications Institute of Technology, Vietnam
[email protected],
[email protected]
Abstract Location prediction is essential for efficient location management in mobile networks. In this paper, we propose a novel method for predicting the current location of a mobile user and describe how the method can be used to facilitate paging process. Based on observation that most mobile users have mobility patterns that they follow in general, the proposed method discovers common mobility patterns from a collection of user moving logs. To do this, the method models cell-residence times as generated from a mixture of Gaussian distributions and use the expectation maximization (EM) algorithm to learn the model parameters. Mobility patterns, each is characterized by a common trajectory and a cell-residence time model, are then used for making predictions. Simulation studies show that the proposed method has better prediction performance when compared with two other prediction methods.1 Keywords Gaussian mixture model, location prediction, mobile network.
I.
INTRODUCTION
In a personal communication service (PCS) network, each mobile terminal is free to move within the whole service area. As a call arrives for a terminal, the system searches the terminal for call delivery by sending signals to cells where the terminal is probably located. This process is known as paging. A naïve strategy for paging is to search the entire network. Since the number of cells can be very large, to reduce the cost of paging, every terminal periodically informs the network about its location. This process is known as location update. For the network to be always aware about the current location of a terminal, location update should be done every time the mobile terminal crosses a cell’s boundary. However, for large networks with small cell sizes, such a scheme results in significant increase of signaling traffic for updating alone, which can achieve up to 70% of additional traffic by some estimates [4]. As a result, to minimize paging and updating traffic, a compromise between pure paging and updating is usually taken, e.g. by combining a partial update scheme with an efficient paging strategy. The mobile terminal does not inform the network every time it crosses the boundary of a cell. Rather, the terminal updates its location at constant time intervals or when it crosses the boundary of a location area 1
This work was supported by Ministry of Science and Technology of Vietnam under a grant for fundamental research.
(LA), which usually consists of several cells. For the latter location update scheme, when a call arrives, the exact location of the terminal is queried by paging all the cells belonging to the last updated LA. To further reduce the cost of paging, researchers have attempted to develop more efficient paging techniques [2,3,6,7]. Usually, the information about the last updated location is used to derive the most probable current location. More sophisticated methods rely on movement history or directional bias to make paging decision. In previous works on location management, the user mobility is often modeled as a stochastic random walk, based on which location management techniques are designed and evaluated. In practice, however, mobile users do not move randomly at all. Instead, almost every user has a movement pattern which he follows, in general. For example, a typical user leaves home in the morning, follows a certain route to the work and gets back home in the evening. The existence of such movement patterns has motivated studies on using them to predict the exact location, thus reduce the number of paged cells. Along this direction, Yavas et al. [13] used a sequence mining algorithm to find user movement patterns (UMPs) from a set of training movement trajectories and predicts the next cell the user is moving into by matching the sequence of the last cells visited to the stored UMPs. By using sequence alignment techniques, the method allows inexact matching of movement patterns and thus reduces the affect of fluctuations in trajectories. However, the method does not consider how long the user stays within a cell; instead it requires the terminal to inform whenever it is going to make an inter-cell move. Another method that also uses data mining techniques to discover movement behavior of each user was described by Wu et al. [15]. The authors assumed that time points of visiting cells follow normal distributions and used this assumption to estimate the optimal paging area for any given time point. Recently, the prediction power of artificial neural networks (ANN) has been used for location prediction by several research groups. In [4], for each mobile host, one neural network is trained on data of its past movements and is maintained by the system to make prediction about probable areas where the host may reside. The major limitation of this method is that maintaining one neural network for each mobile host is infeasible when the number of users is large. To overcome this, Majumdar and Das [9] proposed a combination of a self organizing feature map (SOFM) and ANNs. The
SOFM takes input data about movement histories of mobile users and clusters them into groups with similar movement behaviors. The movement pattern of each group is then modeled by a single neural network. This allows reducing the overall number of neural networks maintained in the system. In this paper, we propose using Gaussian mixture models for learning user movement profiles and making location prediction. Following the standard distance-based update scheme, the mobile host sends its recent locations along with the update message. Using data on movement histories of large number of subscribers, the model training is done offline and the trained model is stored for future prediction. Whenever a call arrives for a mobile host, based on the recent updated locations of the host, the most probable locations are predicted with use of the trained model. The prediction is then used to guide paging process until the mobile host is found. The rest of the paper is structured as follows. In section 2, we present the location management settings and describe the input data. The location prediction method is detailed in section 3. We present experimental design and results in section 4 and conclude the paper in section 5. II.
BACKGROUND
We assume settings that are similar to ones described in [9]. The location management strategy consists of a predetermined location update scheme. On call arrival, the system predicts the current location of the terminal based on the information received during the last updates, and paging is done accordingly. Following [9], we choose the distance based location update scheme, in which the terminal updates whenever it moves certain threshold distance from the last update. This scheme can be implemented without GPS as follows [14]. Whenever a mobile terminal updates its location, the network sends to it the list L of all the cell-ids, the distances from which to the current cell are d, where d is the distance threshold for update (fig. 1). By doing this, the network forms a circle LA of radius d with the present cell being the center. Whenever the terminal crosses the boundary of a cell, it matches the cell-id against the entries of L and updates if a match occurs. In this work, we assume the hexagonal shape of cells, but this update scheme is easily generalized to any cellular architecture. With the update scheme above, the terminal can be anywhere inside a circle of radius d when a call arrives. Based on the observation that most mobile users have their own mobility patterns, it is possible to predict the current location by learning the models that summarize the patterns from past events. Following [13], we collect the movement trajectories of a mobile user in the form of Tr = < (c1, t1), (c2, t2), …, (ck, tk) >, where ci (i = 1,…,k) is the ID of the cell which the user enters at time ti. After the movement history of a user is collected for a predefined time interval in the above format, these trajectories are partitioned into subsequences by the following procedure. If the time interval between two consecutive entries (ci, ti), (ci+1, ti+1) of a trajectory Tr exceeds a threshold t*, i.e. if ti+1− ti > t*, then the trajectory is assumed
to end at ci, and a new trajectory is started at ci+1. Thus the first subsequence < (c1, t1), (c2, t2), …, (ci, ti)> is stored and the rest of Tr is processed further. Note that in [13], the time points t1, t2, …,tk were used only to partition the original trajectories and were not stored after this step. In our work, these times are stored together with cell-ids and will be used to describe the cell-residence time patterns of the user.
Figure 1. Location area of distance based update with distance threshold 3
The trajectories obtained by the above procedure are called user actual trajectories (UAT). For the ease of our next explanation, each UAT < (c1, t1), (c2, t2), …, (cn, tn) > of length n is said to have two components which are named differently: the first component contains only cell-ids < c1, c2, …, cn > and is called user actual path (UAP); the second component is the sequence of time points < t1, t2, …, tn > and is named user actual time sequence (UATS). The UATs serve as input data, from which the models describing user mobility patterns will be learnt. The learning algorithm consists of two steps. During the first step, the algorithm finds all the paths of a predefined length that are frequently followed by the mobile users. Such paths are called user location patterns (ULPs) and do not contain the time component of the users’ mobility patterns. In the second step, for each ULP, the algorithm constructs a model that incorporates the cell-residence time characteristics of the users. Here cell-residence times are modeled as a mixture of normal distributions, the parameters of which are learnt from input data using the expectation maximization (EM) algorithm. Together with ULP, the mixture model allows completely characterize user mobility patterns. After the models are learnt, they can be used by the system to predict the current location. For the prediction to be made, the following information is presented as input to the system: 1) the last m cell-ids the terminal visited; 2) the times points at which the terminal entered the cells; and 3) the time elapsed from the last update or call termination. Based on these features, the system calculates the most probable cells, in which the terminal can be located along with their probabilities. The cells are then paged in descending order of their probabilities until the terminal is found. III.
LOCATION PREDICTION WITH GAUSSIAN MIXTURE MODELS
Our algorithm for learning user mobility models first finds frequently followed paths in form of ULP and then learns the models of cell-residence time for each ULP from input data. In
this section, we give a description for each of these steps and for the prediction phase. A. Finding frequent user location paths As mentioned in the previous section, a ULP is defined as a sequence of neighboring cells, and has a predefined length m. Each ULP should be contained in a large number of UAPs so that it corresponds to a frequent pattern in user movement behavior. Here we define a sequence A = < a1, a2, …,an > to be contained in a sequence B = < b1, b2, …, bl > if A is a subsequence of B, that is if there exists an integer i such that aj = bi + j for all 1 ≤ j ≤ n. The support of a ULP is then defined as the number of UAPs that the ULP is contained in. The problem of finding ULPs is a special case of the sequential pattern mining problem [1]. However, in conventional sequential pattern mining, the lengths of the patterns to be discovered are not known in advance. In this paper, the requirement that the ULP length be predefined has been introduced for the simplicity when implementing the next step of the algorithm. With this requirement, finding all ULPs becomes trivial. Let θ denote a pre-specified support threshold. For every subsequence s of length m+1 of each UAP, we count the number of times s occurs in the UAP set, which is the support of s by definition. If the counted support exceeds θ then s is recorded as a new ULP. Here m is a paremeter of the method. The result of this step is a set of ULPs, each of length m+1. Together with each ULP we also store all the user actual time subsequences (UATS) corresponding to this ULP. B. Gausian mixture model learning Although ULPs provide important information about mobility behaviors of the users, they cannot be used alone to make accurate predictions without considering other aspects of user movement such as velocity or cell-residence time. To illustrate this, let us use the following example. Assume the recent movement history of a user is given by a sequence of cells , which matches the prefix of the following ULP . A naïve use of ULP would predict the current location to be c6. In practice, depends on the time elapsed from the last update t (when the user enters c8), the user can still be in c8 if t is small or he can be in c10 if t is large and the user’s velocity is high. To make more precise predictions, the time component of user mobility patterns
should be modeled carefully as described next. Consider a ULP < c1, c2,…, cm+1 > and its corresponding set T = {T1, T2,…,Tn} of UATSs, where Ti = < ti1, ti2, …, tim+1 > for all i = 1, …, n; n is the support of the ULP. The cellresidence times rij for cell cj (1 ≤ j ≤ m) are calculated as rij = tij+1 – tij, 1 ≤ i ≤ n. Let ri denote the vector of cell-residence times for the i-th UATS. We assume that there are K types of mobile users sharing the given ULP. The users of each type have similar mobility behaviors and thus have similar cell-residence times, in general. For example, users that travel from home to work by cars tend to move faster than ones using bicycles and therefore have shorter cell-residence times. In practice, there are a small number of user types depending on the city transportation organization. For each type of users, since they follow the common pattern in general, it is naturally to model cellresidence times as a Gaussian distribution (figure 2). Let the Gaussian distribution for user type k at cell cj be given by mean µkj and standard deviation σ 2kj, we have m
∏ P( r
P( r i | k , µ , σ ) = =
m
∏ j =1
P(r | µ ,σ ) =
n
∏ i =1
=
n
∏
| k , µ,σ )
1 2π σ kj
K
exp −
( r i j − µ kj ) 2 2σ 2 kj
k =1 K
m
pk
∏ j =1
1 2π σ kj
exp −
where r is the set of all n vectors ri.
µ13,σ1 3
µ21,σ2
µ23,σ2 3
c2
(1)
p k P( r i | k , µ , σ )
i =1 k =1
1
c1
j
where µ and σ are the parameter vectors for the Gaussians. The first equation follows from the assumption that cellresidence times at any two cells are independent from each other. With the assumptions above, cell-residence times rij can be seen as generated independently by the following process. For each j, a user type k from a set of K types is picked randomly with probability pk. Then, rij is drawn from a Gaussian whose mean and deviation depend on the user type k as mentioned above. Thus we have:
µ11,σ1 1
i
j =1
c3
c4
Figure 2. A ULP with two user types. Cell-residence time distributions are shown above cell sequence
( r i j − µ kj ) 2 2σ 2 kj
(2)
Learning the model. Equation (2) gives the model, from which data are generated. What we need now is to learn the model parameters from data. To do this, a standard approach is to estimate the model parameters µ and σ that maximize the likelihood of the observed data, that is, parameters that maximize P ( r | µ , σ ) . If we know from which user type k vector ri is generated then it is easy to calculate the maximum likelihood parameters by computing the appropriate sufficient statistics. Since we do not have such information, we assume that they are given by hidden variables that are not observed and instead use the expectation maximization (EM) algorithm [5] to learn the parameters. The EM algorithm is an iterative optimization algorithm that guarantees to find a local maximum of the likelihood function. Starting from an initial guess of parameters, EM repeats the two steps: the Expectation (E) step and the Maximization (M) step until convergence. Using a derivation process similar to that given in [10], we derived the following EM algorithm for learning the parameters of the model given in equation (2): EM algorithm:
1. 2.
Initialize parameters. E step: For all i = 1,…,n and k = 1,…,K, compute the posterior probabilities pk φ (r i | µ k ,σ k )
p i ,k =
K
σkj for every user type k of each ULP. We call each user type k learnt above together with its ULP U a mobility pattern, denoted by MUk. The set of mobility patterns are stored and used for location prediction as described next. C. Location prediction Having the mobility patterns MUk estimated above, we now describe how to make prediction. Let the recent movement history of a mobile terminal be given by the following parameters: 1) the sequence of the last l cell-ids it visited L = < a1,a2,…,al >, here l < m+1, where m+1 is the length of the ULPs (if l > m then only the last l cells are used) ; 2) the sequence of times it enters the l cells T = < t1,t2,…,tl > ; 3) the current time t0. To make prediction, the algorithm determines to which mobility pattern L most probably belongs and predict the current cell based on this pattern. The prediction procedure can be summarized as follows. First, the algorithm finds ULPs that contain P in their prefixes. We call these ULPs matching ULPs. Assume a matching ULP has the form U = < c1, c2,…, cm+1 > and L matches its subsequence starting at cell ci. Without loss of generality, we assume that i=1, that is c1 = a1, c2 = al, …, ck = al . For example, for path P = < 2,4,5> , ULP < 2,4,5,7> is one of its matching rule. Second, let U have K user types. For all k = 1,…,K the algorithm calculates the probability that L belongs to type k of U, which is in essence the probability that L has mobility pattern MUk, as follows: P ( L ← M Uk ) = pk
pk φ (r i | µ k ,σ k )
where
φ (r | k , µ k ,σ k ) =
m
∏ j =1
3.
1 2π σ kj
exp −
( r i j − µ kj ) 2 2σ 2 kj
M step: Update parameters with pi,k computed from the E step n
p i ,k pk =
i =1
n n
µ kj =
p i ,k r i j
i =1 n
p i ,k i =1 n
σ 2 kj =
i =1
pi ,k ( r i j − µ kj ) 2 n
p i ,k i =1
4.
∏ j =1
k =1
i
l −1
Repeat steps 2 and 3 until convergence.
The results of these steps are estimated values of pk, µkj and
1 2π σ kj
exp −
( r j − µ kj ) 2 2σ 2 kj
(3)
where pk, µkj and σkj are model parameters calculated from the previous step, rj is the cell-residence time for cell aj and is calculated as rj = tj+1 − tj. Third, for each mobility pattern MUk above, the algorithm predicts the current location of the terminal by comparing the time elapsed from the last update r0 = t0 − tl with mean µkl. Specifically, if r0 < µkl + σkj then the terminal is predicted to be still located in cell cl (the last updated cell), otherwise, the predicted cell is cl+1. Recall µkl is the mean of cell-residence time for cell cl, and it is obvious to conclude that the terminal has moved to the next cell cl+1 if the time period after it entered the cell is much longer than the mean. The algorithm stores predicted cells along with values P(L ← MUk) for all mobility patterns according to matching ULPs and sorts them in descending order of P(L ← MUk). Last, we define a parameter N, which is maximum number of predictions to make. The first N cells with the highest P(L ← MUk) are then selected for paging in descending order of probabilities. In our experiments we used only the first prediction, that is N = 1. IV.
EXPERIMENTAL RESULTS
In this section, we discuss the experimental assessment of the proposed method (we call it GMM). In practice, the model
is to be trained on real movement histories of different mobile users. Since there is no such dataset available, we used a statistical mobility model to generate user movement profiles and evaluated the model on simulated data.
B. Training and evaluation In all, 10000 UAPs were generated, from which 9000 UAPs were randomly chosen to form the training set and the rest 1000 UAPs were left as the test set. For each UAP in the test set, a prefix of length > 2 is chosen to form the input for the predictor. The times elapsed from the last update were chosen so that in 20% of cases the user stays in the last updated cell and in 80% of cases the user has moved to the next cell. During the first stage of the algorithm, a ULP is recorded only if its support exceeds a support threshold θ. Since the number of user types K is not known in advance, the EM algorithm was running with different K and the one that gives the maximum likelihood score is chosen. In general, it can be problematic to choose K by this trial procedure if the domain of K is large. Fortunately, for the location prediction problem, there are usually a small number of user types, which can be guessed by analyzing the transportation situation of the city. Every time the system is requested to make prediction, it can return: - A correct prediction. - An incorrect prediction. - No prediction because no matching pattern is found. Therefore, to assess the proposed method, we used two performance measures: precision and recall.
C. Algorithms used for comparison Following [13], we compared our method with two other algorithms. The first method predicts location by using Transition Matrix (TM) [11]. In this method, a cell-to-cell transition matrix is calculated from past inter-cell movements of mobile users. The elements of this matrix contain the probabilities with which a user would move to other cells from the current location. The prediction is made by choosing the most probable cell from the matrix as the predicted cell. The second method is Ignorant Prediction [13]. This method randomly picks one of the neighboring cells as the next cell to move in regardless of information about movement history. In fact, this method makes no prediction based on a priori knowledge of user movements and is used as a base method to observe the performance of the system in absence of location prediction. Since in our experiments the user can be in the next cell or in the last updated cell, the two methods were modified so that they can choose to predict the last updated cell with probability 1/7. D. Results First we fixed the outlier percentage o=30% and compared the proposed method GMM with the TM and Ignorant. For GMM, the following parameters were used for learning: ULP length m = 3, support threshold θ = 300. Figure 3 shows precision values plotted against recall values for the three methods. Note that because TM and Ignorant never return “No prediction” and only one prediction is made for each request, precision and recall of each of these methods are the same. The results show that GMM outperforms the two other methods by a large margin. 0.9 0.8
GMM
0.7 Precision
A. Simulation design Our simulation is based on the model presented in [7]. In this model, the network consists of 225 (15x15) hexagonal cells. To generate user actual paths (UAPs), first a number of user location patterns (ULPs) were generated. The length of a ULP is chosen uniformly from {4,5,6,7,8}. Each ULP is taken as a random walk over the network. For each ULP, we defined K user movement types, which differ from each other by their cell-residence times. For user type k, the cell-residence time at cell ci is characterized by choosing a mean time uniformly from 5 minutes to 100 minutes and a standard deviation from 1 to 6. In our experiments we used the same number of user types K = 4 for all generated ULPs. Next, each UAP is generated by randomly picking a ULP. In addition to UAPs that were generated this way and thus follow a ULP, we also formed UAPs which are outliers, i.e. those which do not follow any ULP. Such UAPs are formed as random walks over the mobile network. The ratio of the number of UAP-outliers to the number of all generated UAPs is denoted by o. For each UAP generated from a ULP, we next determined cell-residence times as by a two-step procedure: 1) a user type k is randomly picked from K predefined types; and 2) cell-residence times are determined by sampling the normal distribution with mean and standard deviation for user type k of the current ULP. Having cell-residence times calculated, it is trivial to form user actual time sequence (UATS) by choosing a starting time.
# of correct predictions # of predictions made # of correct predictions recall = # of requests precision =
0.6 0.5
TM
0.4 0.3 0.2
Ignorant
0.1 0 0
0.2
0.4
0.6
0.8
Recall
Figure 3. Recall and precision of the three prediction methods
Next, we studied the impact of ULP length m used during the training and prediction. We kept other parameters the same
as for the previous experiment and changed m. The recall and precision for m = 2 and m = 3 are given in table 1. The results show a small increase in recall and a significant increase in precision when m increases from 2 to 3. TABLE 1.
RECALL AND PRECISION FOR DIFFERENT ULP LENGTHS
M=3
m=2
precision
0.79
0.70
Recall
0.61
0.59
Another parameter that has impact on prediction accuracy is the support threshold θ. In the next experiment, we measured recall and precision while varying θ. Parameter m was fixed at 2. The precision and recall for different support threshold are given in table 2. Both precision and recall increase as θ goes from 100 to 300. After θ reaches 300, no significant changes of precision and recall are observed except for a small fluctuation of recall at θ = 400. TABLE 2.
On simulated data, the proposed method shows promising results and outperform two other prediction methods. Important factors that influence the prediction accuracy are the length of mobility pattern and the support threshold. With small support, the training data may be too sparse for the EM algorithm, which leads to overfitting, a problem that is well known in the machine learning community. Also, the success of the method highly depends on the choice of training data and thus the method is yet to be studied extensively in real data. REFERENCES [1] [2] [3] [4]
[5]
RECALL AND PRECISION FOR DIFFERENT SUPPORT THRESHOLDS [6]
precision
recall
θ = 100
0.67
0.52
θ = 200
0.73
0.57
θ = 300
0.79
0.61
θ = 400
0.79
0.65
θ = 500
0.79
0.61
θ = 600
0.79
0.60
V.
CONCLUSION
In this paper, a new method for mobility prediction has been proposed. The method uses Gaussian mixture models to characterize regularities in cell-residence times of mobile users. In combination with frequently followed trajectories, these models form mobility patterns, which are used to predict the location of a mobile user at a given time point. The main feature of this method is that it explicitly models the time component of user movements and uses the models to find clusters of similar user profiles. We believe this is an advantage of our method over the methods that ignore time characteristics of user movements.
[7]
[8]
[9] [10] [11]
[12] [13] [14] [15]
R. Agrawal, R. Srikant,”Mining sequential patterns”, Proceedings of the IEEE Conference on Data Engineering (ICDE_95), 1995, pp. 3–14. I.F.Akyildiz and J.S.M. Ho, “Movement-based location update and selective paging for PCS networks”, IEEE/ACM Transactions on Networking 4(4) (1996) 629–638. A. Bhattacharya, S.K. Das, “LeZi—Update: an information-theoretic approach to track mobile users in PCS networks”, ACM Wireless Networks 8 (2–3) (2002) 121–135. G. Chakrabarty, “Efficient location management bymovement prediction of mobile host”, Proc. Int.Workshop on Distributed Computing IWDC 2002, Lecture Notes in CS, Vol. 2571 (Springer 2002) pp. 142–153. A.P. Dempster, N.M. Laird, and D.B. Rubin. “Maximum likelihood from incomplette data via EM algorithm”. Journal of the Royal Statistical Society, Series B, 39(1), pp. 1-38, 1987. T. Liu, P. Bahl and I. Chlamtac, “Mobility modeling, location tracking, and trajectory prediction in wireless ATMnetworks”, IEEE Transactions on Selected Areas of Commn. 16 (1998) 922–936. D. Katsaros, A. Nanopoulos, M. Karakaya, G. Yavas, O. Ulusoy, Y. Manolopoulos, “Clustering mobile trajectories for resource allocation in mobile environments”, in: Intelligent Data Analysis Conference (IDA_2003)Lecture Notes in Computer Science, vol. 2810, SpringerVerlag, 2003. G.L. Lyberopoulos, J.G. Markoulidakis, D.V. Polymeros, D.F. Tsirkas and E.D. Sykas, “Intelligent paging strategies for third generation mobile telecommunication systems”, IEEE Transactions on Vehicular Technology 44(3) (1995) 543–553. K. Majumdar and N. Das, “Mobile user tracking using a hybrid neural network, Wireless networks”, 11 (2005), pp. 275-284. T. Mitchell, Machine learning, McGrawhil, 1997. S. Rajagopal, R.B. Srinivasan, R.B. Narayan, X.B.C. Petit, “GPSbased predictive resource allocation in cellural networks”, Proceedings of the IEEE International Conference on Networks (IEEE ICON_02), 2002, pp. 229–234. C. Rose, “Minimizing the average cost of paging and registration: A timer-based method”, Wireless Networks 2(2) (1996) 109–116. G.Yavas, D.Katsaros,O.Ulusoy and Y.Manolopoulos. “A data mining appoach for location prediction in mobile environments”. Data & Knowledge Engineering 54 (2005), pp. 121–146 V.W.S. Wong and V.C.M. Leung, “An adaptive distance-based location update algorithm for next-generation PCS networks”, IEEE Transactions on Vehicular Technology 19(10) (2001) 1942–1952. H.-K. Wu, M.-H. Jin, J.-T. Horng, C.-Y. Ke, “Personal paging area design based on mobile’s moving behaviors”, Proceedings of the IEEE Conference on Computer and Communications (IEEE INFOCOM_01), 2001, pp. 21–30.