Abstract:
A method is provided herein for determining and recognizing types of vehicles passing a check point. The method takes advantage of an EM algorithm which is up-loaded into a CPU and which processes data of the vehicles which drive past a checkpoint, the data being representative of essential characteristics of vehicles to produce an output model of the traffic volumes of the various types of vehicles. This model enables the forecasting of future road maintenance costs and the planning and designing of future road networks

Description:
[0001]    This invention relates to a system and method for cluster analysis for vehicle identification and claims priority of application 61/154,866, filed Feb. 24, 2009, the entire content of which are incorporated herein by reference 
     
    
       [0002]    It is very useful to build an automatic computer system to recognize the types of vehicles passing a checkpoint given some easy-to-get data about the vehicles, such as the distances between axles, the weights on each axle. Such a system has many applications, for example, in monitoring traffic volumes and identifies the type of vehicle, which will be helpful in budgeting road maintenance costs. 
         [0003]    The simplest clustering technique is the K-means clustering. However, K-means clustering requires that the users supply with a number of clusters. X-means clustering may be an alternative method since it can detect the number of clusters with some simple criteria, but X-means would introduce more severe local mode problem. 
       BACKGROUND INFORMATION 
       [0004]    The partitioning of large data sets into similar subsets (Cluster Analysis) is an important statistical technique used in many fields (data mining, machine learning, bioinformatics, and pattern recognition and image analysis). In traffic research, it is useful both to determine and to recognize the types of vehicles passing a checkpoint. Traffic data collection systems would collect data (e.g., vehicle length, distances between axles, weights on. axles) and such data may be used to determine and recognize vehicle types in high volume traffic, monitoring traffic volumes of various types of vehicles forecasting future road maintenance costs and planning and design of future road networks. 
         [0005]    The consequence of such determination and recognition of vehicle types in high volume traffic has many applications, e g, monitoring traffic volumes of various types of vehicles, forecasting future road maintenance costs and planning and design of future road networks. 
       DESCRIPTION OF THE INVENTION 
     Aims of the Invention 
       [0006]    A main aim of the present invention is to develop a better methodology for cluster analysis with application to the problem of vehicle detection and determination of its type as noted above. 
         [0007]    Another aim of the present invention is to provide a new method to overcome potential problems by merging similar clusters after running X-means clustering. 
         [0008]    Another aim of the invention is to provide better methodology for cluster analysis with application to the vehicle detection problem. 
       STATEMENT OF INVENTION 
       [0009]    One aspect of the present invention provides a method of determining and recognizing the types of vehicles passing a checkpoint by collecting vehicle data (e.g., vehicle length, distances between axles, weights on axles) and using that data to determine and recognize vehicle types, particularly in high volume traffic for monitoring traffic volumes of various types of vehicles, forecasting future road maintenance costs and planning and design of future road networks, the method comprising: uploading a computer program into a CPU, the computer program comprising an EM algorithm as particularly described in the specification herein, the algorithm including data representations of essential characteristics vehicles as they drive past the checkpoint; entering such measured characteristics vehicles as they travel past the checkpoint into that CPU; and deriving an output from that CPU, and thereby determining and recognizing the types of vehicles passing the checkpoint, particularly in high volume traffic, for monitoring traffic volumes of various types of vehicles, forecasting future road maintenance costs and planning and design of future road networks. 
         [0010]    Another aspect of the present invention provides an apparatus comprising the combination of: a CPU: and a computer program which has been uploaded into said CPU, the computer program comprising an EM algorithm as particularly described in the specification herein, the algorithm including data representations of essential characteristics of vehicles. 
         [0011]    It has been found according to aspects of the present invention, that there arc correlations between different variables. This invention proposes to avoid the problem which arises by using the Euclidean distance, since data may be assigned to the wrong centroids. The present invention seeks to overcome this problem by replacing the Euclidean distance with the Mahalanobis distance. 
         [0012]    The following description provides examples of methods of aspects of the present invention. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0013]    In the accompanying drawings, 
           [0014]      FIG. 1  is a graph showing some data points derived from traffic data collection systems which have collected data (e.g., vehicle length, distances between axles, weights on axles, etc.), which data may be used to determine and recognize vehicle types in high volume traffic, but in which the cluster points are incorrectly clustered 
           [0015]      FIG. 2  is a graph showing some data points derived from traffic data collection systems which have collected data (e.g., vehicle length, distances between axles, weights on axles, etc.), which data may be used to determine and recognize vehicle types in high volume traffic, but in which the cluster points are correctly clustered 
           [0016]      FIG. 3  is a graph showing some data points derived from traffic data collection systems which have collected data (e.g., vehicle length, distances between axles, weights on axles, etc.), which data may be used to determine and recognize vehicle types in high volume traffic, where the X-means is used to cluster these points, using Euclidean distances, which is not correct. 
       
    
    
       [0017]    one explanation of the results plotted in  FIGS. 1 ,  2  and  3  is because the X-means algorithm does not permit returning back to re-cluster the data, since it runs a local K-means for each pair of “children”. The K means is local in that the “children” are fighting each other for the points in the “parent&#39;s”region and in no others. All the points from the other regions are ignored. 
         [0018]    This problem of local mode can be overcome, according to broad aspects of the present invention, by merging two regions which are close to each other after the X-means algorithm is run. If the model after merging has a higher BIC score than the model before merging, these regions will be merged. Otherwise, the original model is kept. 
       Assumptions 
       [0019]    In the method of determining and recognizing the types of vehicles passing a checkpoint by collecting vehicle data (e.g., vehicle length, distances between axles, weights on axles) according to aspects of the present invention, by plotting graphs for all the variables (axle spacing, weights, front bumping spacing, and rear bumper spacing) in the data set, each variable forms a pattern which is similar to a “Student&#39;s” t-distribution. Therefore, it will be assumed that each variable in the data set comes from a “Student&#39;s” t-distribution. Since all the variables for a given data point must be considered, it will be assumed that each data point forms a multivariate “Student” distribution. In statistics, a “multivariate Student distribution” is a multivariate generalization of the Students t-distribution. 
         [0020]    The present invention will be further described by reference to method steps to be carried out 
         [0021]    Finding Parameter Values with EM Algorithm Method Steps 
         [0022]    The setup for the method steps is that given “N” data points in a V-dimensional space, it is desired to find a set of“K” “multivariate Student&#39;s t-distribution” that best represents the distribution of all the data points. Without being bound by theory, it is believed that the given data set is an N*V matrix where N stands for the number of data points and V stands for the number of variables for each data point. 
       DEFINITION OF TERMS 
       [0023]    N=number of data points.
 
V=number of variables.
 
K=number of dusters.
 
μ k =the mean for kill cluster, each a vector of length V.
 
Σ k :=the covariance matrices for k th  duster, each of size V*V.
 
x n .=the n th  data point, which is a vector with length V.
 
P(k ! x n :)=the probability that x n  comes from cluster k.
 
p(k)=: the probability that a data point chosen randomly comes from cluster k.
 
P(x n )=the probability of finding a data point at position x n  
 
λ=the value of log likelihood of the estimated parameter set.
 
         [0024]    For simplicity, it is assumed that Σ k  is a diagonal matrix, i.e., a matrix whose non diagonal entries are all 0, and where the diagonal entries are the variances for each variable. 
         [0025]    Three statistical methods are used for the method steps, which are carried out to find parameter values with the EM algorithm, splitting clusters using Principle Component Analysis (PCA), and comparing models by Bayesian Information Criterion (BIC). 
         [0026]    λ is the key to this method. While it is not desired to be limited by any particular theory, it is believed that it is necessary to find the best values for the parameters by maximizing the value of λ. This method maximizes the posterior probability of the parameters if the specific priors are given. 
         [0027]    The steps are described as follows 
         [0028]    Step 1 
         [0029]    Set the starting values for the μ k &#39;s, Σ k  s, P (k). The method to obtain these values is by means of splitting clusters using PCA as follows: 
         [0030]    The setup for this method is that, given some data points in one cluster (mother cluster), it is necessary to split these data points into two clusters (children clusters), using PCA. PCA is mathematically defined as “an orthogonal linear transformation that transforms the data to a new coordinate system such that the greatest variance by any projection of the data comes to lie on the first coordinate (called the first principal component), the second greatest variance on the second coordinate”, and so on. The data set comprises an N*matrix. PCA is now performed on this data matrix. The standard deviations are now calculated of the principal components, namely, the square roots of the eigenvalues of the covariance matrix. The matrix is now calculated for variable loadings, namely, a matrix whose columns contain the eigenvectors. In R, there is a built-in function called “prcomp” which helps the calculations. 
         [0031]    The terms used are defined as follows: 
         [0000]    std=a vector contains the square roots of the eigenvalues of the covariance matrix.
 
Rotation=a matrix whose columns contain the eigenvectors
 
Range: how far the data is to be split; the.value of range is usually between 1.5 and
 
μ=the mean for the mother cluster, each a vector of length V
 
Σ=the covariance matrix for the mother cluster, each of size *
 
P(m)=the probability that a data point chosen randomly comes from the mother cluster
 
         [0032]    Since the first principal component is the most important component, two vectors are created with length V from the first principal component. Two vectors are created since it is desired to split the data into two clusters. The first element in the first vector is the value of +range (plus range), and the other elements are all zero. The first element in the second vector is the value of −range (minus range), and the other elements are all zero. The first vector is V 1 , and the second vector is V 2 . Consider V 1 , V 2 , and std to be matrices with one column. After the splitting is done, two means are provided for two children clusters. The mean for the first children cluster is μ 1  and the mean for the second children cluster μ 2 . The calculation for μ 1  and is as follows: 
         [0000]      μ 1 =μ+rotation %*%( V   1   *std ) 
         [0000]      μ 2 =μ+rotation %*%( V   2   *std ) 
         [0033]    Here, k*k and “%*%” different operations. 
         [0034]    For example, 
         [0000]    
       
         
           
             
               
                 
                   
                     
                       
                         a 
                          
                         
                             
                         
                          
                         d 
                          
                         
                             
                         
                          
                         a 
                       
                       + 
                       d 
                     
                   
                 
                 
                   
                     
                       
                         b 
                         * 
                         e 
                       
                       = 
                       
                         b 
                         * 
                         e 
                       
                     
                   
                 
                 
                   
                     
                       c 
                        
                       
                           
                       
                        
                       f 
                        
                       
                           
                       
                        
                       c 
                       * 
                       f 
                     
                   
                 
               
                
               
                   
               
                
               but 
                
               
                   
               
                
               
                 
                   
                     
                       a 
                        
                       
                           
                       
                        
                       d 
                        
                       
                           
                       
                        
                       g 
                        
                       
                           
                       
                        
                       j 
                     
                   
                 
                 
                   
                     
                       b 
                        
                       
                           
                       
                        
                       e 
                        
                       
                           
                       
                        
                       h 
                        
                       
                           
                       
                        
                       % 
                       * 
                       % 
                        
                       
                           
                       
                        
                       k 
                     
                   
                 
                 
                   
                     
                       c 
                        
                       
                           
                       
                        
                       f 
                        
                       
                           
                       
                        
                       i 
                        
                       
                           
                       
                        
                       l 
                     
                   
                 
               
             
             = 
             
               
                 
                   
                     
                       a 
                       * 
                       j 
                     
                      
                     
                         
                     
                     + 
                     
                       d 
                       * 
                       h 
                     
                     + 
                     
                       g 
                       * 
                       1 
                     
                   
                 
               
               
                 
                   
                     
                       b 
                       * 
                       j 
                     
                      
                     
                         
                     
                     + 
                     
                       e 
                       * 
                       k 
                     
                     + 
                     
                       h 
                       * 
                       1 
                     
                   
                 
               
               
                 
                   
                     c 
                     + 
                     j 
                      
                     
                         
                     
                     + 
                     
                       f 
                       * 
                       k 
                     
                     + 
                     l 
                     + 
                     l 
                   
                 
               
             
           
         
       
     
         [0035]    The covariance matrices for two children clusters would be the same as the mother cluster, and the probability that a data point chosen randomly comes from the children clusters would be half of P{m). 
         [0036]    In summary, for the first children cluster, mean=μ 1 , covariance matrix=Σ, and probability that a data point chosen randomly comes from this cluster=(½)*P{m); for the second children cluster, mean μ 2 , covariance matrix=Σ, and probability that a data point chosen randomly comes from this cluster=(½)*P{m). 
         [0037]    There is one limitation about PCA. If PCA is performed on a given data matrix, PCA requires the number of data points to be larger than the number of variables. If the number of data points is smaller than the number of variables, PCA will do nothing on the data matrix, and splitting will not happen 
         [0038]    Step 2: 
         [0039]    Given the values for the μ k &#39;s, Σ k  s, P (k), and the data, of P (x n  1μ k , Σ k ) can be calculated. we assume all the variables in the data set form a multivariate Student&#39;s distribution, P (x n  1μ k , Σ k  is the multivariate Student&#39;s density, that is, 
         [0000]    
       
         
           
             
               P 
                
               
                 ( 
                 
                   
                     
                       x 
                       n 
                     
                      
                     
                       μ 
                       k 
                     
                   
                   , 
                   
                     ∑ 
                     k 
                   
                 
                 ) 
               
             
             = 
             
               
                 r 
                  
                 
                   [ 
                   
                     
                       ( 
                       
                         df 
                         + 
                         p 
                       
                       ) 
                     
                     2 
                   
                   ] 
                 
               
               
                 
                   
                     
                       
                         r 
                          
                         
                           ( 
                           
                             df 
                             2 
                           
                           ) 
                         
                       
                       * 
                       
                         π 
                         
                           p 
                           2 
                         
                       
                       * 
                       
                         
                           ( 
                           df 
                           ) 
                         
                         
                           p 
                           2 
                         
                       
                       * 
                       
                         
                           ( 
                           
                             det 
                             ∑ 
                           
                           ) 
                         
                         
                           1 
                           2 
                         
                       
                       * 
                     
                   
                 
                 
                   
                     
                       
                         [ 
                         
                           1 
                           + 
                           
                             
                               ( 
                               
                                 1 
                                 df 
                               
                               ) 
                             
                             * 
                             
                               
                                 ( 
                                 
                                   
                                     x 
                                     n 
                                   
                                   - 
                                   
                                     μ 
                                     k 
                                   
                                 
                                 ) 
                               
                               T 
                             
                             * 
                             
                               
                                 ∑ 
                                 
                                   - 
                                   1 
                                 
                               
                                
                               
                                 * 
                                 
                                   ( 
                                   
                                     
                                       x 
                                       n 
                                     
                                     - 
                                     
                                       μ 
                                       k 
                                     
                                   
                                   ) 
                                 
                               
                             
                           
                         
                         ] 
                       
                       
                         ( 
                         
                           
                             df 
                             + 
                             p 
                           
                           2 
                         
                         ) 
                       
                     
                   
                 
               
             
           
         
       
     
         [0000]    where df=the degree of freedom, p=the number of variables, and detΣ=the determinant for Σ 
         [0040]    One important thing about P (x n  1μ k , Σ k ) is that the values of P (x n  1μ k , Σ k ) often be very small as to underflow to zero. Therefore, it is necessary to work with the logarithm of P(x n  1μ k , Σ k ) that is 
         [0000]    
       
         
           
             
               log 
                
               
                   
               
                
               
                 P 
                  
                 
                   ( 
                   
                     
                       
                         x 
                         n 
                       
                        
                       
                         μ 
                         k 
                       
                     
                     , 
                     
                       ∑ 
                       k 
                     
                   
                   ) 
                 
               
             
             = 
             
               
                 log 
                  
                 
                     
                 
                  
                 
                   r 
                    
                   
                     ( 
                     
                       
                         df 
                         + 
                         p 
                       
                       2 
                     
                     ) 
                   
                 
               
               - 
               
                 log 
                  
                 
                     
                 
                  
                 
                   r 
                    
                   
                     ( 
                     
                       df 
                       2 
                     
                     ) 
                   
                 
               
               - 
               
                 
                   log 
                    
                   
                     ( 
                     π 
                     ) 
                   
                 
                 
                   P 
                   2 
                 
               
               - 
               
                 
                   log 
                    
                   
                     ( 
                     df 
                     ) 
                   
                 
                 
                   P 
                   2 
                 
               
               - 
               
                 
                   log 
                    
                   
                     ( 
                     
                       det 
                       ∑ 
                     
                     ) 
                   
                 
                 
                   1 
                   2 
                 
               
               - 
               
                 
                   log 
                    
                   
                     [ 
                     
                       1 
                       + 
                       
                         
                           ( 
                           
                             1 
                             df 
                           
                           ) 
                         
                         * 
                         
                           
                             ( 
                             
                               
                                 x 
                                 n 
                               
                               - 
                               
                                 μ 
                                 k 
                               
                             
                             ) 
                           
                           T 
                         
                         * 
                         
                           
                             ∑ 
                             
                               - 
                               1 
                             
                           
                            
                           
                             * 
                             
                               ( 
                               
                                 
                                   x 
                                   n 
                                 
                                 - 
                                 
                                   μ 
                                   k 
                                 
                               
                               ) 
                             
                           
                         
                       
                     
                     ] 
                   
                 
                 
                   ( 
                   
                     
                       df 
                       + 
                       p 
                     
                     2 
                   
                   ) 
                 
               
             
           
         
       
     
         [0041]    After the value of P (x n  1μ k , Σ k ) is obtained, it becomes possible to calculate the value of P (x n ) splitting P (x n ) into its contribution from each of the K multivariate Student&#39;s t-distributions, that is, 
         [0000]    
       
         
           
             
               P 
                
               
                 ( 
                 
                   X 
                   n 
                 
                 ) 
               
             
             = 
             
               
                 ∑ 
                 k 
               
                
               
                 
                   P 
                    
                   
                     ( 
                     
                       
                         x 
                         n 
                       
                        
                       
                         μ 
                         
                           k 
                           , 
                           k 
                         
                       
                     
                     ) 
                   
                 
                  
                 
                   P 
                    
                   
                     ( 
                     k 
                     ) 
                   
                 
               
             
           
         
       
     
         [0042]    One problem may rise for P (x n ), where it becomes necessary to calculate the sum of quantities. Some of these quantities may be so small that they underflow to zero. According to an aspect of the present invention, it has been found that one possible way to fix this problem is construct the quantities from their logarithms. That is, store P (x n  lμ k , Σ k ) P(i) in log P(x n  lμ k , E k ), and let m log =max log(P (x n  lμ k , Σ k )P(i)0 . . . log P(k))). Then the logarithm of the sum is computed as follows: 
         [0000]    
       
         
           
             
               log 
                
               
                   
               
                
               
                 P 
                  
                 
                   ( 
                   
                     x 
                     n 
                   
                   ) 
                 
               
             
             = 
             
               
                 log 
                  
                 
                   ( 
                   
                     m 
                     log 
                   
                   ) 
                 
               
               + 
               
                 log 
                  
                 
                   ( 
                   
                     
                       ∑ 
                       i 
                     
                      
                     
                       exp 
                        
                       
                         ( 
                         
                           
                             log 
                              
                             
                               ( 
                               
                                 
                                   P 
                                    
                                   
                                     ( 
                                     
                                       
                                         
                                           x 
                                           n 
                                         
                                          
                                         
                                           μ 
                                           i 
                                         
                                       
                                       , 
                                       
                                         ∑ 
                                          
                                       
                                     
                                     ) 
                                   
                                 
                                  
                                 
                                   P 
                                    
                                   
                                     ( 
                                      
                                     ) 
                                   
                                 
                               
                               ) 
                             
                           
                           - 
                           
                             m 
                             log 
                           
                         
                         ) 
                       
                     
                   
                   ) 
                 
               
             
           
         
       
     
         [0043]    Using the values of P (x n  1μ k , Σ k ) and P (x n ), the value of P(k|x n } and λ: 
         [0000]    
       
         
           
             
               P 
                
               
                 ( 
                 
                   k 
                    
                   
                     x 
                     n 
                   
                 
                 ) 
               
             
             = 
             
               
                 
                   P 
                    
                   
                     ( 
                     
                       
                         
                           x 
                           n 
                         
                          
                         
                           μ 
                           k 
                         
                       
                       , 
                       
                         ∑ 
                         k 
                       
                     
                     ) 
                   
                 
                  
                 
                   P 
                    
                   
                     ( 
                     k 
                     ) 
                   
                 
               
               
                 P 
                  
                 
                   ( 
                   
                     x 
                     n 
                   
                   ) 
                 
               
             
           
         
       
       
         
           
             λ 
             = 
             
               log 
               ( 
               
                 
                   
                     ∏ 
                     n 
                   
                    
                   
                     P 
                      
                     
                       ( 
                       
                         x 
                         n 
                       
                       ) 
                     
                   
                 
                 = 
                 
                   
                     ∑ 
                     n 
                   
                    
                   
                     log 
                      
                     
                         
                     
                      
                     
                       P 
                        
                       
                         ( 
                         
                           x 
                           n 
                         
                         ) 
                       
                     
                   
                 
               
             
           
         
       
     
         [0044]    Since the values of log P (x n  1μ k , Σ k ) and P (x n ) can be computed in order to overcome the problem of underflow, it is possible to write P{k 1 x n ) in terms of log P (x n  1μ k , Σ k ) and log P (x n ), 
         [0000]        P ( k|x   n )=exp(log  P ( x   n |μ k ,Σ k ))+log  P ( k )−log  P ( x   n )) 
         [0045]    By calculating P (k 1 x n ) for all values of k&#39;s and x n &#39;s, it is now possible to obtain all of the values P (k|x n }&#39;s. and it now becomes possible to write P (k|x n }&#39;s as a probability matrix of size N*K. Each row=one data point, and each column=one cluster. Each element in the matrix=the value of P (k|x n ) that is, the probability that a given data point comes from a specific cluster k. In the language of the EM algorithm, this is called, an expectation step or an E-step. 
         [0046]    Step 3: 
         [0047]    Using P (k|x n )&#39;s from step 2, the values of maximum likelihood estimates for μ k &#39;s, Σ k &#39;s and P(k}&#39;s and for all values of k, can be calculated, that is, the values of μ k &#39;s, Σ k &#39;s and P(k}&#39;s that maximize the log likelihood function λ. The maximum likelihood estimate for P(k) is easy to obtain: 
         [0000]    
       
         
           
             
               P 
                
               
                 ( 
                 k 
                 ) 
               
             
             = 
             
               
                 1 
                 N 
               
                
               
                 
                   ∑ 
                   n 
                 
                  
                 
                   
                     P 
                      
                     
                       ( 
                       
                         k 
                          
                         
                           x 
                           n 
                         
                       
                       ) 
                     
                   
                   . 
                 
               
             
           
         
       
     
         [0048]    The process to calculate the maximum likelihood estimates for μ k &#39;s, Σ k &#39;s is very complex. For a given cluster k (k=1, 2, 2 . . . K,), the log likelihood function needed to maximize is as follows: 
         [0000]    
       
         
           
             λ 
             = 
             
               
                 ∑ 
                 n 
               
                
               
                 
                   log 
                    
                   
                     ( 
                     
                       P 
                        
                       
                         ( 
                         
                           
                             
                               x 
                               n 
                             
                              
                             
                               μ 
                               k 
                             
                           
                           , 
                           
                             ∑ 
                             k 
                           
                         
                         ) 
                       
                     
                     ) 
                   
                 
                 * 
                 
                   
                     P 
                      
                     
                       ( 
                       
                         k 
                          
                         
                           x 
                           n 
                         
                       
                       ) 
                     
                   
                   . 
                 
               
             
           
         
       
     
         [0049]    It is now necessary to find the values of μ k  and Σ k &#39;s for K=1, 2, 3 . . . K that maximize the above function. 
         [0050]    Most of the programming languages have the build-in functions to calculate the values of the parameters that maximize a given function. For example, in R, we can use a build-in function called “nlm” can be used to calculate the maximum likelihood estimates for ˜k′S ′S. the language of the EM steps is called a maximization step or M-step. 
         [0051]    Step 4: 
         [0052]    Using the maximum likelihood estimates for μ k &#39;s, Σ k &#39;s and (Pk}&#39;s as the new μ k &#39;s, Σ k &#39;s and (Pk}&#39;s, repeat Step 2 and Step 3 until the value of λ no longer changes. 
         [0053]    After the clustering process, the final values for μ k &#39;s, Σ k &#39;s and (Pk}&#39;s have been obtained for all values of k. A probability matrix whose entries are the final values of P (k|x n )&#39;s have also been obtained Given a data point, the corresponding row in the probability matrix for this data point can be found Then, it is possible to determine which cluster most likely comes from by looking at the values of P (k 1 xn )&#39;s from this row. The column index which produces the largest value of P (k 1 x n ) is the cluster where it belongs. 
         [0054]    Comparing Models by Bayesian Information Criterion (BIC) 
         [0055]    Suppose the parameters have been estimated for models with different number of components, the “best’ model is selected according to the Bayesian Information Criterion (BIC). The BIC score is defined as λ−(½)*v*log {n), where λ is the value of log likelihood function using the estimated parameters, v is the number of independent parameters of the model, and n is the number of observation. The selected model is that with the highest BIC score. 
         [0056]    For example, if there are two BIC s corresponding to a new model and an old model, they are named BIC new  and BIC old . BIC new =λ new (½)*V new *log {N), and BIC old =λ(½)*V old *log {N). The new model is accepted if BIC new &gt;BIC old , That is, λ new −(½)*V new *log {N)&gt;λ old −(½)*V old *log {N), which is the same as λ new −λ old &gt;(½)*log {N)*(v new −V old ) 
         [0057]    Since BIC is an approximation, it is not 100% accurate. A variable is added to control the BIC. A variable, a, is therefore introduced, such that the Model is selected if λ new −λ old &gt;*(½)*log {N)*(λ new −V old ). In theory, the value of a is 1, but by changing the value of a, the model selected can be controlled For example, if a is set to be relatively small, then there is a high probability that the new model will be selected. If a is set to be relatively large, then there is a high probability that the old model will be selected. 
         [0058]    Standardize the Data Set 
         [0059]    One problem with the data set is that each variable may have different shape in terms of the student t-distribution. Therefore, each variable must be standardized order to let it follow a standard student t-distribution. The steps for such standardization are as follows: 
         [0060]    Consider all data points coming from one cluster. Set initial value of Σ to be the mean of the data points, and set the initial diagonal entries of Σ to be the variances of each variable. 
         [0061]    Find the maximum likelihood estimates for μ m  and Σ m , Create a vector with the diagonal entries of Σ m  and call it var m    
         [0062]    For a given data point x n , standardize it by using (x n −μ m )/√{square root over (var m )} 
         [0063]    Method Steps 
         [0064]    Using these statistical methods explained above, the method steps according to aspects of the present invention is now constructed. If the vehicles have a different number of clusters, they can not be in the same cluster. Hence, the data set can be classified into groups according to the number of the axles. Each group can therefore be partitioned into small groups by grouping vehicles with the same axle pattern{s, d, t, or q) together. Then the method steps are run inside each small group 
         [0000]    1) Standardize said data in sets;
 
2) When said data is standardized in sets, start with k=1;
 
3) Set the initial value of μ k  to be the mean of the data set.
 
4) Set the initial diagonal entries of Σ k  to be the variances of each variable.
 
       5) Set P{K)=1. 
       [0065]    6) Run clustering with the EM algorithm in this cluster.
 
7) Obtain the new values for μ k , Σ k  P(k} and the probability matrix P (k 1 x n )
 
8) Define the BIC for this model as BIC old =&lt;(½)*V old *log {N)
 
9) Set k —prev =k, and
 
10) Repeat the following steps until k —prev =k
       a) Set k —prev =k and a new variable called trace=1.   b) Repeat the following steps until trace_k prev .   (i) Split the cluster at position trace into two clusters using PCA   (ii) Select data points to perform PCA. from the data points that are most likely come from cluster trace by checking the values in the probability matrix P (k 1 x n )   (iii) Run clustering with the EM algorithm for this new model,   (iv) Obtain μ k &#39;s, Σ k &#39;s and (Pk}&#39;s and the probability matrix P (k|x n )&#39;s, and for the new model.   (v) Define the BIC for this new model as BIG new =λ new −(½)=V new =log {N)   V new =log {N)   (vi) If λ new −λ old &gt;a·(½)·{N)·(v new −V old ), then replace the old model with the new model obtained in step (iii).   (vii) Set K=+1   (viii) If λ new −λ old  is not &gt;a·(½)·{N)·(v new −V old ), then keep the original model.   (ix) Trace=trace+1
 
II) Finally report the final model;
 
thereby determining and recognizing the types of vehicles passing the checkpoint to determine and recognize vehicle types in high volume traffic for monitoring traffic volumes of various types of vehicles, forecasting future road maintenance costs and planning and design of future road networks.
 
wherein, in said steps,
 
N=number of data points.
 
V=number of variables.
 
K=number of dusters.
   μ k =the mean for kill cluster, each a vector of length V.
 
f° k:=the covariance matrices for kth duster, each of size V*V.
 
xn.=the nth data point, which is a vector with length V.
 
P(k ! xn:)=the probability that xn comes from cluster k.
 
p(k)=the probability that a data point chosen randomly comes from cluster k.
 
P(xn)=the probability of finding a data point at position xn
 
λ=the value of log likelihood of the estimated parameter set.
       
 
       PCA=Principal Component Analysis 
     BIC=Bayesian Information Criterion 
       [0079]    The clustering result is obtained by checking the values in the final probability matrix. 
         [0080]    Using the final model, any data points may be clustered. For example, if some data points are given, they can be assigned to their corresponding clusters. Using Step 2 to 8 as defined above with the EM algorithm method step a probability matrix can be obtained whose entries are the values of P (k 1 x n ) for all values of cluster k&#39;s and x n &#39;s. From these values it is possible to determine which cluster that each data point most likely comes from by checking the values in the probability matrix. 
         [0081]    If there is a vehicle that seldom appears, and it is desired to cluster it into a single cluster once it appears, this can be accomplished by adding a new cluster to the final model. The value of μ for the new cluster is the same as the variable values for this vehicle. The covariance matrix Σ is a diagonal matrix. The diagonal entries of Σ is set to be very small numbers, namely the variances for each variable are small numbers. The values of P(k) for this cluster are set to be a small number since this vehicle is very rare to appear.