-
Notifications
You must be signed in to change notification settings - Fork 8
Open
Description
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
Labels
No labels