数据挖掘 基础算法

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

修罗王(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
 
第三天:勃然大怒   
修罗王max ((0.028350003*0.5), (0.023625001*0.375), (0.033075*0.125)) * 0.05 = 0.000708750   
阿修罗max ((0.028350003*0.25), (0.023625001*0.125), (0.033075*0.675)) * 0.25 = 0.00558140   
罗刹神max ((0.028350003*0.25), (0.023625001*0.375), (0.033075*0.375)) * 0.5 = 0.006201562 

可见,第一天,修罗王主宰阿黄最为可能;   
第二天,由修罗王变为罗刹神,造成阿黄老泪纵横的可能最大;   
而第三天,继续由罗刹神主宰阿黄,造成勃然大怒的可能最大   
所以,对应“放声大笑-老泪纵横-勃然大怒”最可能的侍神组合为:修罗王-罗刹神-罗刹神  


三:使用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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值