THOROUGHLY READ AND FOLLOW THE
PROJECT GUIDELINES.
These guidelines contain detailed information about how to structure your
project, and how to prepare your written summary, and how to study for the test.
*** You must use the
Project 2 Template provided here for your written report.
Do NOT change the structucture of the report, do NOT exceed the page limits stated in the template and do NOT decrease the font size ***.
(If you prefer not to use Word, you can copy and paste this format in a
different editor as long as you respect the stated page structure and
page limit.)
- Data Mining Technique(s):
Run experiments in Weka AND in Python
using the following techniques:
- Pre-processing Techniques:
Feature selection, feature creation, dimensionality reduction, noise reduction, attribute discretization, ...
- Classification Techniques:
- Zero-R (majority class)
- One-R
- Decision trees:
Using Weka (J4.8)
and Python.
Since these decision tree implementations are able to handle
continuous attributes and missing values directly, make sure to run
some experiments with no pre-processing and
some experiments with pre-processing (discretizing continuous attributes and
replacing missing values before hand), and compare the results.
- Regression Techniques:
- Linear Regression: Weka (under "functions") and Python.
- Regression Trees: Weka (M5P under "trees") and Python.
- Model Trees: Weka (M5P under "trees") and Python.
- Dataset:
Use the
Absenteeism at work Data Set.
This dataset is available at the
UCI Machine Learning Repository.
- Use "Absenteeism_time_in_hours" as the target attribute.
- Before you run experiments, transform the dataset as follows:
- Change the name of the "Son" attribute to "Children".
- For classification experiments:
- For regression experiments:
- Use the "Absenteeism_time_in_hours" target attribute as originally provided
in the dataset (i.e., continuous).
- Run experiments with and without discretizing the predicting attributes
(i.e., independent variables);
removing attributes that are too related to the target or that make the trees too long;
and with any other pre-processing and post-processing that produce useful and
meaningful models.
- Performance Metric(s):
- Use the following metrics or evaluation methods:
- For classification tasks:
use classification accuracy, precision, recall, ROC Area, and confusion matrices.
For regression tasks:
use correlation coefficient AND any subset of the following error metrics
that you find appropriate: mean-squared error, root mean-squared error,
mean absolute error, relative squared error, root relative squared error,
and relative absolute error. An important part
of the data mining evaluation in this project is to try to make sense
of these performance metrics and to become familiar with them.
- size of the tree,
- readability of the tree, as a separate qualitative criterion to evaluate the "goodness" of your models, and
- time it took to construct the tree.
- Compare each accuracy/error you obtained against those of benchmarking techniques
as ZeroR and OneR over the same (sub-)set of data instances you used in
the corresponding experiment.
- Remember to experiment with pruning of your tree:
Experiment with pre- and/or
post-prunning of the tree in order to increase the classification
accuracy, reduce the prediction error, and/or reduce the size of the tree.
- Advanced Topic(s):
Investigate more depth (experimentally, theoretically, or both) a topic of your
choice that is related to decision or model/regression trees
and that was not covered already in this project, class lectures,
or the textbook.
This tree-related topic might be something that was described or mentioned
briefly in the textbook or in class; comes from your own research;
or is related to your interests. Just a few sample ideas are: The
prune functions in Python; C4.5; C4.5 pruning methods (for trees or for
rules); any of the additional tree classifiers in Weka: DecisionStump,
LMT RandomForest, RandomTree, REPTree; meta-learning applied to decision
trees (see Classifier -> Choose -> meta); other useful functionality in Python;
an idea from a research paper that you find intriguing;
or any other tree-related topic.
Remember that you need to investigate your advanced topic in depth,
at a "graduate level".