Skip to content

Commit

Permalink
Add description about V2.0
Browse files Browse the repository at this point in the history
Add AbaBoost
  • Loading branch information
PaulYangSz authored Apr 4, 2017
1 parent 9d0160b commit a43317c
Showing 1 changed file with 10 additions and 0 deletions.
10 changes: 10 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,3 +48,13 @@ Learn Logistic Regression and implemented by Java
#### 学习Kaggle的kernel和discussion
#### 优化Java代码包括注释的添加等
#### 还有一些睡觉前想到的,但是醒来后想不起来的。。。

## V2.0版本的更新
上面是V1.0版本的主要工作。主要是实现了GD方法的LR。后面对一维线性和二维非线性的影射函数都做了实验。在数据特征不变的情况下,发现没有太多的区别,而且还是线性的速度快而且在Titanic问题上表现的更好。V2.0版本主要是加入了AbaBoost。
### AbaBoost介绍
AbaBoost是一种ensemble learning算法。简单说就是产生一系列的基分类模型,及每个基模型的预测权重系数,然后综合出最终的预测结果。其中每个基模型都是从上一个基模型的结果中重新计算训练集的权重分布得到。也就是说对于上一次的预测,调整升高预测错误的那条X_i的训练权重系数,让下一次产生的基模型对错误数据的训练重点照顾。
### AdaBoost实现
对于AdaBoost算法的实现主要是在文件AdaBoostModel.java中。在这个类里面实现了基于一个LR模型和最大基模型个数的构造方法,以及从均匀分布开始训练基模型,逐步更新训练集的每条数据的权重分布,再用更新权重后的训练集学习出下一个基模型,直到达到最大基模型个数。不过中间加入了一些限制,比如错误率高于0.5时就停止继续产生基模型(其实低于0.5就是说这个模型的预测结果要反着用,不过感觉意义不大),而且为了让基模型的预测权重有一定的实际意义,尽量优化至错误率不高于0.45.
具体的算法步骤参考《统计方法学习》以及《机器学习》。
### 谈谈在Titanic上的结果
模型最终在Titanic问题上并没有带来什么多大的进步(甚至不如单次1000迭代的LR,不过比单次100迭代的要好。),总结下来就是这个数据特征已经被单次的LR学习到极限了。再多几次LR也不会有太高的进步。如果想要更好的结果,那么一是改变数据特征的选取,重建特征工程。二是更换学习方法来替代LR。

0 comments on commit a43317c

Please sign in to comment.