We have 3 customer data sets. One has customer informations with around 25 attributes like customerID, Gender,Relationship,Job_Level (manager, non-manager), Income level (<25000 USD, between 25000 to 50000 USD, <70000 USD etc) The second dataset consiste of all those cutomers who bought the car. The attributes are cutomerID, Month& year of purchase,Model (like sports, eco etc), Feature 1 used (say cruise control) and so on. The thrid data set is new customer data set which has similar attributes as that in dataset1 (around 25 attributes).

Based on correlation between data set 1&2, we want to identify cutomers from data set 3 with high propensity to buy a car. In addition, the expected solution can also indicate the kind of products and features the potential leads will be interested in along with tentaive time i.e calender month.

In total we have 1000 sample values in data set 1. Out of which 891 are "No" and 109 are "yes" i.e bought the car.

We are exploring Weka for classification, and clustering. However we have basic doubts about selection of algorithem for each stage

  1. preprocessing Stage - what filters to be used such that attributes which are not significant will be automatically removed. i.e Is there any algo. which will suggest/identify unimportant attributes ?

  2. Which Classification algorithem we should we explore to predict pattern of cutomers who would buy the car?

  3. We are not sure how to determine probable possible month in which new set of customer may be interetsed in buying.

Would really appreciate any inputs which will take us in right direction.

So far, We tried WEKA decision tree(J48) & Rules (PART, Jrip,Prism).However none of them are giving us rules or tree for "yes" path i.e rule which leads us to customer pattern who bought the car.

If needed, shall post the output of each of the algorithms we tried in WEKA.


1 Answer 1


In case anybody new in statistics stumble upon, here is summary of steps followed to address the use case.

  1. Pre-processing & Attribute selection. Pre processing involves data clean up like handling missing values in data set, conversion of continuous values into discrete values etc. In our case, we converted the Age into suitable age groups, This is to avoid too many possible prediction based on the Age value.

Attribute Selection: Weka GUI offers good support for Attribute selection. You need to supply original dataset with necessary pre processing steps. Then apply various methods like use "BestFirst" or "rank". The output is set of attributes which you should consider for prediction.

Useful link - http://machinelearningmastery.com/feature-selection-to-improve-accuracy-and-decrease-training-time/

  1. Classification Algorithm selection: In this case, we wanted to predict a discrete class value i.e weather customer will Buy a vehicle or Not? And if he is gonna Buy, then what is the probability of purchase. Hence its a supervised learning case,with known response variable (Buy or Not-Buy) Since old sales data is available, hence it falls in category of "Rule-based reasoning" methods providing explicit knowledge model (Old sales data), which can be expressed by formal rules or not, to be applied for further prediction. So we decided to go with decision tree, we chose random Tree algorithm assuming random data distribution. Now we chose Cross Validation option to ensure that model built is tested on available data. So java code looks like,

    String [] agrTraning = {"-t","traningData.arff","-d","treemodel.model"};
            RandomTree.runClassifier(new RandomTree(),  agrTraning);
            //to predict by applying model over test data. above model is applied over test data testData.arff to predict output 
            String [] agrTest = {"-l","treemodel.model","-T","testData.arff","-p","1-8","-distribution"};
            RandomTree.runClassifier(new RandomTree(),  agrTest);

3.To determine probable possible month in which new set of customer may be interested in buying. Here we had two predictions to be done, one is car model prediction and second month prediction.In WEKA GUI under "Cluster" tab, there are multiple algorithm which can be applied on data set & select one with lower value of "sum of squared errors" (Even though some claim that lower value of SSE does not guarantee accuracy of predictions since this SSE is for given trained data & est data may be altogether different than it) Sinnce we could get lower SSE for KNN, hence we applied same to predict the model

 IBk i = new IBk();                         
            String [] agrTraning = {"-K","1", "-W" ,"0", "-A", "weka.core.neighboursearch.LinearNNSearch -A \"weka.core.EuclideanDistance -R first-last\"","-t","model_predict_traindata.arff","-d","KNNmodel.model"};
            i.runClassifier(new IBk(),  agrTraning);
            //to predict by applying model over test data. above model is applied over test data testData.arff to predict output 
            String [] agrTest = {"-l","KNNmodel.model","-T","predict_model_test_data.arff","-p","0","-distribution"};
            i.runClassifier(new IBk(),  agrTest);

We also felt that MEKA which has multiple class variable is better option to predict Model & time. But we are yet to get satisfactory results on "time prediction".

Also a good link describing how to approach such problems https://www.ibm.com/developerworks/library/os-weka2/

Hope this helps someone!


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.