correspondences this week from: arjun roy sent: sunday, march 02, 2014 8:14 pm subject: c++/c#...

Download Correspondences this week From: Arjun Roy Sent: Sunday, March 02, 2014 8:14 PM Subject: C++/C# Compiler I did some tests to compare C/C++ Vs C# on some

If you can't read please download the document

Upload: leonard-rodgers

Post on 17-Jan-2018

215 views

Category:

Documents


0 download

DESCRIPTION

FCC on IRIS150 DT=1 PCCs have to involve a high of at least 5 and be at least 60% change from high. Gaps must be at least 3 C 1 C 1(1s,0e,0i) Gap Preservation: Let D k = e k oX +  jThrSt (Here ThrSt=0.2, so D=1011). Make Gap and PCC cuts on Y o D, where Y is Gap Preserving shift of X

TRANSCRIPT

Correspondences this week From: Arjun Roy Sent: Sunday, March 02, :14 PM Subject: C++/C# Compiler I did some tests to compare C/C++ Vs C# on some basic operation to see if the compilers handle the cases differently. I executed Dr. Wettstein's code in libPree library on Linux Ubuntu and my C# code on Windows 7. 4 GB RAM. C/C++C# OR1 million1.1 sec millisec OR10 million23.33 sec1.016 millisec OR100 million sec millisec OR100 million sec millisec AND1 million0.99 sec millisec AND10 million23.29 sec millisec AND100 million sec millisec AND100 million sec millisec Number of 1's1 million0.49 sec millisec Number of 1's10 million5.11 sec millisec Number of 1's100 million55.73 sec millisec Number of 1's100 million55.73 sec millisec Either I am doing something incredibly wrong or these results are just great from C# point of view. Md, please run some test with Dr. Wettstein's code? I can ask Damien in the middle of the week about C# timings. Thanks,Arjun Either I am doing something incredibly wrong or these results are just great from C# point of view. Md, please run some test with Dr. Wettstein's code? I can ask Damien in the middle of the week about C# timings. Thanks,Arjun From: William Sent: March 03, 2014 To: 'Mark Count of objects in the n=sphere may also fall quickly to zero, If it falls at about the same rate as volume, then density (quotient of them) should remain meaningful for large n 2. Theorem limit n infinity volume(nsphere(r))=0 is true for all radii, r, but convergence is slower the higher the r. The n at which the volume peaks gets high for large r. There's a formula for that peak dim (as a function of r) but it's nasty. Might be a simpler calc giving us an r that pushes the peak out near the dataset dimension(e.g., n=10,000). That r would still give us a density but not a local one (getting a very average density measure rather than a precise local one). 3. Attribute elimination thru relevance analysis may be required in order to get a meaningful clustering (reducing n). The question is Relevant to what? since there is no class label. Thats why weve looked into variance measurements. They provide some basis for eliminating columns if a column has low variance, it may not contribute to big gaps Im hoping 1. Is solution, but will continue to look into it this week. From: Mark Sent: March 03, 2014 To: William; Damian Subject: n-sphere density... In preparation for coding the faust cluster, I looked at the density calculation. As we are dealing with highly dimensional data, I looked at an approx of n-ball volume it looks like this value falls very quickly to 0 as the number of dims increase, which makes this a bit hard to use. My first thought was that we dont really care that we dont have a precise measurement of density since this is really just a knob someone is turning, and they will stop when they see meaningful clusters. However, the knob should behave the same way if we have 10,000 dimensions as it does if we have 3, and I suspect it does matter. Thoughts? From: William Sent: Tuesday, March 04, :24 AM To: 'Mark; 'Damian' So for the calculation, do we just get radius from the furthest point to the mean, count points in the cluster, and divide by n-ball volume? Should work, but requires the following steps (expensive?): 1. Calculate the SPTS, SQDM = (X-Mean) dot (X-Mean) 2. Approximate the maximum value in the SPTS, SQDM. We dont need to identify furthest point. We just need the approx distance to it, by: IF OneCount{ HiBit(SQDM) & 2ndHiBit(SQDM) } >0 r ~= 2^(HiBit)+2*(2ndHiBit). ELSE r ~= 2^(HiBit) (where HiBit is the highest bit of SQDM with Count > 0) Building SQDM is expensive, so it might work just as well to do the above thing to a SPTS that we get for free, namely the column of the given X with maximum RawSpread=Max- Min (Outlier elimination may not be necessary it gives a CoreSpread measurement): Let Xk be column with maximum [core] spread (maximizes (max-min) after outliers are removed from both ends leaving core of the Xk values). 2. Approximate the maximum value in the SPTS, SQDM. We dont need to identify furthest point. We just need the approx distance to it, by: IF OneCount{ HiBit(SQDM) & 2ndHiBit(SQDM) } >0 r ~= 2^(HiBit)+2*(2ndHiBit). ELSE r ~= 2^(HiBit) (where HiBit is the highest bit of SQDM with Count > 0) Building SQDM is expensive, so it might work just as well to do the above thing to a SPTS that we get for free, namely the column of the given X with maximum RawSpread=Max- Min (Outlier elimination may not be necessary it gives a CoreSpread measurement): Let Xk be column with maximum [core] spread (maximizes (max-min) after outliers are removed from both ends leaving core of the Xk values). CoreSpread(Xk) / 2 should be a fairly good approx. of radius. Calculate CoreSpread(Xi) for i=1..n Set r = Median[CoreSpread(Xi)] / 2 (to guard against r being taken too large by virtue of one terribly elongated dimension.) From Mark: How about a quick and dirty to calculate candidates, aka hob dist between max and min - fast? I gather we don't need to be exact. we just want a suitable candidate. A Clusterer (an unsupervised analytic) analyzes data objects without consulting a known class label (usually none are present). Objects are clustered (grouped) using a mechanism which attempts to maximize intra-class similarity and minimize inter- class similarity. Clustering facilitates taxonomy formation (organizing objects into a hierarchy that group similar events together (what a dendogram does?). FAUST Clusterers, 03/01/2014 FAUST Count Change clusterer FCC clusterer 1.Choose next D plan to use upon recursing, e.g., always AM, AFFA, FFAFFF, cycle thru e 1..e n,e 1 e 2.., AM, AFFA, FFAFFF.. Choose a DensityThreshold (DT), DensityUniformityThreshold(DUT), PrecipitousCountChangeThreshold(PCCT). Choose a DensityThreshold (DT), DensityUniformityThreshold(DUT), PrecipitousCountChangeThreshold(PCCT). 2. If DT or DUT are not exceeded at a dendogram node (a cluster), partition that node as follows: 2a. Apply UDR (hi-to-lo bitslice) until a PCC appears, then build UDR branch down to a PCC pt or until PCC disappears. 2a. Apply UDR (hi-to-lo bitslice) until a PCC appears, then build UDR branch down to a PCC pt or until PCC disappears. 2b. Cut at each singleton PCC. 2b. Cut at each singleton PCC. FCC cluster Notes: As will be obvious from the next slide, deciding on and using PCCT is a challenge. Expensive parts? Creating some of the SPTSs, e.g., X o D for D other than a diagonal. Finding PCC using UDR FAUST Anomaly Detector, FAD (outlier detection analytic) identify objects not complying with data model. Outliers are discarded as noise or exceptions, but in some applications, e.g., fraud detection, rare events are more interesting. Outliers detected with Statistics, Distance, Density and Deviation (use a dissimilarity measure to reduce overall dissimilarity by removing "deviation outliers") outlier detectors. Statistical tests assume a distribution/probability model, Outlier mining can mean: 1. Given a set of n objects and k, find the top k objects in terms of dissimilarity from the rest of the objects. 2. Given a Training Set, identify outlier objects within each class (correctly classified but noticeably dissimilar. 3. Determine "fuzzy" clusters, i.e., assign a weight for each object in each cluster (Does a dendogram do that?). We believe that FAUST Count Change clusterer is the best Anomaly Detector we have at this time. FCC on IRIS150 DT=1 PCCs have to involve a high of at least 5 and be at least 60% change from high. Gaps must be at least 3 C 1 C 1(1s,0e,0i) Gap Preservation: Let D k = e k oX + jThrSt (Here ThrSt=0.2, so D=1011). Make Gap and PCC cuts on Y o D, where Y is Gap Preserving shift of X FCC on IRIS 1 st 10 of each class= TestSet For a change to be Precipitous, it must be > 8 (which is 8/120=.067 of the TrainingSet) Avg Med D=AM [0,64) 120 [0,32) 118 [32,64) 2 (Drop this branch) [0,32) 118 [32,64) 2 (Drop this branch) 1 =2 5 bit [0,16) 68 [16,32) 50 [32,48) [48,64) 1 =2 4 bit 0 [0,8) 15 [8,16) 53 [16,24) 44 [24,32) 6 (Drop branch) =2 3 bit 0 [0,4)3 [4,8)12 [8,12)21 [12,16)32 [16,20)28 [20,24) =2 2 bit 0 [4,6)4 [6,8)8 [8,10)9 [10,12)12 [12,14)19 [14,16)13 [16,18)12 [18,20)16 [20,22)11 [22,24) =2 1 bit =2 0 bit Should PCCT be reduced as you go down tree? Yes, since absolute change starts small and builds in round cluster So then at 2 0 level, we might use PCCT=4, so we would cut at 13.5 and 17.5 Having checked, these cutpoints are not so good F < 13.5: s=34, e=14, i= 4 F < 13.5: s=34, e=14, i= < F < 17.5: s= 5, e=15, i= < F s= 1, e=11, i=29 The reason may be Avg and Med are so close (which will be the case for most larger datasets). I will try e k and other diagonals FCC on IRIS150 STDs: Ordering: e3 e1 e4 e2 (The layout is: (CountsBetweenCutPoints) DensityBetweenCutPoints XoD_CutPoint )FCC on IRIS150 STDs: Ordering: e3 e1 e4 e2 (The layout is: (CountsBetweenCutPoints) DensityBetweenCutPoints XoD_CutPoint ) Density Count / (AvgSpread/2) 2 OverallDensityIRIS150=ODI=0.47 Set DT at ~2 times ODI, DT=1 Why 2 times? Just a guess! On X with D=e3=(0,0,1,0) (50s,0e,1i) [0.97] 14` (0s,1e,0i)[ ] 21 (0s,2e,0i)[32] 24 (0s,47e,43i)[0.8] 52 (0s,0e,1i)[ ] 55 (0s,0e,1i)[ ] 58 (0s,0e,1i)[ ] C 1 C 2 C 3 C 4 C 5 C 6 C 7 C 1,1 C 1,2 On C 1, e1 ct 15 (50s,0e,0i) [1.3] 15 (0s,0e,1i)[ ] (50s,0e,0i) [1.3] 15 (0s,0e,1i)[ ] C 4,1 C 4,2 C 4,3 On C 4 D=e4 dist: So cut at PCCs 10, 16 (0s,7e,0i) [0.8] 10.5` (0s,38e,4i)[0.9] 16 (0s,2e,10i) [0.4] (0s,7e,0i) [0.8] 10.5` (0s,38e,4i)[0.9] 16 (0s,2e,10i) [0.4] C 4,2,1 C 4,2,2 C 4,2,3 On C 4,2 D=e3 Cut at PCCs 47, 49 (0s,7e,0i) [0.8] 47` (0s,3e,0i)[0.9] 49 (0s,2e,10i) [0.4] (0s,7e,0i) [0.8] 47` (0s,3e,0i)[0.9] 49 (0s,2e,10i) [0.4] FCC on IRIS120 For a change to be Precipitous, it must be > 8 (which is 8/120=.067 of the TrainingSet) Density Count / (AvgSpread/2) 2 OverallDensityIRIS120=ODI=.375 Set DT at approx 3 times ODI, DT=1. Why 3 times? Just a guess! The UDR tree, using D=e 1 =(1,0,0,0): ^5: ^4: ^3: ^2: ^1: ^0: On X, the e1=(1,0,0,0) cutpoints are 6,10,16,23,28,33 (layout is: (ClassCountsBetweenCutPoints) DensityBetweenCutPoints X o d_CutPoint ) (12s,0e,0i) [1.6] 6` (18s,3e,0i)[.4] 10 (10s,17e,4i)[.3] 16 (0s,15e,19i)[.4] 23 (0s,5e,9i)[.8] 28 (0s,0e,3i)[1.3] 33 (0s,0e,5i)[.5] C 1 C 2 C 3 C 4 C 5 C 6 C 7 On C 2, the e2=(0,1,0,0) cutpoints are 7.5, 16, 19.5 (0s, 3e, 0i) [1.3] 7.5` (13s, 0e, 0i)[2,6] 16 (4s, 10e, 0i)[5.2] 19.5 (1s, 0e, 0i)[64] (0s, 3e, 0i) [1.3] 7.5` (13s, 0e, 0i)[2,6] 16 (4s, 10e, 0i)[5.2] 19.5 (1s, 0e, 0i)[64] C 2,1 C 2,2 C 2,3 C 2,4 C 3,1 C 3,2 C 3,3 C 3,4 On C 3, the e2=(0100) cutpoints are 12, 16, 21 Distribution : (0s, 17e, 4i) [.88] 12` (3s, 0e, 0i)[3] 16 (5s, 0e,0i)[1.4] 21 (2s, 0e, 0i)[2.6] C 5,1 C 5,2 C 5,3 C 5, e2=(0100) ctpts 9gp 11.5PCD Dis (0s,1e,0i) [ ] 9` (0s,4e,5i)[0.85] 11.5 (0s,0e 4i)[3.2] C 5,2,1 C 5,2,2 C 5,2,3 C 5,2,4 C 5,2, e3 ctpts dist: (0s,2e,0i) [32] 35.5` (0s, 1e, 0i)[ ] 38.5 (0s, 1e, 2i)[1.6] 43 (0s,0e,3i)[3] (0s,2e,0i) [32] 35.5` (0s, 1e, 0i)[ ] 38.5 (0s, 1e, 2i)[1.6] 43 (0s,0e,3i)[3] C 4 e2 ctpts 4, C 4,1 C 4,2 C 4,3 (0s,3e,1i) [.71] 4` (0s,11e,16i)[.24] 13 (0s,1e,2i)[.4] C 4,1,1 C 4,1,2 C 41, e3 ctpt 38 (0s,3e,0i) [1] 38` (0s, 0e, 1i)[ ] (0s,3e,0i) [1] 38` (0s, 0e, 1i)[ ] C 4,2,1 C 4,2,2 C 42, e3 ctpts (0s,0e,1i) [ ] 19` (0s,4e,0i)[1.8] (0s,0e,1i) [ ] 19` (0s,4e,0i)[1.8] 34 (0s,7e,10i) [1.1] 44` (0s,0e,3i)[1.1] C 4,2,3 C 4,2,4 C 4,3,1 C 4,3,2 C 4,3 e3 cpt 11.5 (0s,2e,6i) [.8] 11.5` (0s, 1e, 2i)[.8] (0s,2e,6i) [.8] 11.5` (0s, 1e, 2i)[.8] C 4,3,1,1 C 4,3,1,2 C 4,3,1 e4 ctpt 11.5 (0s,2e,6i) [.8] 11.5` (0s, 1e, 2i)[.8] (0s,2e,6i) [.8] 11.5` (0s, 1e, 2i)[.8] FCC on IRIS150 diagonals will be ordering by std (Layout: (CountsBetweenCutPoints) DensityBetweenCutPoints XoD_CutPoint ) Set DT=1 Set DT=1 On X with D=e3=(0,0,1,0) std diag (50s,0e,1i)[2.5] 15 C 1 C 1 F F Ct Gp gap1 gap1 gap2 gap2 15 (0s,3e,0i)[1.3] 24 C 2 C 2 24 (0s,33e,1i)[1.3] 35.5 C 3 C 3 pcc1 pcc1 pcc2 pcc (0s,14e,14i)[.3] 41.5 C 4 C (0s,0e,34i)[1.3] 99 C 5 C 5 On C4 with D=e1=(1,0,0,0) F F Ct Gp pcc1 pcc1 0 (0s,0e,2i)[2.5] 14.5 C 4,1 C 4, (0s,2e,5i)[.5] 17.5 C 4,2 C 4,2 pcc2 pcc2 pcc3 pcc (0s,3e,1i)[.5] 18.5 C 4,3 C 4, (0s,0e,1i)[ ] 19.5 C 4,4 C 4,4 pcc4 pcc4 pcc5 pcc (0s,2e,3i)[.2] 20.5 C 4,5 C 4, (0s,7e,2i)[.2] 99 C 4,6 C 4,6 FCC on IRIS150 DT=1 PCCs have to involve a high of at least 5 and be at least 60% change from high. Gaps must be at least 3 C 1 C 1(1s,0e,0i) On X with D=1+3+4=(1,0,1,1) F F Ct Gp F F Ct Ct Gp Gp C 2 C 2(11s,0e,0i) C 3 C 3(11s,0e,0i) C 4 (2s,0e,0i) C 5 C 5(25s,0e,0i) C 6 C 6(0s,4e,0i) C 7 C 7(0s,0e,1i) STD(F) DIAGONAL C 8 C 8 (0s,17e,1i) C 9 C 9(0s,17e,0i) C 10 C 10 (0s,3e,2i) (0s,3e,2i) C 11 (0s,4e,6i) C 12 C 12 (0s,5e,31i) C 13 C 13 (0s,0e,2i) (0s,0e,2i) C 14 C 14 (0s,0e,1i) (0s,0e,1i) C 15 C 15 (0s,0e,5i) (0s,0e,5i) C 16 C 16 (0s,0e,1i) (0s,0e,1i) F F Ct Gp C 12,1 C 12,1(0s,0e,5i) C 12,2 C 12,2 (0s,1e,4i) C 12,3 (0s,0e,1i) On C 12 I had to cheat (Use D= ( ) which connects class means. This does tell us: There is a vector which does it, but not how to find it?) 93.3% accurate on 1st round! 2nd dendogram level: F F Ct Gp On C 11 D=e2= (0100) C 11,1 C 11,1 (0s,1e,1i) C 11,2 C 11,2 (0s,2e,3i) C 11,3 C 11,3 (0s,0e,2i) (0s,0e,2i) C 11,4 (0s,1e,0i) (0s,1e,0i) F F Ct Gp On C 10 D=e2= (0100) C 10,1 (0s,0e,1i) C 10,2 (0s,0e,3i) C 10,3 C 10,3 (0s,2e,0i) (0s,2e,0i) On C 8 D=e2= (0100) doesn't separate. So (w/o the cheat) 95% accurate after 2nd round! FAUST Classifiers, 03/2014 Classifier (supervised analytic) constructs a model that distinguish classes, then use it to predict the class of unclassified objects. Models are constructed from a training set (table of objects with class labels). Classification may need to be preceded by relevance analysis to eliminate attributes that do not seem to contribute much information as to class. Summary of FAUST Classifiers: X=(X 1..X n,C)=TrainingSet (classified objects) Y=(Y 1..Y n )=TestSet (unclassified objects) Classes: C 1..C K FAUST Linear Classifier Construct hull, H k, about C k x isa C k iff x H k. (allows "none of the above" when x H k, k.) H k s parallel constr y isa C k iff OneCount{C k -y) o (C k -y) r k 2 } is the maximum over k=1..K y isa C k iff OneCount{C k -y) o (C k -y) r k 2 } is the maximum over k=1..K FAUST Spherical Classifier: SPTS primitives: Assume ClassMeans (VoMs) have been precomputed! Need only the (n 2 -n)/2 SPTSs, Y o D k,j (concurrent) Advantages: Very fast. Extendable to a fuzzy classifier: weightC i (y) = j i | c i,j - y o D i,j | ???? Disadvantages: For none of the above, need a separate step: y C k, check d 2 (y,C k )=(y-C k ) o (y-C k )? (very expensive!) SPTS primitives: (C k -y) o (C k -y) SPTS is needed (y, k) pair, where y Y and k=1..n Advantages: Full 1-class w none of the above. Extendable to fuzzy classifier: wtC i (y) = OneCount{(C i -y) o (C i -y) r i 2 } Disadvantages: Classifies one y at a time. Hard to decide on the values of (r 1,...r n )? Slow! FAUST Centroid Classifier : Separate classes, C i and C j, with a CutPoint, c i,j, in the SPTS, X o D i,j, with D being the vector: D i,j MeanC i MeanC j (or use VectorsOfMedians) c i,j =MdPt(D) (or use VarianceRatios) y isa C k iff y o D k,j =3) from Hull virginica e1 Ct gp e2 Ct gp e3 Ct gp e4 Ct gp Ct gp Ct gp Ct gp Ct gp ''' Ct gp no outliers 34 Ct gp D MCL H virginica only 16 versicolors! H virginica H virginica 15 versic H virginica H virginica 12 versic H virginica H virginica 3 versic One possibility would be to keep track of those that are outliers to their class but are not in any other class hull and put a sphere around them. Then any unclassified sample that doesn't fall in any class hull would be checked to see if it falls in any of the class outlier spheres??? FAUST Anomaly Detector. FAD When the goal is to only to find outliers as quickly as possible. d 2 (med,x) y1y2y3y4y5y6y7y8y9yaybycydyeyf d 2 (y1,x), D=y1->y y1y2 y7 2 y3 y5 y8 3 y4 y6 y9 4 ya yf 9 yb a yc b yd ye a b c d e f xoD = xo(14,2) FOD-2 uses FAUST CC Clusterer (CC=Count Change) to find outliers. CC removes big clusters so that as it moves down the dendogram clusters gets smaller and smaller. Thus outliers are more likely to reveal themselves as singletons (and doubletons?) gapped away from their complements. With each dendogram iteration we will attempt to identify outlier candidates and construct the SPTS of distances from each candidate (If the minimum of those distance exceeds a threshold, declare that candidate an outlier.). E;g;, l E;g;, look for outliers using projections onto the sequence of D's = e1,...,en, then diagonals, e1+e2, e1-e2,... We look for singleton (and doubleton?...) sets gapped away from the other points. We start out looking for coordinate hulls (rectangles) that provide a gap around 1 (or2? or 3?) points only. We can do this by intersecting "thinnings" in each DoX distribution. ote, if all we're interested in anomalies, then we might ignore all PCCs that are not involved in thinnings. This would save lots of time! (A "thinning" is a PCD to below threshold s.t. the next PCC is a PCI to above threshold. The threshold should be PCC threshold.) FOD-1 won't work for big data. Finding outliers is local. Big data has many localities to exhaustively search. We may need to enclose each outlier in a gapped hulls. Those gapped hulls will likely be filled in when projecting onto a randomly chosen line. I.e., barrel gapping suffers from a chicken-egg problem: First look for linear gaps and then radial gaps out from it. Unless line runs thru outlier radial gap not likely to appear 1 y1y2 y7 2 y3 y5 y8 3 y4 y6 y9 4 ya yf 9 yb a yc b yd ye a b c d e f Density Count/ r 2 labeled dendogram for FAUST on Spaeth with D=AvgMedian DET= A A So intersect thinnings [1,1] 1, [5,7] 1 and [13,14] 1 with [4,10] 2 FOD-1 recursively uses a vector, D=FurthestFromMedian-to-FurthestFromFurthestFromMedia. Mean=(8.53, 4,73) Median=(9, 3) x o D Distribution down to 2 5 : [0,32) [32,64) [64,96) [96,128) [128,160) [160,192) [192,224) [0,32) [32,64) [64,96) [96,128) [128,160) [160,192) [192,224) Thinnings [0,32) and [64,128). So we check y1,y5,yf. y5 and yf check out as outliers, y1 does not. Note y6 does not either! Let D2 be mean to median and go down to 2 2 : [0,4) [4,8) [8,12) [12,16) [16,20) [20,24) Thinnings [4,12), [20,24). yf checks out as outlier, y4 does not. Note y6 does not either! [0,4) [4,8) [8,12) [12,16) [16,20) [20,24) Thinnings [4,12), [20,24). yf checks out as outlier, y4 does not. Note y6 does not either! xoD Let D3 be (Median to FurthestFromMedian)/6 and go down to 2 2 : [0,4) [4,8) [8,12) [12,16) [16,20) [20,24) Thinnings [8,16) yf, y6 check out as outlier, yd does not. [0,4) [4,8) [8,12) [12,16) [16,20) [20,24) Thinnings [8,16) yf, y6 check out as outlier, yd does not. This D3 isd best? FOD-1 doesn't work well for interior outlier identifiction (which is the case for all Spaeth outliers. xoD Choosing a clustering from a Density and/or Density Uniformity labeled Dendogram A B C D E F G The algorithm for choosing the optimal clustering from a labeled dendogram is as follows: Let DET=DEnsityThreshold=.4 and DUT=DensityUniformityThreshold= DEL=.1DUL=1/6DEL=.2DUL=1/8 DEL=.4DUL=1 DEL= DUL= DEL= DUL= DEL= DUL= DEL= DUL= DEL= DUL= DEL= DUL= DEL= DUL= DEL=.5 DUL= DEL=.3 Since a full dendogram is far bigger than the original table, we set threshold(s), We build a partial dendogram (ending a branch when threshold(s) are met) Then a slider for density would work as follows: The user set the threshold(s). We give the clustering. The user increases threshold(s). We prune the dendogram and give clustering. The user decreases threshold(s). We build each branches down further until the new threshold(s) are exceeded and give the new clustering. We might want to also display the dendogram to the user and let him select a "node=cluster" for further analysis, etc. 1 y1y2 y7 2 y3 y5 y8 3 y4 y6 y9 4 ya yf 9 yb a yc b yd ye c d e f a b c d e f a bc def UDR gives the above distribution of x o D values D is the Average-to-FurthestFromAverage (AFFA) vector Gap cuts are made at 7 and 11 Y (Density=.15) {y1,y2,y3,y4,y5} (.37) {y6,yf} (.08) {y7,y8,y9,ya,yb.yc.yd.ye} (Density=.07) {y7,y8,y9,ya} (.39) {yb,yc,yd,ye} (1.01) {y6} ( ) {yf} ( ) DensityThreshold=.3 D-line cut-lines On the next slide the Density Threshold is increased to.5 In the User Interface this would presumably be done with a slider. The above DensityThreshold=.3 dendogram is the starting point. We build the 2 leaves that have a density