Abstract:
A method is disclosed for determining the correlation among data sets having a numerical attribute and a 0-1 attribute. First, a numerical attribute is divided into a plurality of buckets, and each data set is placed into a single bucket according to the value of the numerical attribute. The number of data sets in each bucket and the number of data sets with a 0-1 attribute of 1 are counted. Second, an axis corresponding to the total number of data sets in a first through a particular buckets (X axis) and an axis corresponding to the total number of data sets with a 0-1 attribute of 1 in a first through a particular buckets (Y axis) are virtually established, and points corresponding to the respective values of the first through the particular buckets are virtually plotted. Third, after a plane is constructed in this manner, one of the pairs of points separated at an interval of T×N or T or larger which has the largest slope is found. This step is most important to fast processing, and this invention employs the nature of convex hulls to reduce the number of points to be considered. Finally, once this pair of points has been determined, the corresponding pair of buckets can be determined, resulting in the output of the corresponding segment. Also, once this process has been finished, the user can retrieve the required part of the data included in this section.

Description:
FIELD OF THE INVENTION 
     The present invention relates to an analysis of the correlation among data sets in a database, particularly to a method for deriving the correlation among data sets having a numerical attribute and a 0-1 attribute. 
     BACKGROUND OF THE INVENTION 
     Analyzing the correlation among data sets in a database to discover a significant association rule among attributes is called &#34;data mining.&#34; 
     The fact that a customer has purchased a commodity A or has a credit card can be considered as data with a 0-1 attribute which can be indicated by 1 or 0. The values 1 and 0 represent, respectively, whether or not the customer has purchased a commodity A (or whether or not the customer has a credit card in the case of the credit card example). Attempts have been made to determine a rule from the correlation based on the 0-1 attribute. For example, R. Agrawal, T. Imielinski and A. Swami, in &#34;Mining association rules between sets of items in large databases,&#34; Proceedings of the ACM SIGMOD Conference on Management of data, May 1993, and R. Agrawal and R. Srikant, in &#34;Fast algorithms for mining association rules,&#34; Proceedings of the 20th VLDB Conference, 1994, describe methods for determining an association rule indicating that &#34;a ratio r of the customers who have purchased a commodity A have also purchased a commodity B.&#34; 
     In conventional relational databases, their query languages can be used to provide a numerical attribute A and an interval I in order to easily determine X in, for example, the question that &#34;X% of the data with A the value of which is included in I has a 0-1 attribute B.&#34; In this case, however, the interval I must be input. Current database systems do not have a function for outputting the interval I. This is because the association rule between the numerical attribute and a set of intervals based on the numerical attribute and the 0-1 attribute has a very large searching space. 
     For example, given a database for data on bank customers, it is very useful to be able to determine an interval I that meets an association rule for a combination of a numerical attribute (e.g., an increase in the amount of a fixed deposit) and an 0-1 attribute (e.g., whether or not a credit card is used). The association rule may then be used for determining, for example, a percentage X of those customers whose increase in the balance of a fixed deposit is included in the interval I use a credit card. There are many intervals I that meet this association rule depending on the minimum range of X or the interval I. However, if this association rule is modified to the rule that customers whose increase in the balance of a fixed deposit is included in the interval I, that includes T% or more of all the customers, are most likely to have a credit card, then the interval I can be substantially uniquely determined. The determination of the interval I is very useful because the largest class of customers who use a credit card can be determined so that the number of direct mails to be sent can be kept to a minimum. Thus, advertizing costs are minimized. 
     The above inquiries are also applicable to databases with a large number of data sets, so it is essential to be able to process such a large number of data sets in practical time. 
     It is thus an objective of this invention to enable the determination of the correlation among data sets with a numerical attribute and a 0-1 attribute. 
     It is another objective of this invention to execute the above processing at a high speed. 
     It is yet another objective of this invention that if the rate of data sets with their numerical attribute z included in the interval I= r1, r2! is defined as a support for the interval I, and the rate of data sets with their numerical attributes z included in the interval I which have a 0-1 attribute (a) of 1 is defined as a degree of confidence, then the interval I with both a maximum degree of confidence and a support of T or larger can be determined. This interval I is referred to as an optimized confidence rule. 
     SUMMARY OF THE INVENTION 
     The invention can be divided into the following four sections. 
     (1) A numerical attribute is divided into a plurality of intervals (buckets), and each data set is placed into a single bucket according to the value of the numerical attribute. The number of data sets in each bucket and the number of data sets with a 0-1 attribute being 1 are counted. 
     (2) An axis (x axis), corresponding to the total number of data sets included in the first bucket through a particular bucket, and an axis (y axis), corresponding to the total number of data sets with a 0-1 attribute being 1 in the first bucket through a particular bucket, are virtually established. Points corresponding to the respective value set of the first through the particular buckets are virtually plotted. &#34;Virtually&#34; herein means that these elements are not necessarily actually displayed on a display or other device. 
     (3) After the plane is constructed in this manner, one of the pairs of points separated at an interval of T×N, or larger, which has the largest slope is searched. This step is the most important to fast processing, and this invention employs the nature of convex hulls to reduce the number of points to be considered. 
     (4) Once this pair of points has been determined, the corresponding pair of buckets can be determined, resulting in the output of the corresponding interval. Once this process has been finished, the user can retrieve the required part of the data belonging to this interval. 
     In short, in a database having N data sets, each including a numerical attribute and a 0-1 attribute, this invention provides a method for deriving an optimized confidence rule from computing an interval of the numerical attribute. In the interval, the probability of the 0-1 attribute being 1 is the largest and a predetermined ratio T or more of the N data sets exists. This method includes the of: (a) counting the number of data sets included in each bucket which is arranged along an axis corresponding to the numerical attribute, and counting the number of data sets included in each bucket, whose 0-1 attributes are 1; (b) virtually constructing a plane using a first axis corresponding to the first total number of data sets included up to each bucket and a second axis corresponding to the second total number of data sets included up to each bucket whose 0-1 attributes are 1, and virtually plotting on the plane each point corresponding to each value set of the first and second total numbers; (c) extracting a pair of points whose distance is equal to or more than T×N in the direction of the first axis, whose connection line has the largest slope; and (d) outputting the interval corresponding to buckets between the pair of points. This enables an optimized confidence rule to be determined. 
     It is also conceivable that each bucket is set so as to include a substantially identical number of data sets. 
     It is also conceivable that the fast counting step, with the substantially identical of data sets in each bucket, includes the steps of: (a) randomly sampling X of the N data sets; (b) sorting the X data sets according to the value of the numerical attribute; (c) holding the value of the numerical attribute of the i×X/M-th (i=1, 2, . . . , M-1; M is the number of buckets) of the sorted data sets; and (d) counting the number of data sets included in each data set, based on the held value. 
     It is also conceivable that the extracting step includes the steps of: (a) virtually creating a lower part of a plurality of convex hulls by sequentially connecting the plotted points together from the left of the first axis; (b) virtually creating an upper part of a plurality of convex hulls by sequentially connecting the plotted points together from the right of the first axis; (c) detecting inner tangents between one of the lower convex hulls and one of the upper convex hulls, the leftmost end of which is the point spaced T×N in the direction of the first axis apart from the rightmost end of the one of lower convex hulls, the inner tangents having the largest slope; and (d) selecting one of the pairs of points constituting a plurality of detected inner tangents. The inner tangent of the one of the pairs has the largest slope in the detected inner tangents. This enables the fast processing described above. 
     In another aspect of the invention, in a database having data sets each including a numerical attribute and a 0-1 attribute, the invention provides a method for deriving an optimized confidence rule from computing an interval of the numerical attribute. In the interval, the probability of the 0-1 attribute being 1 is the largest and predetermined B or more data sets are included. This method includes the steps of: (a) counting the number of data sets included in each bucket which is arranged along an axis corresponding to the numerical attribute, and counting the number of those data sets included in each bucket, whose 0-1 attributes are 1; (b) virtually constructing a plane using a first axis corresponding to a first total number of data sets included in a first bucket through a particular bucket and a second axis corresponding to the total number of data sets included in a first bucket through a particular bucket whose 0-1 attributes are 1, and virtually plotting on the plane each point corresponding to each value set of the first and second total numbers; (c) extracting a pair of points spaced an interval of B or larger in the direction of the first axis apart, whose connection line has the largest slope; and (d) outputting the interval corresponding to buckets between the pair of points. The condition to be set may thus be the number of data sets. In this case, the more specific process as described above can also be used. 
     Another form of this invention that is typically conceivable is the implementation of the above method using an apparatus specially constructed, computer programs, or a medium that stores such computer programs. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIG. 1 is a flowchart showing the bucket processing steps; 
     FIG. 2 is a flowchart showing the use of a plurality of processor elements for the bucket processing; 
     FIG. 3 is a drawing showing the state of the buckets after the bucket processing has ended; 
     FIG. 4 shows an example of a convex hull; 
     FIGS. 5 and 6 show the steps for creating a lower convex hull L; 
     FIG. 7 is a flowchart showing a process for creating the lower convex hull L; 
     FIG. 8 illustrates an upper convex hull U; 
     FIG. 9 shows the transition of the states of stacks required for the process in FIG. 7; 
     FIG. 10 shows a stack array; 
     FIG. 11 is a flowchart showing a process for creating the stacks initially and a stack array; 
     FIG. 12 is a flowchart showing a process for creating the convex hull U from the stack array and the stack; 
     FIG. 13 illustrates an initial step for producing an inner tangent for the convex hulls L and U; 
     FIG. 14 illustrates an example of the processing for case 1 referred to in the detail description section; 
     FIG. 15 shows part of the processing for case 2 referred to in the detail description section; 
     FIG. 16 is a flowchart showing the processing for case 1 referred to in the detail description section; 
     FIG. 17 is a flowchart showing the processing for case 2 referred to in the detail description section; 
     FIG. 18 is a flowchart showing the processing for case 2 referred to in the detail description section; 
     FIG. 19 shows the configuration of a typical general purpose computer in which this invention is implemented; and 
     FIG. 20 is a block diagram showing a special apparatus in which this invention is implemented. 
    
    
     DESCRIPTION OF THE PREFERRED EMBODIMENT 
     The method steps of the present invention are now described in detail. 
     1. Bucket processing 
     A particular range of the value of a numerical attribute of data set is partitioned into buckets, which can be expressed as B 1 , B 2 , B 3 , . . . , B M , where B i  = x i , y i  !, x i  ≦y i  &lt;x i  +1). The value of the numerical attribute of data set is included in one of the buckets. B i  = x, x! may be used if high resolution is required. 
     It is conceivable that all the data sets are sorted according to their numerical attributes in order to examine which bucket should contain each data set. If, however, such processing is to be executed and the database contains a very large number of data sets, they cannot be processed within the computer main memory, resulting in a failure to finish the process in practical time. The following process is thus required. 
     It is assumed that there are N data sets and that they are to be put into M buckets. It is also assumed that the i-th bucket cannot be put into the (i+1)-th bucket. 
     (a) (M×N) 0 .5 data sets are randomly sampled from the entire data set (step 110 in FIG. 1). For example, if M is about 1,000 and N is about one billion, then (M×N) 0 .5 is about one million. This process can be performed in the main memory of the computer. 
     (b) The randomly sampled data is sorted (step 120). Calculations can be carried out in the order of O((M×N) 0 .5 ×log (M×N)). 
     (c) The i(N/M) 0 .5 -th value is stored as p i  (step 130). In this case, p o  =-∝ and p M  =∝. 
     (d) The data sets are put into different buckets (step 140). A bucket B i  contains a data set with x corresponding to p i  &lt;×≦p i  +1. This step can be executed in the order of O(NlogM) using binary search. At the same time, the number of data sets in each bucket and the number of data sets with a 0-1 attribute being 1 are counted. 
     With the above method, the data can be generally processed in the order of O(NlogM). In addition, if the number of data sets to be sampled is (M×N) 0 .5, it is very likely that the number of errors can be reduced from M/2N to 2M/N. 
     Although step (d) takes the largest amount of time, parallel processing can be used to easily reduce the amount of time. That is, the data of the database is divided into the processor elements (as shown by step 210 of FIG. 2). A main processor element carries out steps (a) to (c) (as shown by step 220 of FIG. 2). Each of the other processor elements executes step (d) (shown by step 230 of FIG. 2). The main processor element collects and aggregates the results from each of the other processor elements (step 240 of FIG. 2). This method reduces the amount of data communication among the processor elements, and also reduces the amount of processing time due to the parallel processing of step (d) that is subjected to substantial loads. 
     In this manner, the initial processing of the buckets is completed. 
     2. Plane construction 
     Once the buckets have been prepared as described above, consecutive buckets with T or larger support and a maximum degree of confidence are retrieved. The buckets are referred to as B 1 , B 2 , B 3 , . . . , B M , and the number of data sets in each bucket is u i  (i=1, 2, . . . , M) and the number of data sets required to meet a condition is v 1  (i=1, 2, . . . , M)). Support (s, t) is a support for x s  ≦A≦y t , where A represents the attribute of data set. It is actually the number of data sets in a set of consecutive buckets B s , B s+1 , B s+2 , . . . , B t  divided by the total number of data sets N, and can be expressed as follows: ##EQU1## 
     Conf (s, t) is a confidence for x s  ≦A≦y t  which meets a condition C. It can be expressed as follows: ##EQU2## 
     The objective of this invention is to determine s and t which provide T or larger support (s, t) and the largest conf (s, t). ##EQU3## 
     To achieve this objective, a plane comprising two axes, (u) and (v) is assumed, and points Q k  (k=1, 2, . . . , M) are plotted on the plane. In this case, Q 0  is (0, 0). 
     3. Extraction of a pair of points with the largest slope 
     It is easily understandable that on the above plane, the slope of a line Q m  Q n  constitutes conf (m+1, n). Consequently, as described above, an objective of this invention is to meet a condition in which m&lt;n and support (m+1, n)≧T and in which conf (m+1, n) is the largest. That is, to find Q m  and Q n  with an interval therebetween of N×T or larger and the largest slope of the line Q m  Q n . 
     If a plurality of lines Q m  Q n  have the same slope, one of them with the largest width between Q m  and Q n  shall be selected. 
     Methods that can be used to solve this problem are described below. It is first assumed that two convex hulls are created. That is, Q i  lines are connected together to produce convex hulls L and U that are convex and spaced at an interval of at least T×N. Two certain points on one of the inner tangents between the convex hulls which has the largest slope should be determined. FIG. 4 illustrates this concept. For simplification, the two axes are denoted by x and y. The convex hulls are used to reduce the number of required calculations, based on the fact that those points inside the convex hull which do not constitute the frame of the hull never have the largest slope (conf (m+1, n)). Also, a larger number of points on the frame of the convex hull need not be computed despite their location on the frame of the hull due to the characteristics of the convex hull. For example, once a detected slope has started to decrease, it no longer increases. Since the largest slope is required, the data in the upper part of the convex hull L and in the lower part of the convex hull U need not be held as shown in FIG. 4. Thus, as described below, in step (A), the lower part of the convex hull L is examined. In step (B), the upper part of the convex hull U is examined. In step (C), one of the inner tangents between these two parts which has the largest slope is found. 
     (A) Step for detecting and holding the lower part of the convex hull L 
     The convex hull L can be considered as a set of Q i  lines. The convex hull L from Q 0  through Q m  is referred to as L m  and expressed as {Q 0 , . . . , Q m  }. First, FIG. 5 is referenced. This figure shows a process for creating the convex hull L from Q 0 . Q 0  and Q 1  can be connected together by simple connection, but attention must be paid to Q 2 . That is, it must be considered whether or not Q 1  and Q 2  may be connected together. When a convex hull is created, Q 1  and Q 2  can be connected together without problems as long as Q 2  is located above a line Q 0  Q 1 . If, however, Q 2  is located below the line Q 0  Q 1 , simply connecting Q 0 , Q 1 , and Q 2  together does not result in a downward convex. Thus, in this case, Q 1  is removed, and Q 0  and Q 2  are connected together to form a convex hull L 2  {Q 0 , Q 2  }. 
     The condition shown in FIG. 6 must be considered. In this case, Q 0 , Q 1 , and Q 2  can be simply connected together according to the rule described above. That is, L 2  {Q 0 , Q 1 , Q 2  } is formed. When L 3  is considered, however, it is easily understandable that Q 2  and Q 3  cannot be connected together (Q 3  is located below a line (a) between Q 1  and Q 2 ), but a line (b) cannot be established between Q 1  and Q 3  because Q 3  is located below a line (c) between Q 0  and Q 1 . Thus, a line (e) is established between Q 0  and Q 3 . 
     Thus, an accurate convex hull may not be always held by using a newly added point and a preceding line that constitutes part of the convex hull, so the following steps are sometimes required (see FIG. 7). In this case, L m-1  ={Q 0 , . . . Q q-1 , Q q  } Q q  is the leftmost point of L m-1 , and index q is decremented in subsequent steps, but not mathematically. That is, Q q  depicts a point Q that is included in L m-1  in which this point sequentially shifts leftward on the xy plane. Referring to FIG. 7, the process starts with step 300. In step 31 0, initialization is carried out to set i=0 and an input for m is received, where m is the current index of L plus 1 (2≦m≦M). The slope of the connection line Q q-i  Q m  between the i-th point Q q-i  from the rightmost point Q q  of L m-1  and Q m  is compared to that of the connection line Q q-1-i  Q q-1  between the i-th point Q q-1-i  from the second rightmost point Q q-1  of L m-1  and the i-th point Q q-1  from the rightmost point Q q  (step 320). If the former is larger than the latter, the process is ended with L m  ={L m-1 , Q m  } (steps 330 and 380). If Q q-i  that is not included in the convex hull L m  of Q m  is removed in step 360, L m-1  does not include the removed Q q-i . If, however, the former is smaller than the latter in step 320, Q q-1-i  =Q 0  in some cases, so this matter is first considered (step 340). If Q q-1-i  =Q 0 , simply connecting Q 0  and Q m  together forms a convex hull, so the process is ended with Lm={Q 0 , Q m  } (steps 350 and 380). If Q q-1-i  is not Q 0 , however, Q q-1  is removed from L m-1  that is used to create L m  because it has been found that this point cannot be included in L m  (step 360). The value of i is incremented by one, and the process returns to step 320 (step 370). This process the convex hull L m  to be sequentially detected and held for any m of three or larger. 
     (B) Step for holding the upper part of the convex hull U 
     The example of FIG. 8 is first considered. There are 10 points from Q 0  to Q 9 , and these points are processed from the right. A single stack and a single stack array are prepared, and used to create and hold U m . Processing from the right means that the processing sequentially proceeds from Q 9  through Q 0 . Two points called a &#34;top&#34; and a &#34;second&#34; are established. The top is generally the leftmost point of U m-1 , and is given as a function Top (U m-1 ). If, however, any points including the leftmost point have been removed from U m-1 , the point located to the right of the previous leftmost point at an interval corresponding to the removed points (which belongs to U m-1 ) will become the top. Specifically, the top is the uppermost point in the stack. Likewise, the second is generally the second leftmost point of U m-1 , and is given as Second (U m-1 ). As in the top, if any point has been removed, the point next to the point to be the top on the right side (which belongs to U m-1 ) will become the second. Specifically, the second uppermost point in the stack will be the second. 
     FIG. 8 shows that U 8  is initially composed of Q 9  and Q 8 . Q 9  and Q 8  are thus pushed into the stack (a) of FIG. 9. Since the constitution of U 7  is subsequently considered, the position of Q 7  is checked. Then, the uppermost point Q 8  in the stack is the top, and the point Q 9  immediately below Q 8  is the second. Q 7  Q 8 , that is, the slope of the line between the top and the second is compared to Q 8  Q 9 , that is, the slope of the line between the newly added point and the top. It is then found that Q 7  Q 8  has a larger slope. In this case, the new point Q 7  is pushed into the stack (b) of FIG. 9. The stack array (FIG. 10) is used to record points that have been removed from the preceding stack when i is decremented by one. No point has been removed when i has become 7 from 8. That is, when U 7  has been determined from U 8 , nothing is pushed. Although in this example, there are only ten points, a huge amount of data must be generally used, so U is not always held. Only the initial U (in this case, U 0 ) and the stack array, however, are held to create an arbitrary U as required. 
     Next, addition of Q 6  is considered. The abovementioned top and second are the uppermost and the second uppermost points Q 7  and Q 8 , respectively, in the stack (b) of FIG. 9. The slopes of Q 6  Q 7  and Q 7  Q 8  are determined and compared. It is then found that Q 7  Q 8  has a larger slope. Thus, simply connecting Q 6  and Q 7  together does not result in the formation of a convex hull. The top, that is, Q 7  is then popped from the stack and removed from U 6 . As described above, since the stack array is used to contain removed points, Q 7  is pushed into the i=6 section of the stack array (D 6  in FIG. 10). Q 8  becomes the uppermost point in the stack, that is, the top. In addition, Q 9  becomes the second uppermost point becomes, that is, the second. A check is again conducted, that is, the slopes of Q 6  Q 8  and Q 8  Q 9  are examined and compared. It is then found that Q 6  Q 8  has a larger slope, so U 6  is composed of Q 6 , Q 8 , and Q 9 . Q 6  is thus pushed into the stack (c) of FIG. 9. 
     Likewise, U 5  is calculated. The position of Q 5  is then found to be as in U 6 . Q 6  is popped from and Q 5  is pushed into the stack (d) of FIG. 9, respectively. Q 6  is pushed into the i=5 section of the stack array (D 5  in FIG. 10). 
     For U 4  and U 3 , the process is ended after only the addition of Q 4  and Q 3  (which correspond to the stacks (e) and (f) of FIG. 9, respectively). 
     Next, U 2  is considered. In this case, the top is Q 3  and the second is Q 4 . As described above, when the slope of Q 2  Q 3  is compared to that of Q 3  Q 4 , it is found that the latter is larger. Q 3  is then popped from the stack (g) of FIG. 9, and pushed into the i=2 section of the stack array (D 2  in FIG. 10). Then, the top is Q 4 , and the second is Q 5 . Likewise, when the slope of Q 2  Q 4  is compared to that of Q 4  Q 5 , it is again found that the latter is larger. Q 4  is then popped from the first stack (h) of FIG. 9, and pushed into the i=2 section of the stack array (D 2  in FIG. 10). Then, the top and the second change to Q 5  and Q 8 , respectively. When the slope of Q 2  Q 5  is compared to that of Q 5  Q 8 , it is found that the former is larger. The processing of U 2  is ended by pushing Q 2  into the first stack i of FIG. 9. 
     As in the case of U 2 , U 1  is now calculated, resulting in Q 1 , Q 8 , and Q 9  being pushed into the stack (j) of FIG. 9, and Q 2  and Q 5  being pushed into the i=1 section of the stack array (D 1  in FIG. 10). 
     The processing of the last U 0  is ended after a single comparison, resulting in the set of points in U 0  shown in stack (k) of FIG. 9 and the stack array shown in FIG. 10. 
     In this manner, all the convex hulls are calculated during the process, but only the state of the stack U 0  and the stack array are retained. The state of the stack U 0  and the stack array can be used to calculate each U. For example, to calculate U 1 , Q 0  is removed from U 0 , and points stored in the i=0 section of the stack array are added. In this case, there is no point in this section, so U 1  is composed of the points shown in stack (j) of FIG. 9. To calculate U 2 , Q 1  is removed from U 1 , and Q 2  and Q 5  in the i=1 section of the stack array are added. This provides U 2  shown in stack i of FIG. 9. Likewise, to calculate U 3 , Q 2  is removed from U 2 , and Q 3  and Q 4  in the i=3 section of the stack array are added. The points shown in stack (f) of FIG. 9 then constitute U 3 . 
     The repetition of such a process enables the x-y plane to be processed from right to left while reducing the load of processing from left to right which is actually required. 
     FIG. 11 illustrates this process. The process is initiated in step 500, and initialization is carried out in step 510 to set i=M-2. M is the number of points Q, and Q M  and Q M-1  have already been pushed into the stack. The slope of a line Q i  Top(U i+1 ) between Q i  and Top(U i+1 ) is compared to that of a line between Top(U i+1 ) and Second(U i+1 ) (step 520). If the former is equal to or smaller than the latter, Q i  is pushed into the stack in step 530, and i is decremented by one in step 540. It is then determined in step 550 whether or not Q i  with the decremented i is the point at which the process should be ended. The convex hull L 0  is Q 0 , but calculations are insignificant unless Q i  is spaced an interval of T×N apart from Q 0 . It is thus determined whether or not this condition is met. If so, the process is ended in step 580. Otherwise, a new Q i  is processed in step 520. 
     If the slope of Q i  Top(U i+1 ) is large in step 520, Top(U i+1 ) is popped from the stack, and the popped Top(U +1 ) is pushed into the i section of the stack array in step 560. Then, the uppermost point in the stack is Top(U i+1 ), and the second uppermost point in the stack is Second(U i+1 ) in step 570. The top and the second are changed in this manner, and the process returns to step 520. This process is repeated until Q i  where the process is to be ended is reached. 
     This process requires calculations in O(M) (M is the number of points). FIG. 12 shows a method for determining U m  with a certain m. In this case, U m-1  and the stack array have already been prepared. The process is initiated in step 700, and m is set to the current index of U plus 1 in step 720. Since U m-1  has already been prepared, Q m-1  is removed from U m-1  in step 720. Points in D m-1 , that is, the m-1 section of the stack array are pushed into the stack in step 730. U m  is thus completed to end the process in step 740. This process requires only an order of O(1). 
     (C) Step for calculating an inner tangent. 
     The following method can be used to calculate the lower part of the convex hull L and the upper part of the convex hull U. The process then calculates an inner tangent with the largest slope. First, related notations are described. U r (m) is a point that is spaced an interval of N×T or larger apart from Q m  and which has the smallest number. That is, if U r (m) =U i , then min {i|m&lt;i, support (m+1, i)≧T}. 
     The starting point of the convex hull L which is used to examine the slope is denoted by Q s , and the point of the convex hull U which has the largest slope relative to the starting point Q s  is referred to as Q t . 
     First, L 0  is considered. L 0  is composed of only Q.sub. 0 . Then, the upper convex hull is U r (0). The leftmost point of U r (0) is Q r (0). Since L 0  is composed of Q.sub. 0 , naturally the starting point is Q.sub. 0  and Q 0  =Q s0 . 
     Using Q s0  as the starting point, points are sequentially examined clockwise from Q r (0) to find a point with the largest slope. In this case, while confirming that the slope continues to increase, a point from which the slope starts to decrease is found, and the preceding point is determined as Q t0 . This operation can be performed because due to a characteristic of the convex hull, the slope no longer increases once it has started to decrease. The number of calculations is thus reduced. Due to another characteristic of the convex hull, U with an index of larger than r(0) need not be examined for a single Q s . If the starting point is the same, points located to the left of the determined point Q t  have a smaller value of y and thus a smaller slope. The points located to the right of Q t  are included in U r (m) and cannot constitute a convex hull. The number of calculations is thus reduced. An example of this process is shown in FIG. 13. The two determined points are stored. 
     The general processing executed after a single Q s0  Q t0  has been determined is described below. 
     The processing of L m  and U r (m) is first considered. In this case, Q s (m-1) Q t (m-1) has been detected as an inner tangent with the largest slope during the processing of L m-1  and U r (m-1). 
     Case 1: 
     Assume t m-1  =r(m) -1, that is Q t (m-1) is no longer included in U r (m) due to the incrementation of m by one. In this case, the process depends on whether Q.sub. m  (the rightmost point of L m ) is located below an inner tangent Q s (m-1) Q t (m-1) already determined (case 1a) or above this inner tangent (case 1b). 
     In the case of (1a), using Q m  as the starting point, the slope is sequentially detected clockwise from Q r (m). The point preceding to the point from which the slope starts to decrease is determined as Q tm . This process is similar to that for Q 0 , and no further processing is required. An example of this process is shown in FIG. 14. In the case of (1b), the starting point is Q s (m-1). The slope is sequentially detected clockwise from Q r (m). Subsequent processing is carried out as in (1a). 
     Case 2: 
     In this case, r(m)≦t m-1 , that is, Q t (m-1) remains included in U r (m) despite the incrementation of m by one. Again, the process depends on whether Q m  is located below inner tangent Q s (m-1) Q t (m-1) already determined (case 2a) or above this inner tangent (case 2b). 
     In the case of (2a), no further processing is required because an inner tangent Q s (m-1) Q t (m-1) already determined has the largest slope. In the case of (2b), the starting point is set as Q m , and for U r (m), searching is executed counterclockwise from Q t (m-1). While the slope continues to increase, the slope for the next point is calculated. When the slope starts to decrease, the preceding point is determined as Q tm . This process is shown in FIG. 15. 
     The repetition of this process from m =1 until m =M enables a pair of points with the largest slope to be determined in each pair of L m  and U r (m). The solution will then be one of the pairs of points which has the largest value. 
     The above-described process for detecting an inner tangent is illustrated in FIGS. 16,17, and 18. 
     To determine an initialized value, the process starts with step 900 of FIG. 16. The slope of Q 0  Q r (0) is determined in step 910. The value of i=1 is subsequently set in step 920. In step 930, it is determined whether the slope Of Q 0  Q r (0)+i is smaller than the preceding one. If so, Q 0  and Q r (0)+i-1 are output as a solution to end the process in step 940. The process ends in step 960. If the slope of Q 0  Q r (0)+i is not smaller than the preceding one, the i is incremented to repeat the process. This allows Q t0  to be determined. Since ideals with only the points included in a convex hull, the incrementation of i means that the points inside the convex hull are sequentially examined. Thus, i is not equal to the number of the point. This is also applicable to FIGS. 17 and 18. 
     In FIGS. 17 and 18, the process is initiated in step 1210, and initialization is carried out to set m=1 in step 1220. It is subsequently checked in step 1230 whether or not Q t (m-1) is included in U m , and if not, the process proceeds to step 1240. This case is the same as the case 1 above. If Q t (m-1) is included in U m , the process proceeds to step 1380 (FIG. 18). This case is the same as the above case 2. The former case is first described. It is checked in step 1240 whether or not Q m  is located below Q s (m-1) Q t (m-1). If the result of this determination is positive, the slope Of Q m  Q r (m) is determined in step 1250. i=1 is then set in step 1260, and it is checked in step 1270 whether or not the slope of Q m  Q r (m)+i is smaller than the preceding one. If the result of this determination is negative, i is incremented by one, and the process returns to step 1270 (step 1280). If i=M (the last value of Q) is reached, Q M  will be the solution. If it is determined in step 1270 that the slope of Q m  Q r (m)+i is smaller than the preceding one, Q m  and Q r (m)+i-1 are output in step 1290. The solution for a single m has been obtained, so m is incremented by one (step 1350). 
     If it is determined in step 1240 that Q m  is not located below Q s (m-1) Q t (m-1), the slope of Q s (m-1) Q t (m-1) is determined using Q s (m-1) as the starting point in step 1300. i=1 is then set in step 1310, and it is checked in step 1330 whether or not the slope of Q s (m-1) Q r (m)+i is smaller than the preceding one. If the result of this determination is negative, i is incremented by one in step 1320, and the process returns to step 1330. If m=M is reached as described above, Q M  is output (not shown). If it is determined in step 1330 that the slope of Q s (m-1) Q r (m)+i is smaller than the preceding one, Q s (m-1) Q r (m)+i-1 is output in step 1340. m is incremented by one in step 1350. 
     The process returns to step 1230, and continues in FIG. 18, if Q t (m-1) is included in U m , and determines whether or not Q s (m-1) Q t (m-1) is located below Q m  in step 1380. If the result of this determination is negative, the solution will be Q s (m-1) and Q t (m-1), which are then output, as described above (step 1440). If, however, the result of step 1380 is positive, the slope of Q m  Q t (m-1) is determined in step 1390. i=1 is then set in step 1400, and it is checked in step 1410 whether or not the slope of Q m  Q t (m-1-i) is smaller than the preceding one. If this slope is not smaller than the preceding one, i is incremented by one in step 1420, and the process returns to step 1410. Otherwise, Q m  and Q t (m-i) are output in step 1430. 
     After each of steps 1440 and 1430, m is incremented in step 1450, and the process returns to step 1360 in FIG. 17 wherein it is checked whether or not m has a value that causes the process to be ended. That is, since Q m  and Q r (m) must be spaced an interval of at least T×N from each other, the process is ended if Q r (m) goes beyond Q M . If m has such a value, the process is ended in step 1370. Otherwise, the process returns to step 1230. 
     As described above, one of the pairs of solutions determined which has the largest slope is determined as the final solution. If a plurality of pairs have the same slope, the one with the largest support, that is, with the largest width in the X direction is determined as the final solution. 
     The two required points have thus been obtained. 
     4.Interval output 
     The solution determined is Q sm  and Q tm , and as is apparent from the above description, the data included in the buckets between B.sub.(sm+1) and B tm  meets the requirements of this invention. Therefore, the section between x sm+1  of B.sub.(sm+1) and y tm  of B tm  is the target interval I. 
     By obtaining the interval I, the user can easily retrieve the required attributes of data included in the interval I. The attributes required by the user include, for example, data such as customers&#39; names and addresses that are required in sending direct mails and customer IDs that are required in extracting customers who are likely to become bankrupt and which are used to stop loans to such customers. In relational databases, once the interval I has been determined, subsequent operations are easy, as described in the Background of the Invention section, so further description is omitted. 
     The process according to this invention has been described. This process may be implemented and executed by computer programs. For example, such programs can be executed by a normal computer such as shown in FIG. 19. Processing programs are stored in a hard disk drive (HDD) 1050, and in operation, loaded in a main memory 1020 and processed by a CPU 1010. The HDD 1050 includes a database that is accessed by the processing programs. The user inputs a value of a support T and data output instructions in an input device 1070. A display device 1060 displays a interval I determined and the required attributes of data included in the interval I as required. Input devices include a keyboard, a mouse, a pointing device, and a digitizer. The results of output can be stored in a floppy diskette (FDD) 1030 that is a sub-storage device, and new data can be entered therefrom. A CD-ROM drive 1040 can be used to input data. 
     Computer programs for implementing the process according to this invention can be stored and carried in a storage medium such as a floppy disk or a CD-ROM. In this case, the data retrieval portion of normal database retrieval programs or programs that perform only display operations in a display device 1060 may be already stored in the HDD 1050. Thus, the other portions or programs are normally carried in such a storage medium. 
     A special apparatus for executing only the process according to this invention may be provided. For example, an apparatus such as shown in FIG. 20 is conceivable. A database 1500 is connected to a bucket processing section 1510 and an output section 1540, and the bucket processing section 1510 is connected to a plane constructing section 1520. The output of the plane constructing section 1520 is connected to a line with maximum slope extracting section 1530 with its output connected to the output section 1540. An input section 1550 is connected to both the output section 1540 and the line with maximum slope extracting section 1530. 
     The bucket processing section 1510 carries out the bucket processing described above, and counts both the number of data sets in each bucket and the number of data sets with a 0-1 attribute of 1. The plane constructing section 1520 uses the results of the counting to carry out the plane construction processing as described above. Then, points Q the number of which corresponds to the number of the buckets are virtually plotted. Using the constructed plane, the line with maximum slope extracting section 1530 extracts a pair of points with the large slope according to a support T from the input section 1550, as described above. This enables the determination of two points Q corresponding to an interval I to be determined. The output section 1540 determines the interval I from this result, and extracts the appropriate attributes of data included in the interval I in response to a signal from the input section 1550 that transmits the user&#39;s input. The attributes are displayed on a display device (not shown), printed on a printing device, or stored in a floppy or a hard disk. 
     The apparatus in FIG. 19 is only an example, and any apparatus that can execute the above processing can be used for this invention. For example, a control section for controlling the overall process is provided to determine both the overall flow of processing and the output form of a signal from the input section 1550. 
     As described above, the correlation among data sets with a numerical attribute and a 0-1 attribute has been successfully determined. 
     The above processing has been successfully carried out at a high speed. 
     The interval I with both the maximum degree of confidence and T or larger support has been successfully determined.