Similarity-based filter for removing label noise from a dataset as a
preprocessing step of classification. For more information, see 'Details' and
'References' sections.
Usage
"BBNR"(formula, data, ...)
"BBNR"(x, k = 3, classColumn = ncol(x), ...)
Arguments
formula
A formula describing the classification variable and the attributes to be used.
data, x
Data frame containing the tranining dataset to be filtered.
...
Optional parameters to be passed to other methods.
k
Number of nearest neighbors to be used.
classColumn
positive integer indicating the column which contains the
(factor of) classes. By default, the last column is considered.
Value
An object of class filter, which is a list with seven components:
cleanData is a data frame containing the filtered dataset.
remIdx is a vector of integers indicating the indexes for
removed instances (i.e. their row number with respect to the original data frame).
repIdx is a vector of integers indicating the indexes for
repaired/relabelled instances (i.e. their row number with respect to the original data frame).
repLab is a factor containing the new labels for repaired instances.
parameters is a list containing the argument values.
call contains the original call to the filter.
extraInf is a character that includes additional interesting
information not covered by previous items.
Details
BBNR removes an instance 'X' if: (i) it participates in the misclassification of other instance
(i.e. 'X' is among the k nearest neighbors of a misclassified instance and has a different class);
and (ii) its removal does not produce a misclassification in instances that, initially, were correctly
classified by 'X' (i.e. 'X' was initially among the k nearest neighbors and had the same class).
References
Delany S. J., Cunningham P. (2004): An analysis of case-base editing in a spam filtering system.
In Advances in Case-Based Reasoning (pp. 128-141). Springer Berlin Heidelberg.
# Next example is not run in order to save time## Not run: # data(iris)# out <- BBNR(iris, k = 5)# print(out)# identical(out$cleanData, iris[setdiff(1:nrow(iris),out$remIdx),])# ## End(Not run)