Model Underperforming I am a quite new to machine learning but I have tried to implement some prediction on a data to predict if a customer would churn of not.And for this I have used many features but I am unable to figure out what is the issue with this model as it is just unable to predict churners which non churners are easily predicted as they are the majority in the dataset.Ex: 10% of the entire dataset is a churner and rest are non churners. Now I have a great accuracy but 0 sensitivity which beats the goal of my model.Also I am unable to figure out how can I make this work better.Whenever I try some new algorithms I get this: 
Sample dataset:
https://www.dropbox.com/s/65slinuaabyr7bq/trial.csv?dl=0
Warning in preProcess.default(thresh = 0.95, k = 5, method = "pca", x = c(239573,  :

  These variables have zero variances: RAHVUSLIT, NAMEGurmee_Solaris, Jalatsid, Laste.jalatsid, Laste.jalatsid..realisatsioon.
Something is wrong; all the Accuracy metric values are missing:
    Accuracy       Kappa    
 Min.   : NA   Min.   : NA  
 1st Qu.: NA   1st Qu.: NA  
 Median : NA   Median : NA  
 Mean   :NaN   Mean   :NaN  
 3rd Qu.: NA   3rd Qu.: NA  
 Max.   : NA   Max.   : NA  
 NA's   :3     NA's   :3    
Error in train.default(x, y, weights = w, ...) : Stopping

As well when I do a confusion matrix:
 Confusion Matrix and Statistics

            Reference
Prediction   churner nonchurner
  churner          0          0
  nonchurner      42        258

               Accuracy : 0.86
                 95% CI : (0.8155, 0.8972)
    No Information Rate : 0.86
    P-Value [Acc > NIR] : 0.541

                  Kappa : 0
 Mcnemar's Test P-Value : 2.509e-10

            Sensitivity : 0.00
            Specificity : 1.00
         Pos Pred Value :  NaN
         Neg Pred Value : 0.86
             Prevalence : 0.14
         Detection Rate : 0.00
   Detection Prevalence : 0.00
      Balanced Accuracy : 0.50

       'Positive' Class : churner

Any ideas on what could be the issue is highly appreciated.
Thanks for the help!
 A: Your dataset suffers from the imbalance problem. You can approach the problem possibly in two ways:


*

*Use sampling techniques to over-sample the minority class (the churn class), or undersample the majority class (the non-churn class) and eliminate the imbalance issue . 
(i) SMOTE is one popular technique for oversampling (https://www.jair.org/media/953/live-953-2037-jair.pdf). Library available from, for Python: https://github.com/fmfn/UnbalancedDataset, for R: http://www.inside-r.org/packages/cran/dmwr/docs/SMOTE
(ii) Undersampling can be done by taking only a portion of the majority class. You try initially with random selection. Later you may try advanced methods like Random majority under-sampling with replacement, Extraction of majority-minority Tomek links, Under-sampling with Cluster Centroids, NearMiss-(1 & 2 & 3), Condensend Nearest Neighbour, One-Sided Selection, Neighboorhood Cleaning Rule

*Use specialized algorithms that can handle the imbalance problem. 
(i) RUSBoost (http://sci2s.ugr.es/keel/pdf/algorithm/articulo/2010-IEEE%20TSMCpartA-RUSBoost%20A%20Hybrid%20Approach%20to%20Alleviating%20Class%20Imbalance.pdf). There is library available in , for Matlab: http://in.mathworks.com/help/stats/ensemble-methods.html, for Python: https://github.com/harusametime/RUSBoost, for R: https://github.com/SteveOhh/RUSBoost
(ii) Cost-sensitive SVM (https://arxiv.org/pdf/1212.0975v2.pdf), 
(iii) Cost-sensitive Adaboost (http://sci2s.ugr.es/keel/pdf/algorithm/articulo/2007%20-%20PR%20-%20Sun%20-%20Cost-Sensitive%20boosting.pdf). There are are bunch of cost sensitive classifiers which you can find at, for Python: https://pypi.python.org/pypi/costcla, for R: https://cran.r-project.org/web/packages/mlr/mlr.pdf
