public OutlierResult run(Relation<V> relation){
  final DBIDs ids=relation.getDBIDs();
  ArrayList<ArrayDBIDs> subspaceIndex=buildOneDimIndexes(relation);
  Set<HiCSSubspace> subspaces=calculateSubspaces(relation,subspaceIndex,rnd.getSingleThreadedRandom());
  if (LOG.isVerbose()) {
    LOG.verbose("Number of high-contrast subspaces: " + subspaces.size());
  }
  List<DoubleRelation> results=new ArrayList<>();
  FiniteProgress prog=LOG.isVerbose() ? new FiniteProgress("Calculating Outlier scores for high Contrast subspaces",subspaces.size(),LOG) : null;
  for (  HiCSSubspace dimset : subspaces) {
    if (LOG.isVerbose()) {
      LOG.verbose("Performing outlier detection in subspace " + dimset);
    }
    ProxyDatabase pdb=new ProxyDatabase(ids);
    pdb.addRelation(new ProjectedView<>(relation,new NumericalFeatureSelection<V>(dimset)));
    OutlierResult result=outlierAlgorithm.run(pdb);
    results.add(result.getScores());
    LOG.incrementProcessed(prog);
  }
  LOG.ensureCompleted(prog);
  WritableDoubleDataStore scores=DataStoreUtil.makeDoubleStorage(relation.getDBIDs(),DataStoreFactory.HINT_STATIC);
  DoubleMinMax minmax=new DoubleMinMax();
  for (DBIDIter iditer=relation.iterDBIDs(); iditer.valid(); iditer.advance()) {
    double sum=0.0;
    for (    DoubleRelation r : results) {
      final double s=r.doubleValue(iditer);
      if (!Double.isNaN(s)) {
        sum+=s;
      }
    }
    scores.putDouble(iditer,sum);
    minmax.put(sum);
  }
  OutlierScoreMeta meta=new BasicOutlierScoreMeta(minmax.getMin(),minmax.getMax());
  DoubleRelation scoreres=new MaterializedDoubleRelation("HiCS","HiCS-outlier",scores,relation.getDBIDs());
  return new OutlierResult(meta,scoreres);
}

public OutlierResult run ( Relation < V > relation ) { final DBIDs ids = relation . getDBIDs ( ) ; ArrayList < ArrayDBIDs > subspaceIndex = buildOneDimIndexes ( relation ) ; Set < HiCSSubspace > subspaces = calculateSubspaces ( relation , subspaceIndex , rnd . getSingleThreadedRandom ( ) ) ; if ( LOG . isVerbose ( ) ) { LOG . verbose ( "Number of high-contrast subspaces: " + subspaces . size ( ) ) ; } List < DoubleRelation > results = new ArrayList < > ( ) ; FiniteProgress prog = LOG . isVerbose ( ) ? new FiniteProgress ( "Calculating Outlier scores for high Contrast subspaces" , subspaces . size ( ) , LOG ) : null ; for ( HiCSSubspace dimset : subspaces ) { if ( LOG . isVerbose ( ) ) { LOG . verbose ( "Performing outlier detection in subspace " + dimset ) ; } ProxyDatabase pdb = new ProxyDatabase ( ids ) ; pdb . addRelation ( new ProjectedView < > ( relation , new NumericalFeatureSelection < V > ( dimset ) ) ) ; OutlierResult result = outlierAlgorithm . run ( pdb ) ; results . add ( result . getScores ( ) ) ; LOG . incrementProcessed ( prog ) ; } LOG . ensureCompleted ( prog ) ; WritableDoubleDataStore scores = DataStoreUtil . makeDoubleStorage ( relation . getDBIDs ( ) , DataStoreFactory . HINT_STATIC ) ; DoubleMinMax minmax = new DoubleMinMax ( ) ; for ( DBIDIter iditer = relation . iterDBIDs ( ) ; iditer . valid ( ) ; iditer . advance ( ) ) { double sum = 0.0 ; for ( DoubleRelation r : results ) { final double s = r . doubleValue ( iditer ) ; if ( ! Double . isNaN ( s ) ) { sum += s ; } } scores . putDouble ( iditer , sum ) ; minmax . put ( sum ) ; } OutlierScoreMeta meta = new BasicOutlierScoreMeta ( minmax . getMin ( ) , minmax . getMax ( ) ) ; DoubleRelation scoreres = new MaterializedDoubleRelation ( "HiCS" , "HiCS-outlier" , scores , relation . getDBIDs ( ) ) ; return new OutlierResult ( meta , scoreres ) ; }
perform hics on a given database .
