pharo-ai/decision-tree-model

DecisionTree, DecisionTreeModel, and RandomForest should be in three (or two) different repositories

olekscode opened this issue · 2 comments

I believe that DecisionTree can be used not only for machine learning, but also for many other applications (for example, to contain expert knowledge). So it would be nice to have it as a standalone project that lives in a separate repository.

Then there is DecisionTreeModel - a machine learning model that is used for building decision trees. This should be a separate repository can contains an abstract class DecisionTreeModel and several algorithms implemented as subclasses:

  • C4.5
  • ID3
  • etc.

DecisionTreeModel repository should depend on DecisionTree repository.

Finally, I don't remember well how RandomForest works, but if it is the ensembling algorithm that averages the output of several DecisionTreeModels, then you can put it into a separate repository and add a dependency on DecisionTreeModel.

However, if it is the kind of DecisionTreeModel that generates random decision trees and averages their outputs, then I would make it a subclass of the abstract DecisionTreeModel and keep it in the same repository.

This way we can have a clean separation and each module can be used independently.

I would keep the organisation simple. Else each time you will add something you will have to do three commits.
Keep things simple and when they grow too large take actions. Be agile and fast at the beginning. There is no problem to have a repo with 5 packages.

I also think that at least Random Forest and Decision Tree should be in separate repoitories. As Oleks said, they are different algorithm that can be used in different ways.