1 SVD矩阵分解算法。
2 SVD++算法。
3 PageRank算法。
4. HMM模型:
1)马尔可夫模型:
马尔科夫过程指当前状态只与前n个状态有关。这个被称作n阶马尔可夫模型。最简单的就是n=1阶的模型,就是只与当前状态有关。(这里要注意它和确定性生成模式的区别,这里我们得到的是一个概率模型)。下图是所有可能的天气转变情况:
1)隐马尔科夫模型:
阿黄是大家敬爱的警官,他性格开朗、身体健壮,是大家心中健康的典范。现在我们通过贯彻发现,控制阿黄的情绪的有一些侍神。每位侍神控制阿黄时,阿黄以一定的概率表现出各种情绪状态。
如情绪状态(观察状态):放声大笑、愁眉不展、老泪纵横、勃然大怒
侍神状态:修罗王、阿修罗、罗刹神。
每种侍神状态以一定的概率转换为下一个侍神状态,并且我们可以通过概率模型计算转换的规律性,它们的转化矩阵为:
0.5 0.25 0.25
0.375 0.125 0.375
0.125 0.675 0.375
每位侍神主宰阿黄,他表现的状态也有一定的概率性:
0.60 0.20 0.15 0.05
0.25 0.25 0.25 0.25
0.05 0.10 0.35 0.50
同时由于每天的状态也取决于前一天的状态,因此我们也有侍神第一次出现的概率:
修罗王 阿修罗 罗刹神
0.63 0.17 0.20
至此,我们已经研究得到了阿黄情绪变化的所有信息:侍神状态和情绪状态;三种关系:侍神转换关系,侍神与情绪关系,侍神初始状态。
初始状态矩阵:Ui=( 0.64 0.17 0.20)
状态转移矩阵:
0.5 0.25 0.25
0.375 0.125 0.375
0.125 0.675 0.375
两态混合矩阵:
0.60 0.20 0.15 0.05
0.25 0.25 0.25 0.25
0.05 0.10 0.35 0.50
一: 计算观察状态的概率:
知道这些之后,我们可以估计“放声大笑”-“老泪纵横”-“勃然大怒”出现的概率。因为他们的转换关系可以是(修罗王,阿修罗,罗刹神)^3=27
因此这样计算是指数级,几乎是灾难性的。
当然在计算机进行计算时,可以利用递归化简化计算,降低复杂度:
第一天:放声大笑
(0.63 * 0.6) = 0.3780002
(0.17 * 0.25) = 0.0425
(0.2 * 0.05) = 0.010000001
第二天:老泪纵横
(((0.37800002*0.5) + (0.0425*0.375) + (0.010000001*0.375))*0.15)=0.03092813
(((0.37800002*0.25) + (0.0425*0.125) + (0.010000001*0.675)) * 0.25) = 0.026640628
(((0.37800002*0.25) + (0.0425*0.375) + (0.010000001*0.375)) * 0.35) = 0.039965626
第三天:勃然大怒
(((0.03092813*0.5) + (0.026640628*0.375) + (0.039965626*0.125)) * 0.05) = 0.0015225002
(((0.03092813*0.25) + (0.026640628*0.125) + (0.039965626*0.675)) * 0.25) = 0.009509727
(((0.03092813*0.25) + (0.026640628*0.375) + (0.039965626*0.375)) * 0.5) = 0.01635469
所以,最终所有可能加起来,“放声大笑-老泪纵横-勃然大怒”的概率为
0.0015225002+0.009509727+0.01635469= 0.027386917
(((0.37800002*0.25) + (0.0425*0.125) + (0.010000001*0.675)) * 0.25) = 0.026640628
(((0.37800002*0.25) + (0.0425*0.375) + (0.010000001*0.375)) * 0.35) = 0.039965626
第三天:勃然大怒
(((0.03092813*0.5) + (0.026640628*0.375) + (0.039965626*0.125)) * 0.05) = 0.0015225002
(((0.03092813*0.25) + (0.026640628*0.125) + (0.039965626*0.675)) * 0.25) = 0.009509727
(((0.03092813*0.25) + (0.026640628*0.375) + (0.039965626*0.375)) * 0.5) = 0.01635469
所以,最终所有可能加起来,“放声大笑-老泪纵横-勃然大怒”的概率为
0.0015225002+0.009509727+0.01635469= 0.027386917
二: 由观察状态推测最大可能隐状态:
比如某天阿黄,不幸的出现了“放声大笑”-“老泪纵横”-“勃然大怒”的观察状态,如何确定是那些侍神(隐状态)导致的这种情况呢?
那么我们计算的时候,可以选取MAX{P(笑-泪-怒 | 修罗王-修罗王-修罗王), P(笑-泪-怒 | 修罗王-修罗王-阿修罗),......., P(笑-泪-怒 | 罗刹神-罗刹神-罗刹神) }
中最大的概率,即可求出期望的最大隐状态转换。
第一天:
一天:放声大笑
修罗王 (0.63 * 0.6) = 0.37800002
阿修罗 (0.17 * 0.25) = 0.0425
罗刹神 (0.2 * 0.05) = 0.010000001
第二天:老泪纵横
修罗王 max ((0.37800002*0.5), (0.0425*0.375), (0.010000001*0.125)) * 0.15 = 0.028350003
阿修罗 max ((0.37800002*0.25), (0.0425*0.125), (0.010000001*0.675)) * 0.25 = 0.023625001
罗刹神 max ((0.37800002*0.25), (0.0425*0.375), (0.010000001*0.375)) * 0.35 = 0.033075
三:使用HMM模型的步骤:
HMM包含两类状态,三种关系:初始状态,状态转移矩阵,两状态混合矩阵。
HMM除了上面两个功能之外还有一个从观察序列得出HMM的这一种应用。(当然这个最难,根据观察序列和其代表的隐状态,生成一个三元组HMM(Π,A,B))。以后有时间了我会继续研究和实现的。
四:HMM应用:
说了这么多,HMM到底有什么应用呢?
HMM一开始是在信息论中应用的,后来才被应用到自然语言处理还有其他图像识别等各个方面。下面举两个例子说明他的应用,一个是输入法的整句解码,一个是语音识别。有图为证:
输入法把拼音看做是观察状态,需要得到的汉字为隐藏状态,这样,输入法的整句解码就变成了维特比解码,其转移概率即是二元语言模型,其输出概率即是多音字对应不同拼音的概率。
将上图中的拼音换成语音,就成了语音识别问题,转移概率仍然是二元语言模型,其输出概率则是语音模型,即语音和汉字的对应模型。
4. Aproiri算法:
Apriori算法是挖掘关联规则的算法,它使用了一个很高效的剪枝技术,那就是频繁子集只能由频繁子集生成而来。
先讲Apriori算法的两个很重要的含义:最小项集和频繁子集。频繁子集就是支持度,即出现次数超过一定阀值的子串。
然后呢:Apriori算法就希望找到支持度超过阀值的k项集。
所以根据频繁子集的子集一定是频繁子集,它就选取包含元素为1的频繁子集,然后再逐一添加合并,得到包含元素为2甚至更多的频繁子集。
执行过程:
1 初始化,寻找到那些支持度大于一定阀值的1频繁子集。
2 逐步迭代,从i-1项频繁子集生成i频繁子集,并且检测k频繁子集的支持度。如果支持度大于一定的阀值,就保留i项频繁子集。
优缺点:
1 优点:引入了剪枝技术,大幅增加了频繁子集寻找的过程。
2 缺点:需要多次扫描事务数据库,这导致效率低下。所以后面提出了高效的FP-Tree算法。
4. Fp-growth算法:
Fp-growth算法因为引入了首先对出现次数为1的项集进行排序,然后将事务数据项中的事务按照前面的排序结果再次进行排序。
后面建立Fp-Tree时,就直接类似Trie树的方法了,将一个事务直接插入到Fp-Tree中。然后使用链表将同属于一个物品的指针项连接起来,而且每个节点都记录了从开始到这个节点有多少个出现次数。
后面求解频繁子集的时候,只需要检查该节点的支持度,然后从该节点找到根节点,就是频繁子集。
最近时间有限,先写到这里,后面会补上相关的代码实现的。具体的执行过程参见参考文献:1
5. 支持度可信度:
支持度: P(A∪B),即A和B这两个项集在事务集D中同时出现的概率。
置信度: P(B|A),即在出现项集A的事务集D中,项集B也同时出现的概率。
注意一定要提升自己的学习的主动性。
6. 维度灾难:
1961年,Bellman提出了维度灾难的概念。他在考虑动态优化问题时用来描述空间为度增加时,分析和组织高维空间。
产生维度灾难的原因有两个:
1. 纬度提高时,空间体及增加的过快,因而可用的数据变的稀疏。2 组织和搜索数据时,也有依赖于检测对象区域,这些区域中的对象通过相似度属性而形成分组。然而在高维空间中,所有的数据都很稀疏从很多角度看并不相识,因而平常使用的数据组织极其低效。
处理高维灾难的方法有很多:降维(PCA主成分析法)、函数距离(),马尔科夫蒙特卡洛、共享最近邻搜索方法。
参考文献:
Fp算法详解:http://blog.csdn.net/lmm2003/article/details/6882737
PageRank算法参考文献:http://www.cnblogs.com/FengYan/archive/2011/11/12/2246461.html