/**
@mainpage
MADlib is an open-source library for scalable in-database analytics. It provides data-parallel implementations of mathematical, statistical and machine learning methods for structured and unstructured data.

The MADlib mission: to foster widespread development of scalable analytic skills, by harnessing efforts from commercial practice, academic research, and open-source development.

Useful links:
<ul>
<li>MADlib project site http://madlib.net/</li>
<li>MADlib bug reporting site: http://jira.madlib.net/ and quick guide: https://github.com/madlib/madlib/wiki/Bug-reporting</li>
</ul>

Please refer to the <a href="@DOXYGEN_README_FILE@">Read-Me</a> file for information
about incorporated third-party material. License information regarding MADlib
and included third-party libraries can be found inside the
<a href="@DOXYGEN_LICENSE_DIR@">license</a> directory.

@defgroup grp_modeling Data Modeling

    @defgroup grp_suplearn Supervised Learning
    @ingroup grp_modeling

		@defgroup grp_bayes Naive Bayes Classification
		@ingroup grp_suplearn

		@defgroup grp_linreg Linear Regression
		@ingroup grp_suplearn

		@defgroup grp_logreg Logistic Regression
		@ingroup grp_suplearn

		@defgroup grp_dectree Decision Tree
		@ingroup grp_suplearn

		@defgroup grp_rf Random Forest
		@ingroup grp_suplearn

        	@defgroup grp_kernmach Support Vector Machines
		@ingroup grp_suplearn

    @defgroup grp_unsuplearn Unsupervised Learning
    @ingroup grp_modeling

	@defgroup grp_assoc_rules Association Rules
        @ingroup grp_unsuplearn

        @defgroup grp_kmeans k-Means Clustering
        @ingroup grp_unsuplearn

        @defgroup grp_svdmf SVD Matrix Factorisation
        @ingroup grp_unsuplearn

        @defgroup grp_plda Parallel Latent Dirichlet Allocation
        @ingroup grp_unsuplearn

@defgroup grp_desc_stats Descriptive Statistics

    @defgroup grp_sketches Sketch-based Estimators
    @ingroup grp_desc_stats

        @defgroup grp_countmin CountMin (Cormode-Muthukrishnan)
        @ingroup grp_sketches

        @defgroup grp_fmsketch FM (Flajolet-Martin)
        @ingroup grp_sketches

        @defgroup grp_mfvsketch MFV (Most Frequent Values)
        @ingroup grp_sketches

    @defgroup grp_profile Profile
    @ingroup grp_desc_stats

    @defgroup grp_quantile Quantile
    @ingroup grp_desc_stats

@defgroup grp_stats Inferential Statistics

    @defgroup grp_stats_tests Hypothesis Tests
    @ingroup grp_stats

@defgroup grp_support Support Modules

    @defgroup grp_array Array Operations
    @ingroup grp_support

    @defgroup grp_cg Conjugate Gradient
    @ingroup grp_support

    @internal
    @defgroup grp_linalg Linear-Algebra Operations
    @ingroup grp_support
    @endinternal

    @defgroup grp_svec Sparse Vectors
    @ingroup grp_support

    @defgroup grp_prob Probability Functions
    @ingroup grp_support

    @defgroup grp_textfex_viterbi Feature Extraction
    @ingroup grp_support

#    @defgroup grp_sample Random Sampling
#    @ingroup grp_support
    
    @defgroup grp_compatibiity Compatibility
    @ingroup grp_support

        @defgroup grp_gp_compat Greenplum Compatibility
        @ingroup grp_compatibiity

    @defgroup grp_utilities DB Administrator Utilities
    @ingroup grp_support

*/
