关联规则
参考链接
此算法是从数据集找出各个关联项之间的关系
样本: 用顾客购买物品为样本, 例如四名顾客购买物品如下
顾客 | 物品 |
---|---|
1 | 啤酒 橘子 汽水 蛋糕 |
2 | 汽水 啤酒 |
3 | 蛋糕 啤酒 |
4 | 橘子 汽水 |
置信度: 表示了这条规则有多大程度上值得可信。设条件的项的集合为A,结果的集合为B。置信度计算在A中,同时也含有B的概率, 即: A发生时,B也发生的概率, 例如: 买了啤酒还买了蛋糕的置信度为0.66, 即为Confidence(A==>B)=P(B|A)=0.5/0.775 啤酒和蛋糕的支持度 / 啤酒的支持度, 也可以理解为:买啤酒的总条数为3, 其中有2条买了蛋糕 2/3=0.66
支持度: 既有A又有B的概率 例如: 即买了啤酒又买了蛋糕的支持度为0.5, 两者同时发生的记录为2条, 总记录4, 2/4=0.5
提升度: 度量此规则是否可用。描述的是相对于不用规则,使用规则可以提高多少。有用的规则的提升度大于1。Lift(A==>B)=Confidence(A==>B)/Support(B)=Support(A==>B)/(Support(A)*Support(B)), 如果提升度大于1则代表值得推荐
use Phpml\Association\Apriori
$associator = new Apriori($support=0.5,$confidence=0.5); //实例化并制定支持度和置信度
$samples = [['alpha', 'beta', 'epsilon'], ['alpha', 'beta', 'theta'], ['alpha', 'beta', 'epsilon'], ['alpha', 'beta', 'theta']];
$labels = [];
$associator->train($samples,$labels); //训练样本
$associator->predict(['alpha','theta']); //预测 返回beta
$associator->getRules(); //生成关联规则, // return [['antecedent' => ['alpha', 'theta'], 'consequent' => ['beta'], 'support' => 1.0, 'confidence' => 1.0], ... ]
$associator->apriori();//生成频繁项集
网友评论