(v1,g肉=c}
为了让每次变化尽可能大,alpha2的选择满足如下式子最大,即步长最大化:
咼一方』
其中E是上面提到过的预测值和真实值差值的绝对值,也确实是误差值。
按上述方法不断选择一对alpha并更新,直到达到最大迭代次数或所有alpha都不再变化,则停止迭代。
有朋友就会问,求出alpha之后呢?
如何推断新样本数据属于1依旧-1呢?
不忘了,在最优化求解一节,我们得到了如下:
f(x)=》©丁怡匕泌)+b
若f(x)大于0,则新样本数据属于1;否则,新样本数据属于T。
能够见得,求出alpha后,所有问题都迎刃而解了。
4.频繁项集与关联规则FP-growth差不多原理
4.1.从啤酒和尿布引出的频繁项集
在上一节中,要紧介绍了支持向量机SVM模型的原理和实现。
在文章一开始,笔者提到机器学习要紧分为四大类,分不是分类,聚类,回归和关联分析。
第一篇中的SVM就属于分类。
那么下面笔者开始介绍关联分析。
关联分析分为频繁项集挖掘和关联规则挖掘。
生活中的数据本身包含着各种规律,机器学习模型能够从数据中挖掘出这些规律,啤酒与尿布确实是一个典型的例子。
有研究发觉,在超市的订单记录中,啤酒和尿布总是频繁共同出现在同一条订单记录里。
换句话讲,买尿布的人,往往会顺手买啤酒。
这就引出了本文的主题之一,即频繁项集。
频繁项集是在数据库中大量频繁出现的数据集合。
那么发觉这些频繁项集有什么意义呢?
1.用于制定营销策略。
如同啤酒与尿布的例子,超市假如将啤酒和尿布放在相邻的位置,会增加两者的销量。
还可用于制定打折促销活动,给买了啤酒和尿布的客户打折,也能够增加销量。
2.用于发觉共现词。
这种场景事实上我们经常会遇到。
当我们在扫瞄器中输入"频繁项集”时,扫瞄器自动弹出如"频繁项集置信度”,“频繁项集关联规则"等备选记录,我们每每都会感叹扫瞄器的智能,事实上那个地点的秘诀确实是频繁项集。
也确实是讲,在大量的用户搜索记录中,"频繁项集”和”置信度“共同出现在了大多数的搜索记录中。
同理,“频繁项集”和"关联规则"也频繁得共同出现在搜索记录中。
3.用于发觉事物的热点信息。
从新闻报道和微博中猎取关于某事物的相关文档,然后应用频繁项集挖掘算法能够得到该事物的热点新闻。
主流的频繁项集挖掘算法有Apriori和FP-growth。
其中Apriori算法需要多次扫描数据库,这就使得该算法本身不适合大数据量。
FP-growth,即FrequentPatternGrowth,它通过构建FP树(即FrequentPatternTree)此的数据结构,巧妙得将数据存储在FP树中,只需要在构建FP树时扫描数据库两次,后续处理就不需要再访问数据库了。
这种特性使得FP-growth算法比Apriori算法速度快。
FP树是一种前缀树,由频繁项的前缀构成,具体细节会在频繁项集挖掘原理一节介绍。
挖掘出频繁项集后,能够从频繁项集中进一步挖掘关联规则。
4.2.关联规则简介
关联规则是在频繁项集的基础上得到的。
关联规则指由集合A,能够在某置信度下推出集合Bo通俗来讲,确实是假如A发生了,那么B也专门有可能会发生。
举个例子,有关联规则如:
『鸡蛋'面包'}->C牛奶'},该规则的置信度是0.9,意味着在所有买了鸡蛋和面包的客户中,有90%的客户还买了牛奶。
关联规则能够用来发觉专门多有味的规律。
这其中需要先阐明两个概念:
支持度和置信度。
4.2.1.支持度Support
支持度指某频繁项集在整个数据集中的比例。
假设数据集有io条记录,包含「鸡蛋'「面包‘}的有5条记录,那么r鸡蛋
'面包的支持度确实是5/10=0.5o
4.2.2.置信度Confidence
置信度是针对某个关联规则定义的。
有关联规则如{'鸡蛋'面包->r牛奶‘},它的置信度计算公式为{‘鸡蛋‘面包‘,'牛奶‘}的支持度/r鸡蛋‘面包的支持度。
假设「鸡蛋‘面包'牛奶'}的支持度为0.45,r鸡蛋‘面包'}的支持度为0.5,则{'鸡蛋'面包J->{'牛奶'}的置信度为0.45/0.5=0.9O
关联规则用于发觉if-〉then如此的规则,并能够给出这条规则的可信度(即置信度)。
现实场景中能够用来发觉专门多规律,下面举个例子。
在信息安全领域,需要依照已有流量数据制定规则,来推断是否触发安全报警。
如规则「数据包大’多个ip地址同时发送数据->{'异常该规则的置信度为0.85O这条规则表示,当流量数据包大,并有多个ip地址同时向目标ip发送数据时,则有85%的概率存在异常,需要触发报警。
4.3.频繁项集挖掘原理
频繁项集挖掘分为构建FP树,和从FP树中挖掘频繁项集两步。
本节用如下表所示的数据集作为例子展开,该示例数据集共四条数据。
表格1示例数据集
4.3.1.构建FP树
构建FP树时,首先统计数据集中各个元素出现的频数,将频数小于最小支持度的元素删除,然后将数据集中的各条记录按出现频数排序,剩下的这些元素称为频繁项;接着,用更新后的数据集中的每条记录构建FP树,同时更新头指针表。
头指针表包含所有频繁项及它们的频数,还有每个频繁项指向下一个相同元素的指针,该指针要紧在挖掘FP树时使用。
下面用上文提到的数据集展开讲明,假设最小支持度为2。
首先,统计数据集中各元素出现的次数,得a出现4次,b出现3次,c出现2次,d出现2次,e出现1次。
接着,将出现次数小于最小支持度2的元素(即e)在数据
集中删除,并将数据集按出现次数由高到低排序,得表格2。
表格2示例数据集
然后,用更新后的数据集中的记录创建FP树,并同时更新头指针表。
创建FP树时,当待添加的记录与FP树中的路径相同,则只需更新元素对应的频数;假如待添加的记录与FP树存在不一致,则在不一致的地点分叉,创建新的结点。
如图6、图9所示。
注意,FP树的根节点是null。
图6向FP树添加第一条记录{a,b,c}
图7向FP树添加第二条记录{a,b,ctd}
图8向FP树添加第三条记录{a,d}
图9向FP树添加第四条记录{a,b}
4.3.2.挖掘频繁项集
得到FP树后,需要对每一个频繁项,逐个挖掘频繁项集。
具体过程为:
首先获得频繁项的前缀路径,然后将前缀路径作为新的数据集,以此构建前缀路径的条件FP树。
然后对条件FP树中的每个频繁项,获得前缀路径并以此构建新的条件FP树。
不断迭代,直到条件FP树中只包含一个频繁项为止。
下面以元素c为例,从上文图9创建好的FP树中挖掘频繁项集。
首先,获得以c元素的前缀路径{a:
2,b:
2},注意此处a和b的频数为2是因为c的频数为2,因此与c共同出现的a和b的频数就都为2O
接着,创建条件FP树,具体的创建过程和上一节创建FP树的过程一样,如图10所示。
null
头指针表
图10c元素的前缀路径构成的条件FP树
注意现在头指针表中包含两个元素,因此对每个元素,需要获得前缀路径,并将前缀路径创建成条件FP树,直到条件FP树中只包含一个元素时返回。
1.对元素a,获得前缀路径为{},则频繁项集返回{c,a};
2.对元素b,获得前缀路径4},则将前缀路径创建成条件
FP树,如图11所示。
注意现在条件FP树中只包含一个元素,故返回频繁项集{c,b,a}o由于元素b也是频繁项,因此{c,b}也是频繁项集。
再加上{c}本身确实是频繁项集,因此c对应的频繁项集有:
{c}{c,a}{c,b}{c,b,a}o
头指针表
a:
2
null
a:
2
图11b元素的前缀路径构成的条件FP树
将其他元素a,b,d同样按照上述对c的操作,得到表格3所示频繁项集。
表格3元素a,b,c,d对应的频繁项集
元素
频繁项集
a
{a}
b
(b}{b,a}
c
{c}{c,a}{c,b}
{c,b,a}
d
{d}{d,a}
4.4.关联规则挖掘原理
关联规则挖掘首先需要对上文得到的频繁项集构建所有可能的规则,然后对每条规则逐个计算置信度,输出置信度大于最小置信度的所有规则。
以频繁项集{a,b,c}为例,构建所有可能的规则:
{b,c}->{a},{a,c}->{b},{a,b}->{c},{c}->{a,b},{b}->{a,c},{a}->{b,c}。
对每条规则计算置信度后,输出满足要求的规则即可。
5.NaiveBayes差不多原理
朴素贝叶斯模型要紧用来分类,然而与SVM模型不同的的是,朴素贝叶斯模型不需要针对目标变量建立模型,而是借助贝叶斯公式计算样本属于各个类不的概率,然后取概率值大的类不作为分类类不。
之因此称之为朴素,是因为朴素贝叶斯模型假设各属性之间是条件独立的,该假设极大得简化了运算,使得朴素贝叶斯模型变得特不简单。
朴素贝叶斯模型要紧应用在文本分类方面。
那个地点需要用到向量空间模型,立即文本转换成词向量。
词向量的每一项是该词出现的频数。
在朴素贝叶斯中会将频数进一步转换成频率。
如此就完成了文本到数值上的转化,方便后期计算条件概率和先验概率。
朴素贝叶斯模型也有它的优缺点,优点是模型简单,计算快;缺点是依靠于属性之间条件独立这一假设,然而现实场景下专门多情况并不满足这一假设,使得朴素贝叶斯的准确率受到阻碍。
这种情况需要考虑半朴素贝叶斯,即放松属性之间条件独立这一假设,一定程度上考虑属性之间的依靠关系。
由于篇幅有限,对半朴素贝叶斯感兴趣的话可自行参照文末参考资源学习,本文重点介绍朴