Development Guide
=================
Algorithms
----------
Refer to `Features <./Features.md>`__ to understand important algorithms used in LightGBM.
Classes and Code Structure
--------------------------
Important Classes
~~~~~~~~~~~~~~~~~
+-------------------------+--------------------------------------------------------------------------------------+
| Class | Description |
+=========================+======================================================================================+
| ``Application`` | The entrance of application, including training and prediction logic |
+-------------------------+--------------------------------------------------------------------------------------+
| ``Bin`` | Data structure used for store feature discrete values(converted from float values) |
+-------------------------+--------------------------------------------------------------------------------------+
| ``Boosting`` | Boosting interface, current implementation is GBDT and DART |
+-------------------------+--------------------------------------------------------------------------------------+
| ``Config`` | Store parameters and configurations |
+-------------------------+--------------------------------------------------------------------------------------+
| ``Dataset`` | Store information of dataset |
+-------------------------+--------------------------------------------------------------------------------------+
| ``DatasetLoader`` | Used to construct dataset |
+-------------------------+--------------------------------------------------------------------------------------+
| ``Feature`` | Store One column feature |
+-------------------------+--------------------------------------------------------------------------------------+
| ``Metric`` | Evaluation metrics |
+-------------------------+--------------------------------------------------------------------------------------+
| ``Network`` | Network interfaces and communication algorithms |
+-------------------------+--------------------------------------------------------------------------------------+
| ``ObjectiveFunction`` | Objective function used to train |
+-------------------------+--------------------------------------------------------------------------------------+
| ``Tree`` | Store information of tree model |
+-------------------------+--------------------------------------------------------------------------------------+
| ``TreeLearner`` | Used to learn trees |
+-------------------------+--------------------------------------------------------------------------------------+
Code Structure
~~~~~~~~~~~~~~
+---------------------+------------------------------------------------------------------------------------------------------------------------------------+
| Path | Description |
+=====================+====================================================================================================================================+
| ./include | Header files |
+---------------------+------------------------------------------------------------------------------------------------------------------------------------+
| ./include/utils | Some common functions |
+---------------------+------------------------------------------------------------------------------------------------------------------------------------+
| ./src/application | Implementations of training and prediction logic |
+---------------------+------------------------------------------------------------------------------------------------------------------------------------+
| ./src/boosting | Implementations of Boosting |
+---------------------+------------------------------------------------------------------------------------------------------------------------------------+
| ./src/io | Implementations of IO relatived classes, including ``Bin``, ``Config``, ``Dataset``, ``DatasetLoader``, ``Feature`` and ``Tree`` |
+---------------------+------------------------------------------------------------------------------------------------------------------------------------+
| ./src/metric | Implementations of metrics |
+---------------------+------------------------------------------------------------------------------------------------------------------------------------+
| ./src/network | Implementations of network functions |
+---------------------+------------------------------------------------------------------------------------------------------------------------------------+
| ./src/objective | Implementations of objective functions |
+---------------------+------------------------------------------------------------------------------------------------------------------------------------+
| ./src/treelearner | Implementations of tree learners |
+---------------------+------------------------------------------------------------------------------------------------------------------------------------+
Documents API
~~~~~~~~~~~~~
LightGBM support use `doxygen `__ to generate documents for classes and functions.
Refer to `docs README <./README.md>`__.
C API
-----
Refere to the comments in `c\_api.h `__.
High Level Language Package
---------------------------
See the implementations at `Python-package `__ and `R-package `__.
Questions
---------
Refer to `FAQ <./FAQ.md>`__.
Also feel free to open `issues `__ if you met problems.