title: False Positives with Face recognition
body: <p>I have a CNN trained upon the images (cropped faces) of Mark Ruffalo. For my positive class I have around 200 images and for the negative datapoints I have sampled 200 random faces.</p>
  
  <p>The model has a high recall but a very low precision. How could I increase the precision ?Also I am constrained by the number of positive images that I have. I am ready to compromise the recall in this tradeoff.</p>
  
  <p>I have tried increasing the number of negative samples but that introduces a form of bias and the model starts classifying everything as negative to attain a local optima.</p>
  
  <p>I have based my CNN upon overfeat:</p>
  
  <pre><code>local features = nn.Sequential()
  
  features:add(nn.SpatialConvolutionMM(3, 96, 11, 11))
  features:add(nn.ReLU())
  features:add(nn.SpatialMaxPooling(2, 2, 2, 2))
  
  features:add(nn.SpatialConvolutionMM(96, 256, 5, 5))
  features:add(nn.ReLU())
  features:add(nn.SpatialMaxPooling(2, 2, 2, 2))
  
  features:add(nn.SpatialConvolutionMM(256, 512, 3, 3))
  features:add(nn.ReLU())
  features:add(nn.SpatialMaxPooling(2, 2, 2, 2))
  
  -- 24x24x512
  features:add(nn.SpatialConvolutionMM(512, 1024, 3, 3))
  features:add(nn.ReLU())
  features:add(nn.SpatialMaxPooling(2, 2, 2, 2))
  
  --11x11x1024
  features:add(nn.SpatialConvolutionMM(1024, 1024, 3, 3))
  features:add(nn.ReLU())
  features:add(nn.SpatialMaxPooling(2, 2, 2, 2))
  
  -- 1.3. Create Classifier (fully connected layers)
  local classifier = nn.Sequential()
  classifier:add(nn.View(1024*4*4))
  classifier:add(nn.Dropout(0.5))
  classifier:add(nn.Linear(1024*4*4, 3072))
  classifier:add(nn.Threshold(0, 1e-6))
  
  classifier:add(nn.Dropout(0.5))
  classifier:add(nn.Linear(3072, 4096))
  classifier:add(nn.Threshold(0, 1e-6))
  
  classifier:add(nn.Linear(4096, noutputs))
  
  
  
  
  model = nn.Sequential():add(features):add(classifier)
  </code></pre>
  
  <p>Kindly Help</p>