A negative selection algorithm based on hierarchical clustering of self set