Waikato / meka

Multi-label classifiers and evaluation procedures using the Weka machine learning framework.
http://waikato.github.io/meka/
GNU General Public License v3.0
200 stars 76 forks source link

Implement HOMER, ERFH and MLRF algorithms #81

Closed agkphysics closed 10 months ago

agkphysics commented 11 months ago

This work was completed in 2018 as a group project for the course CS760 at the University of Auckland, under the supervision of @joergwicker. I finally got around to cleaning up and fixing the code, five years later.

We implemented and tested four MLL algorithms, although only three are in this pull request because the other one isn't working properly.

The three algorithms in the PR are HOMER [1], ERFH [2], and MLRF [3].

I have left this as a draft PR to discuss the utility of adding these algorithms before actually merging the code.

References

[1] G. Tsoumakas, I. Katakis, and I. Vlahavas, “Effective and efficient multilabel classification in domains with large number of labels,” in Proc. ECML/PKDD 2008 Workshop on Mining Multidimensional Data (MMD’08), 2008, pp. 53–59. [2] J. Li, Y. Zheng, C. Han, Q. Wu, and J. Chen, “Extremely Randomized Forest with Hierarchy of Multi-label Classifiers,” in Intelligence Science and Big Data Engineering, Y. Sun, H. Lu, L. Zhang, J. Yang, and H. Huang, Eds., in Lecture Notes in Computer Science. Cham: Springer International Publishing, 2017, pp. 450–460. doi: 10.1007/978-3-319-67777-4_40. [3] H. Elghazel, A. Aussem, O. Gharroudi, and W. Saadaoui, “Ensemble multi-label text categorization based on rotation forest and latent semantic indexing,” Expert Systems with Applications, vol. 57, pp. 1–11, Sep. 2016, doi: 10.1016/j.eswa.2016.03.041.

fracpete commented 10 months ago

Haven't seen any new methods for a while, so fine by me.

fracpete commented 10 months ago

Reformatted the code and added junit tests. MLRF is still failing its unit tests. You can try the default classifier set up on the Music dataset. Fails in line 200 with java.lang.ArrayIndexOutOfBoundsException: Index 7 out of bounds for length 7.