的简单算法
㈠ 简单明了的分类算法:OneR
分类算法的目的就是根据训练集的特征将新的数据进行预测,当然能够找到特征之间的联系越多那么最后的分类结果也就应该越准确。但是有没有一个比较简单的算法,能够使用极少的特征就能够进行简单的分类呢?那就是OneR算法了。
OneR的全称为:One Rule,顾名思义也就是一条规则的意思。也就是说我们最终仅仅根据训练集中的一个特征就能够实现对数据的分类。如果只是使用一条规则的话,很显然这个分类的准确度不会很高,但是在某些特定的数据集中这个简单的算法也能够得到比较好的表现。
为了明白这个算法的工作原理,首先举一个比较简单的例子:就拿人的身高和眼睛大小以及肤色的数据对人进行分类是男是女。其中的编号不属于特征范畴,只是为了后续介绍数据使用。
编号 身高 眼睛大小 肤色 性别
1 180 正常 偏白 男
2 175 较大 偏黑 男
3 170 正常 偏黑 男
4 170 较大 偏黑 女
5 165 正常 偏白 女
6 160 较大 偏白 女
上述表格中随机写了一系列数据,我们来根据这些数据介绍一下OneR算法。
既然OneR算法是根据一个规则,也就是某一个特征来进行分类的,那么如何找到这个规则就比较重要了。
就拿上述的例子来看,我们有:身高、眼睛大小、肤色这三种特征,身高是属于连续值的范畴,眼睛大小是属于离散数据为:正常、较大,肤色也是离散数据:偏白、偏黑。
我们首先使用简单的方法将其转换为离散值,将大于(或等于)身高平均值的记为1,小于身高平均值的记为0,那么现在的数据就是这样。
编号 身高 眼睛大小 肤色 性别
1 1 正常 偏白 男
2 1 较大 偏黑 男
3 1 正常 偏黑 男
4 1 较大 偏黑 女
5 0 正常 偏白 女
6 0 较大 偏白 女
接下来我们就需要根据这些数据找到一个可以用来分类的特征规则。这个特征究竟是根据身高、眼睛大小、肤色呢?
其实根据我们的生活常识,知道在这三种特征中身高的可靠性比较高的。但是如何根据计算找到身高这个特征呢?
如何找到用来分类的规则(特征)。
其实简单的想一下就知道了,当然是使用这个特征之后我们的划分结果的正确率是最高的。我们需要进行一些简单的计算,要确保使用这个特征进行分类得到的准确率最高。因为只有准确率最高我们才能够得到比较正确的分类结果,所以我们的任务就可以转换为找到一个特征,根据这个特征进行分类的时候能够得到最高的正确率。
但是要明白,某个特征可能会有多个特征值,所以计算特征的准确率的话,需要包含其中的所有特征值可能性。也就是说这个特征的准确率是根据所有的特征值计算出来的。而对于某个特征对应的特征值来看,当然是选择分类最多的那个作为本次特征值的分类结果,然后再根据本次特征值的分类结果计算出错误个数。最后汇总到一起计算出该特征的准确率。
下面对上述样本集中的身高、眼睛大小、肤色分别计算准确率。
身高。
我们可以看到身高这个特征共有两种特征值:0和1。
如果身高特征值为1的话,那么符合特征值的数据编号为:{1,2,3,4},对应的分类为:{男,男,男,女}。很明显如果身高这个特征值为1的话,在本次样本集中男生占了3/4,女生占了1/4。那么我们就选择分类结果最多的那个作为身高特征值为1的划分结果,也就是性别为男。所以现在可以简单的认为如果身高特征值为1的话,我们就简单的认为性别为男。但是很显然这个结论是有错误的,在本次样本集中这个结论的错误个数为1,因为在身高特征值为1的情况下有1样本的性别为女,与我们的结论不符。
如果身高特征值为0的话。那么符合特征值的数据编号为:{5,6},对应的分类为:{女,女}。这个计算结果比较明显了。如果身高特征值为0的话,女生占了2/2。那么我们就选择性别为女作为身高特征值为0的分类结果。也就是说如果身高的特征值为0的话,我们就认为性别为女。这个结论可能有错误,但是在本次的数据集中是全部正确的。
在计算完身高的全部特征值之后就可以计算准确率了,我们在身高特征值为0的情况下,我们将其划分为女,这个准确率为百分之百。在身高特征值为1的情况下我们将其划分为男,有一个数据是错误的。所以如果按照身高进行划分的话,得到的准确率为:5/6=0.833。
眼睛大小。
眼睛大小这个特征共有两种特征值:正常、较大。
如果眼睛大小是正常的话,符合特征值的数据编号为:{1,3,5},对应的分类结果为:{男,男,女}。同样的男生占了2/3,女生占了1/3,那么就简单的认为如果眼睛大小为正常的话,就认为性别为男性。同样的在本次数据集中,这个结论的错误个数为1,因为当前特征值分类结果中有一个是女性。
如果眼睛大小是较大的话,符合特征值的数据编号为:{2,4,6},对应的分类结果为:{女,女,男}。同样的女生占了2/3,男生占了1/3,那么就简单的认为如果眼睛大小为较大的话,就认为性别为女性。同样的在本次数据集中,这个结论的错误个数为1。
有关眼睛大小的所有特征值计算完成之后就可以计算准确率了。我们在眼睛大小为正常的情况下,将其划分为男,这个结论在样本集中有一个数据是错误的;同样的在眼睛大小为较大的情况下,将其划分为女,这个结论在样本集中有一个数据是错误的。所以如果按照眼睛大小进行划分的话,准确率为:4/6=0.667。
肤色。
肤色特征共有两个特征值:偏黑、偏白。
如果肤色偏黑的话,符合特征值的数据编号为:{2,3,4},对应的分类结果为:{男,男,女}。男生占了2/3,女生1/3。所以如果肤色偏黑的话,就简单认为是男生,这个结论的错误个数为1。
如果肤色偏白的话,符合特征值的数据编号为:{1,5,6},对应的分类结果为:{男,女,女}。男生占了1/3,女生占了2/3,。所以如果肤色偏白的话,就简单的认为是女生,这个结论的错误个数为1。
所以肤色的准确率为:4/6=0.667。
现在得到了各个特征的准确率。身高的划分准确率为:0.833;肤色和眼睛大小的准确率都为:0.667。所以我们使用身高作为划分特征。
也就是如果有新的数据,我们只看身高这一项数据就将其进行分类。但是分类器的准确率的话是需要使用测试数据进行计算的,我们计算出来的0.833只是根据训练样本集的准确率,只是为了找出用来划分的规则。
㈡ 超级简单的HMM算法详解(包懂!)
简易HMM算法详解
故事背景描述了一个男生根据心情预测天气的游戏。女友根据男生的心情,预测天气是晴天还是雨天。通过男生的心情变化,女友推断天气变化。
女友通过男生的心情变化预测天气变化,这体现了隐马尔可夫模型(HMM)的基本思想。HMM模型包含观测值、隐藏状态、转换概率和输出概率四个概念。转换概率描述了隐藏状态之间的转移,输出概率描述了从隐藏状态到观测值的概率。
通过收集历史数据,可以统计并计算出转换概率和输出概率。例如,统计男生在不同天气下的心情比例,得到天气对心情的影响概率。
解决四个问题,包括如何估计转换概率和输出概率、在没有心情信息时晴天和雨天的概率、男生心情为高兴时的天气概率以及连续三天心情为“高兴-烦躁-高兴”的天气情况。其中,使用贝叶斯定理计算男生心情为高兴时的天气概率。
为了解决连续多天天气的预测问题,通常使用穷举法,但在实际应用中效率较低。因此,引入维特比算法(Viterbi algorithm)作为更高效的解决方案,通过迭代计算最有可能的天气链。
维特比算法的核心是迭代法,通过计算每一步的最有可能的路径概率,最终找到连续多天最有可能的天气链。在具体实现上,可以通过Python代码实现,使用numpy数组来处理多状态和多观测值的情况。
通过本教程,读者可以掌握HMM的基本概念、如何估计模型参数、以及如何应用维特比算法进行预测。这些知识对于理解自然语言处理、生物信息学、金融预测等领域中的时间序列分析至关重要。
如果你对HMM有更多疑问或者想深入学习,请继续关注更多教程和资源,或者直接向我提问。希望这个教程能帮助你理解HMM的基本原理和实际应用。