detect incorrect term in group of terms I obtain a 'group' of numbers every day. Each number is associated with a 'term'. eg 35 is Big Data. 42 is Hadoop, 82 is Zebra, 89 is Python, 3 is Machine Learning, and 6 is Waterfall, etc. I want a non-supervised Machine Learning way to detect numbers that are usually not part of the group. I will highlight in the following examples groups that should not be in the set: 


*

*{ 35, 42, 82, 89, 3, 6}

*{ 35, 42, 89 } [no false number in this group]

*{ 35, 42, 89 } 4
So in my example, as the sets are usually obtained over time, the numbers 35 (Big Data), 42 (Hadoop), 89 (Python) will be usually together. But 82 (Zebra) and 6 (Waterfall) are unlikely to be usually in a set. Occasionally, they may come as a set. but usually they will not be there. since they are usually not there. i need a way to filter those out.
Some points to note: 
a. Sometimes false numbers will not be present
b. Numbers go from 1-30,000, and they represent an 'alpha-numeric term'
c I am okay if the algorithm is not 100% accurate. 75% detection is better than having the false terms always present.
d. I'd prefer a non-supervised learning, but i am willing to compromise this.
e. The repository of sets will grow as 1000's of new sets are added each day.
f.  lets say we see the following numbers always together as a set {1,2,3,4,5,6,7,8,9} and as such a density cluster is established. But we also see {6,7,8} appear by themselves frequently a lot too just by themselves. So in that case, if i have a set : {1,6,7,8} I need the algorithm to filter out the {1} since in this case {2,3,4,5,9} is missing in the original set of {1,6,7,8} So its a cluster within a cluster.
My question is: are there existing Machine Learning algorithms out there that can help me achieve this result set with a reasonable level of confidence? If yes, which ones? How does the database/algorithms change as 'new' sets are added that start showing new numbers being added to a group.
 A: In your case I would go with hierarchical or density based clustering. 
However, this is not a trivial question and you will certainly need to do some heavy thinking with regards to your dataset and which of the methods here portrayed might be definitely appropriate. Please see my comments in the code for some important points about each algorithm.
library(fpc)

# How your data could look like, most true values and some false outliers.
set.seed(1234)
records = 500
mydata <- matrix(ncol=2, nrow=records)
x <- rnorm(n=records, mean=50, sd=5)
y <- rnorm(n=records, mean=50, sd=5)
mydata[,1]<-x
mydata[,2]<-y
mydata[499,]<-c(10,90)
mydata[500,]<-c(90,90)
mydf<-data.frame(x=mydata[,1],y=mydata[,2])
myplot<-ggplot(as.data.frame(mydf),aes(x=x,y=y,xmin=0, xmax=100, ymax=100, ymin=0, colour = x*y ))
myplot + geom_point(pch=19,size=5,)

# Using partitioning based clustering, PAM
# Cons: 
#   - Supervised, K required
#   - Cluster shapes limited to spheres
#   - REALLY sensitive to outliers, less sensitive than K-means
# Pros: 
#   - Pamk can be used to determine a plausible K

mypamk <- pamk(mydf)
plot(mypamk$pamobject)

# Using partitioning based clustering, K-Means
# Cons: 
#   - Supervised, K required
#   - Cluster shapes limited to spheres
#   - REALLY sensitive to outliers

mykmeans <- kmeans(mydf,3)
plot(mydf, col=mykmeans$cluster)

[
K-means and PAM didn't do well, we now have a look at hierarchical clustering, DBSCAN and Gaussian Mixture models.
    # Using density based clustering, DBSCAN
# Pros: 
#   - Unsupervised, no K required
#   - Cluster shapes not limited to spheres
#   - Non-cluster-like points are not clustered and hence easily identifiable
# Cons: 
#   - Arbitrary non-convex shapes are likely not desired in your scenario.
#   - DBSCAN requires an index for good performance, R implementation lacks indexing capabilities.

mydbscan <- dbscan(mydf,showplot = 2,eps = 10);
mydbscan$cluster


# Using hierarchical clustering
# Pros:
#   - Pruning point arbitrary
#   - Not sensitive to clusters with varying density
#   - Less sensitive to outliers
# Cons:
#   - K for pruning, can eventually be not needed if other way is found to prune the dendrogram.

myhclust <- hclust(dist(mydf))
plot(myhclust)
cuthclust=rect.hclust(myhclust,k=3)
groups<- cutree(myhclust,k=3)
groups

myplot<-ggplot(as.data.frame(mydf),aes(x=x,y=y,xmin=0, xmax=100, ymax=100, ymin=0, colour = rainbow(3)[groups] ))
myplot + geom_point(pch=19,size=5,)



# Pros:
#   - Probabilistic framework
#   - Flexible, sensitivity to outliers can be overcome by identifying potential noise
# Cons:
#   - Theoretical framework less intuitive
#   - Outliers can become clusters of themselves

library(mclust)
myBIC <- mclustBIC(mydf)
myBIC <- mclustBIC(mydf, G = 1:20, x = myBIC)
myEM <- summary(myBIC, data = mydf)
mclust2Dplot(data = mydf, what = "density", identify = TRUE, parameters = myEM$parameters, z = myEM$z)
myBIC

[
Edit, see comments:
A scenario DBSCAN would have problems with:

