正文
随机森林模型
-
一个决策树集合
-
支持分类和回归
-
分离节点
按类别(例如:day == “sunday”)
按数值(例如:age < 43)
-
决策是由大多数决策树所决定的
Gini impurity:基尼不纯度准则
【充电】在实际训练中, 需要根据不同的需求选择适当的损失函数是必须的,损失函数的形式即是我们选择最优分支函数的优化目标。损失函数形式设定分为两类:分类树损失函数和回归树损失函数,其中分类树损失函数又分为4种准测:基尼不纯度准则、信息熵准则、对数价值准则和经过Kass调整的对数价值准则;回归树损失函数分为方差的最大似然估计准则、绝对偏差准则和分支规则的F检验准则。
公式
按其定义式所表达的,它的含义是“任意取两个观测其属于不同类的概率”。
在分支时的基尼不纯度公式改进为:
分别为当前节点与其分支节点的观测数;基尼不纯度改进越大,说明分支后各个子节点任取两个观测数与不同类的概率越低。
在一个决策树上的泰坦尼克号的生存预测
在一个随机森林上的泰坦尼克号的生存预测
举一个例子:John的特征是:
{male, 34, married + 2, US, CA, 1.78m, 78kg, 110iq, blue eyes}
那么根据上面的随机森林的计算,John会生存下来吗?
Tree#1 - Survived
Tree#2 - Died
Tree#3 - Survived
结果:根据随机森林决策是Survived。
真实世界的挑战
广告服务的公司需要在数据中心50ms的延迟的条件下完成每秒20000次广告服务。运行1000次活动需要1000个随机森林,每一个森林有15000棵决策树,平均每一棵树的深度有7层。可以想象计算量是很庞大的。针对这个案例,广告模型服务在基于Homegrown和Redis-ML的机器学习计算中的比较:
真实世界的一个案例:电影推荐系统
(1)概述
(2)用到的工具集
(3)Docker中运行Redis-ML 和spark-redis-ml
# docker pull shaynativ/redis-ml
# docker run --net=host shaynativ/redis-ml
# docker pull shaynativ/spark-redis-ml
# docker run --net=host shaynativ/spark-redis-ml
(4)一棵森林对应一个电影
数据处理的过程分为以下几步: