https://github.com/agnjason/decision-tree
实现ID3算法、随机森林算法和XGBoost算法
https://github.com/agnjason/decision-tree
decision-trees python xgboost
Last synced: about 1 month ago
JSON representation
实现ID3算法、随机森林算法和XGBoost算法
- Host: GitHub
- URL: https://github.com/agnjason/decision-tree
- Owner: agnJason
- Created: 2020-01-29T03:07:44.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2020-01-29T03:08:46.000Z (over 6 years ago)
- Last Synced: 2025-01-14T09:41:49.035Z (over 1 year ago)
- Topics: decision-trees, python, xgboost
- Language: Jupyter Notebook
- Size: 38.1 KB
- Stars: 2
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Decision-tree
实现ID3算法、随机森林算法和XGBoost算法
一、简介
决策树(decision tree)是一个树结构(可以是二叉树或非二叉树)。其每个非叶节点表示一个特征属性上的测试,每个分支代表这个特征属性在某个值域上的输出,而每个叶节点存放一个类别。使用决策树进行决策的过程就是从根节点开始,测试待分类项中相应的特征属性,并按照其值选择输出分支,直到到达叶子节点,将叶子节点存放的类别作为决策结果。
构造决策树的关键步骤是分裂属性。所谓分裂属性就是在某个节点处按照某一特征属性的不同划分构造不同的分支,其目标是让各个分裂子集尽可能地“纯”。尽可能“纯”就是尽量让一个分裂子集中待分类项属于同一类别。分裂属性分为三种不同的情况:
1、属性是离散值且不要求生成二叉决策树。此时用属性的每一个划分作为一个分支。
2、属性是离散值且要求生成二叉决策树。此时使用属性划分的一个子集进行测试,按照“属于此子集”和“不属于此子集”分成两个分支。
3、属性是连续值。此时确定一个值作为分裂点split_point,按照>split_point和<=split_point生成两个分支。
构造决策树的关键性内容是进行属性选择度量,属性选择度量是一种选择分裂准则,是将给定的类标记的训练集合的数据划分D“最好”地分成个体类的启发式方法,它决定了拓扑结构及分裂点split_point的选择。
属性选择度量算法有很多,一般使用自顶向下递归分治法,并采用不回溯的贪心策略。
二、数据与问题
利用给定数据或者在网上下载的数据,实现ID3算法、随机森林算法和XGBoost算法,比较三种种算法的性能和分类精度。