Skip to content

"Filter Planning" algorithm seems different with the paper #15

@InkosiZhong

Description

@InkosiZhong

Thanks for your great work.
I find that you used a brute force algorithm in your paper for filter planning, which outputs a combination of the filter methods. (Section 5.1)
However, I only find the function PlanFilter in planner/filter.go, that outputs one filter method with the best performance. (line 51-70)

// score the filters, need (bound) recall
var bestName string
var bestPrecision, bestThreshold float64
for name, filterFunc := range filter.FilterMap {
	log.Printf("[plan-filter] trying out filter %s", name)
	curFilter := filterFunc(context.freq, context.trainTracks, trainLabels, context.modelCfg.GetFilterCfg(name, context.freq))
	precision, threshold := GetPrecisionAndThreshold(curFilter, coarseTracks, coarseLabels, context.bound)
	curFilter.Close()
	log.Printf("[plan-filter] ... %s: precision=%v at threshold=%v", name, precision, threshold)
	if precision > bestPrecision {
		bestName = name
		bestPrecision = precision
		bestThreshold = threshold
	}
}
log.Printf("[plan-filter] best filter is %s with precision=%v, threshold=%v", bestName, bestPrecision, bestThreshold)
return miris.FilterPlan{
	Name: bestName,
	Threshold: bestThreshold,
}

I'm wondering that if it's an updated algorithm (since it only cost O(n))?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions