企业网站怎么做的WordPress优化速度插件
web/
2025/9/30 2:19:56/
文章来源:
企业网站怎么做的,WordPress优化速度插件,杭州网络推广运营公司,做HH的网站目录
一、算法介绍
1.1算法背景
1.2算法引入
1.3算法假设
1.4算法原理
1.5算法步骤
二、算法公式推导
2.1数学基础
2.2EM算法推导
三、算法实现
3.1关于EM聚类
3.2EM工具包的使用
3.3 实例测试
四、算法讨论
4.1EM算法的优缺点
4.2EM算法的应用
4.3对于EM算法…目录
一、算法介绍
1.1算法背景
1.2算法引入
1.3算法假设
1.4算法原理
1.5算法步骤
二、算法公式推导
2.1数学基础
2.2EM算法推导
三、算法实现
3.1关于EM聚类
3.2EM工具包的使用
3.3 实例测试
四、算法讨论
4.1EM算法的优缺点
4.2EM算法的应用
4.3对于EM算法框架如何选择具体的算法 五、实验总结 一、算法介绍
1.1算法背景
EM 的英文是 Expectation Maximization所以 EM 算法也叫最大期望算法。
EM算法最早由Arthur Dempster、Nan Laird和Donald Rubin在1977年提出用于解决包含隐变量的统计模型参数估计问题。
在许多现实问题中观测数据并不完整存在一些未观测到的隐含信息或隐变量这时候就需要使用EM算法来对模型进行参数估计。
EM算法通过迭代的方式交替进行“期望步骤”和“最大化步骤”不断优化参数估计值直到收敛为止。
1.2算法引入
由一个简单的场景进行EM算法的引入
假设你炒了一份菜想要把它平均分到两个碟子里该怎么分
很少有人用称对菜进行称重再计算一半的分量进行平分。大部分人的方法是先分一部分到碟子 A 中然后再把剩余的分到碟子 B 中再来观察碟子 A 和 B 里的菜是否一样多哪个多就匀一些到少的那个碟子里然后再观察碟子 A 和 B 里的是否一样多……整个过程一直重复下去直到份量不发生变化为止。
你能从这个例子中看到三个主要的步骤初始化参数、观察预期、重新估计。首先是先给每个碟子初始化一些菜量然后再观察预期这两个步骤实际上就是期望步骤Expectation。如果结果存在偏差就需要重新估计参数这个就是最大化步骤Maximization。这两个步骤加起来也就是 EM 算法的过程。
1.3算法假设
EM算法的算法假设包括以下几点
1隐变量假设
EM算法针对含有隐变量的概率模型假设存在一些未观测到的隐变量这些隐变量与观测变量共同决定了观测数据的生成过程。
2参数假设
假设模型中包含一些需要估计的参数这些参数可以完全描述观测数据的生成过程。
这些参数可能是概率分布的参数、混合模型的权重参数等需要通过EM算法进行估计。
3独立同分布i.i.d.假设
EM算法通常假设观测数据是独立同分布的即每个观测样本都是相互独立且具有相同的概率分布。
4完全数据假设
EM算法引入“完全数据”概念即假设观测数据不仅包括观测变量还包括相应的隐变量从而将估计问题转化为对完全数据的估计问题。
通过引入完全数据可以简化模型的描述和参数估计。
总之EM算法的基本假设包括含有隐变量的概率模型、需要估计的模型参数、观测数据的独立同分布性质以及完全数据的引入。在这些假设下EM算法能够有效地进行参数估计并在实际应用中取得了广泛的成功。 1.4算法原理
EM算法是一种用于含有隐变量的概率模型参数估计的迭代优化算法其核心原理可以简要概括如下
1E步骤Expectation Step
在E步骤中根据当前的模型参数估计值计算隐变量的后验概率。这一步骤的目的是计算在给定观测数据情况下每个隐变量取不同取值的概率。
通过对隐变量的后验概率进行计算可以得到对未观测到的隐变量的更准确的估计。
2M步骤Maximization Step
在M步骤中利用在E步骤中计算得到的隐变量的后验概率最大化完全数据的对数似然函数来更新模型参数。换言之就是用E步骤得到的隐变量的后验概率加权的方式来更新模型参数。
3迭代更新
在完成E步骤和M步骤后得到新的模型参数估计值然后将这些新的参数估计值用于下一轮的E步骤和M步骤。
通过不断地进行E步骤和M步骤的交替迭代直至参数收敛或达到预定的迭代次数从而获得最终的模型参数估计值。
4收敛性
EM算法保证在每次迭代步骤后对数似然函数都会增加或保持不变因此EM算法可以收敛到局部最优解。
但需要注意的是EM算法并不能保证收敛到全局最优解因其结果受初始参数值的影响。
总之EM算法通过交替进行E步骤和M步骤能够有效地估计含有隐变量的概率模型的参数。
1.5算法步骤
步骤一 参数的初值可以任意选择但需注意EM算法对初值是敏感的
步骤二 E步求Q(θ,θ(i))。Q函数式中Z是未观测数据Y是观测数据。注意Q(θ,θ(i))的第1个变元表示要极大化的参数第2个变元表示参数的当前估计值。
步骤三 M步求Q(θ,θ(i))的极大化得到θ(i1)。
步骤四 给出停止迭代的条件一般是对较小的正数ε1ε2若满足下面条件则停止迭代。 EM算法计算流程 二、算法公式推导 2.1数学基础
1数学期望
数学期望就是一个事件可能获得的所有结果被其获得相应结果的可能性概率“降价加权”后求得的和作为该事件的整体期望结果也就是用一个数来表示一件事获得可能结果是啥。
假设一个随机事件X 对于离散型数值的数学期望为 pi为xi发生的概率值。
对于连续型数值的数学期望为 f(x)为x的概率密度函数。
2最大似然估计
最大似然估计分为离散型随机变量和连续型随机变量两种。离散型随机变量是一系列独立同分布的随机事件在某个或某些未知参数θ的参与下其得到最大概率值下对参数θ的估计连续型随机变量是指一系列具有连续特征的随机变量在某个或某些未知参数θ的参与下其得到最大概率密度值下对参数θ的估计。
通常由于计算最大概率值时需要用到概率连乘这将在计算上带来很大的麻烦因此我们在求解最大似然值时往往采用对数方法进行即对连乘式取ln或者log将连乘转换成连加形式再求其偏导。
总结求解极大似然估计问题步骤
写出似然函数
对似然函数取对数并整理
求导数令导数为0得到似然方程
解似然方程得到的参数即为所求
3JenSen不等式
如果f是凸函数X是随机变量那么E[f(X)]f(E[X])通俗的说法是函数的期望大于等于期望的函数。
特别地如果f是严格凸函数当且仅当P(X EX) 1即X是常量时上式取等号即E[f(X)] f(EX) 2.2EM算法推导
1对于每个实例用表示样本实例隐含变量z的某种分布且满足条件()1, () 0,∀j,如果是连续性的则表示概率密度函数需要将求和符号换成积分符号。 对于上面的式子做如下变换 上面三个式子中式1是根据联合概率密度下某个变量的边缘密度函数求解的这里把 z 当作是随机变量。对每一个样本i的所有可能类别 z 求等式右边的联合概率密度函数和也就得到等式左边为随机变量 x 的边缘概率密度。由于对式1直接求导非常困难所以将其分子分母都乘以一个相等的函数转换为式2。而在式2变为式3的过程采用的是上面提到的Jensen不等式。 因此便得到了公式3。OK现在我们知道上面的式2和式3两个不等式可以写成似然函数 L ( J ( z , Q )的形式 z 为隐含变量那么我们可以通过不断的最大化 J 的下界来使得L(θ)不断提高最终达到它的最大值。
2完整的流程如下 第一步初始化分布参数 θ
第二步重复E-step 和 M-step直到收敛
·E步骤根据参数的初始值或上一次迭代的模型参数来计算出的隐性变量的后验概率条件概率其实就是隐性变量的期望值。作为隐藏变量的现有估计值
·M步骤最大化似然函数从而获得新的参数值
通过不断的迭代然后就可以得到使似然函数 L(θ)最大化的参数 θ了。 3讨论如何确保EM收敛
假定和是EM第t次和t1次迭代后的结果。如果我们证明了 ll()也就是说极大似然估计单调增加那么最终我们就会得到极大似然估计的最大值。下面来证明选定 θ(t)之后我们得到E步 这一步保证了在给定θ(t)时Jensen不等式中的等式成立也就是 然后进行M步固定并将试作变量对上面的式子求导得到这样经过一些推导会有以下式子成立 在公式(4)中,得到只是最大化l也就是l的下界并没有使等式成立等式成立只有在固定并按E步得到时才能成立。
这样就证明了 l(θ)会单调增加。如果要判断收敛情况可以这样来做一种收敛方法是 l(θ)不再变化还有一种就是变化幅度很小,即根据的值来决定。
总之EM算法类似于坐标上升法coordinate ascentE步固定 θ优化QM步固定Q优化 θ交替将极值推向最大。 三、算法实现 3.1关于EM聚类
经过上述分析及推导可以看到 EM 算法最直接的应用就是求参数估计。如果我们把潜在类别当做隐藏变量样本看做观察值就可以把聚类问题转化为参数估计问题。这也就是 EM 聚类的原理。
相比于 K-Means 算法EM 聚类更加灵活比如下面这两种情况K-Means 会得到下面的聚类结果。 因为 K-Means 是通过距离来区分样本之间的差别的且每个样本在计算的时候只能属于一个分类称之为是硬聚类算法。而 EM 聚类在求解的过程中实际上每个样本都有一定的概率和每个聚类相关叫做软聚类算法。 可以把 EM 算法理解成为是一个框架在这个框架中可以采用不同的模型来用 EM 进行求解。
常用的 EM 聚类有 GMM 高斯混合模型和 HMM 隐马尔科夫模型。GMM高斯混合模型聚类就是 EM 聚类的一种。比如上面这两个图可以采用 GMM 来进行聚类。 和 K-Means 一样我们事先知道聚类的个数但是不知道每个样本分别属于哪一类。通常我们可以假设样本是符合高斯分布的也就是正态分布。每个高斯分布都属于这个模型的组成部分component要分成 K 类就相当于是 K 个组成部分。这样我们可以先初始化每个组成部分的高斯分布的参数然后再看来每个样本是属于哪个组成部分。这也就是 E 步骤。 再通过得到的这些隐含变量结果反过来求每个组成部分高斯分布的参数即 M 步骤。反复 EM 步骤直到每个组成部分的高斯分布参数不变为止。 这样也就相当于将样本按照 GMM 模型进行了 EM 聚类。 3.2EM工具包的使用
在 Python 中有第三方的 EM 算法工具包。此次我采用的是 GMM 高斯混合模型在使用前需要引入工具包 from sklearn.mixture import GaussianMixture
创建完 GMM 聚类器之后我们就可以传入数据让它进行迭代拟合。 我们使用 fit 函数传入样本特征矩阵模型会自动生成聚类器然后使用 predictiongmm.predict(data) 来对数据进行聚类传入想进行聚类的数据可以得到聚类结果 prediction。 3.3 实例测试
尝试使用 EM 算法对王者荣耀数据进行聚类
在了解了 GMM 聚类工具之后我们尝试对王者荣耀的英雄数据进行聚类。
我们可以通过聚类算法把特征值相近的数据归为一类不同类之间的差异较大这样就可以对原始数据进行降维。通过分成几个组簇来研究每个组之间的特性。或者我们也可以把组簇的数量适当提升这样就可以找到可以互相替换的英雄比如你的对手选择了你擅长的英雄之后你可以选择另一个英雄作为备选。
1数据集描述
这里我们收集了 69 名英雄的 20 个特征属性这些属性分别是最大生命、生命成长、初始生命、最大法力、法力成长、初始法力、最高物攻、物攻成长、初始物攻、最大物防、物防成长、初始物防、最大每 5 秒回血、每 5 秒回血成长、初始每 5 秒回血、最大每 5 秒回蓝、每 5 秒回蓝成长、初始每 5 秒回蓝、最大攻速和攻击范围等。
数据集部分数据如下 2代码实现
现在我们需要对王者荣耀的英雄数据进行聚类我们先设定项目的执行流程
首先我们需要加载数据源
在准备阶段我们需要对数据进行探索包括采用数据可视化技术让我们对英雄属性以及这些属性之间的关系理解更加深刻然后对数据质量进行评估是否进行数据清洗最后进行特征选择方便后续的聚类算法
聚类阶段选择适合的聚类模型这里我们采用 GMM 高斯混合模型进行聚类并输出聚类结果对结果进行分析。
代码如下 # -*- coding: utf-8 -*-import pandas as pdimport csvimport matplotlib.pyplot as pltimport seaborn as snsfrom sklearn.mixture import GaussianMixturefrom sklearn.preprocessing import StandardScaler# 数据加载避免中文乱码问题data_ori pd.read_csv(heroes.csv, encoding gb18030)features [u最大生命,u生命成长,u初始生命,u最大法力, u法力成长,u初始法力,u最高物攻,u物攻成长,u初始物攻,u最大物防,u物防成长,u初始物防, u最大每 5 秒回血, u每 5 秒回血成长, u初始每 5 秒回血, u最大每 5 秒回蓝, u每 5 秒回蓝成长, u初始每 5 秒回蓝, u最大攻速, u攻击范围]data data_ori[features]# 对英雄属性之间的关系进行可视化分析# 设置 plt 正确显示中文plt.rcParams[font.sans-serif][SimHei] # 用来正常显示中文标签plt.rcParams[axes.unicode_minus]False # 用来正常显示负号# 用热力图呈现 features_mean 字段之间的相关性corr data[features].corr()plt.figure(figsize(14,14))# annotTrue 显示每个方格的数据sns.heatmap(corr, annotTrue)plt.show()# 相关性大的属性保留一个因此可以对属性进行降维features_remain [u最大生命, u初始生命, u最大法力, u最高物攻, u初始物攻, u最大物防, u初始物防, u最大每 5 秒回血, u最大每 5 秒回蓝, u初始每 5 秒回蓝, u最大攻速, u攻击范围]data data_ori[features_remain]data[u最大攻速] data[u最大攻速].apply(lambda x: float(x.strip(%))/100)data[u攻击范围]data[u攻击范围].map({远程:1,近战:0})# 采用 Z-Score 规范化数据保证每个特征维度的数据均值为 0方差为 1ss StandardScaler()data ss.fit_transform(data)# 构造 GMM 聚类gmm GaussianMixture(n_components30, covariance_typefull)gmm.fit(data)# 训练数据prediction gmm.predict(data)print(prediction)# 将分组结果输出到 CSV 文件中data_ori.insert(0, 分组, prediction)data_ori.to_csv(./hero_out.csv, indexFalse, sep,) 3结果可视化
①热力图呈现 features_mean 字段之间的相关性 ②输出的聚类结果文件 hero_out.csv 3关于代码及结果的分析
①关于引用包
首先我们会用 DataFrame 数据结构来保存读取的数据最后的聚类结果会写入到 CSV 文件中因此会用到 pandas 和 CSV 工具包。另外我们需要对数据进行可视化采用热力图展现属性之间的相关性这里会用到 matplotlib.pyplot 和 seaborn 工具包。在数据规范化中我们使用到了 Z-Score 规范化用到了 StandardScaler 类最后我们还会用到 sklearn 中的 GaussianMixture 类进行聚类。 ②数据可视化的探索
你能看到我们将 20 个英雄属性之间的关系用热力图呈现了出来中间的数字代表两个属性之间的关系系数最大值为 1代表完全正相关关系系数越大代表相关性越大。从图中你能看出来“最大生命”“生命成长”和“初始生命”这三个属性的相关性大我们只需要保留一个属性即可。同理我们也可以对其他相关性大的属性进行筛选保留一个。你在代码中可以看到我用 features_remain 数组保留了特征选择的属性这样就将原本的 20 个属性降维到了 13 个属性。
③关于数据规范化
我们能看到“最大攻速”这个属性值是百分数不适合做矩阵运算因此我们需要将百分数转化为小数。我们也看到“攻击范围”这个字段的取值为远程或者近战也不适合矩阵运算我们将取值做个映射用 1 代表远程0 代表近战。然后采用 Z-Score 规范化对特征矩阵进行规范化。 ④在聚类阶段
我们采用了 GMM 高斯混合模型并将结果输出到 CSV 文件中这里我将输出的结果截取了一段设置聚类个数为 30 第一列代表的是分组簇我们能看到张飞、程咬金分到了一组牛魔、白起是一组老夫子自己是一组达摩、典韦是一组。聚类的特点是相同类别之间的属性值相近不同类别的属性值差异大。因此如果你擅长用典韦这个英雄不防试试达摩这个英雄。同样你也可以在张飞和程咬金中进行切换。这样就算你的英雄被别人选中了你依然可以有备选的英雄可以使用。 四、算法讨论 4.1EM算法的优缺点
EM算法作为一种迭代优化算法在实际应用中具有一些优点和缺点。
1优点
①针对含有隐变量的概率模型EM算法是一种有效的参数估计方法。它可以通过迭代的方式逐步优化模型参数使得模型更好地拟合观测数据。
②EM算法在处理复杂的概率模型时表现出较强的灵活性能够应对各种类型的隐变量模型例如高斯混合模型、隐马尔可夫模型等。
③由于EM算法利用期望步骤E步骤和最大化步骤M步骤交替进行优化因此可以收敛到局部最优解尤其在凸优化的情况下通常能够获得较好的结果。
2缺点 ①对初始值敏感EM算法对初始参数值敏感不同的初始值可能导致不同的最终结果因此需要谨慎选择初始值来保证算法的稳定性和收敛性。
②可能收敛到局部最优解由于EM算法是一种局部优化方法存在收敛到局部最优解而非全局最优解的风险。这意味着在参数空间中可能会陷入局部极小值点而无法发现全局最优解。
③计算复杂度高在每次迭代中EM算法需要计算数据的后验概率并更新模型参数这导致了在数据量较大时计算复杂度较高导致算法效率较低。 4.2EM算法的应用
EM算法在实际中有许多广泛的应用特别是在概率模型的参数估计、聚类分析和隐变量模型等领域。以下是一些常见的EM算法应用
1高斯混合模型Gaussian Mixture Model, GMMEM算法常被用于对GMM的参数进行估计。GMM是一种常用的概率模型用于对数据进行建模尤其适用于假设数据是由多个高斯分布混合而成的情况。 2隐马尔可夫模型Hidden Markov Model, HMMHMM是一种常见的隐变量模型用于建模时序数据。EM算法可以用于对HMM的参数进行估计包括状态转移矩阵和观测概率矩阵。 3聚类分析EM算法也被广泛应用于聚类分析中特别是在基于概率模型的聚类方法中如混合聚类mixture clustering和模型自适应聚类model-based clustering。 4数据挖掘在数据挖掘领域EM算法被用来处理缺失数据的填补和模式识别。它可以通过对缺失数据进行建模估计缺失值从而帮助进行数据清洗和分析。 5图像处理在图像处理中EM算法可以被用来进行图像分割、目标识别和特征提取等任务尤其在需要建立概率模型对图像进行分析时发挥作用。 总的来说EM算法在概率模型估计、参数学习和隐变量模型等领域有着广泛的应用它为处理具有隐变量的概率模型提供了有效的数值求解方法为各种复杂数据分析和模式识别问题提供了重要的工具。
4.3对于EM算法框架如何选择具体的算法
在选择适用于EM算法框架的具体算法时需要考虑数据的特性、模型的假设以及算法的实现和效率等因素。以下是一些指导原则来选择适合的算法 1数据类型如果你的数据具有连续特征并且符合高斯分布的假设那么高斯混合模型GMM可能是一个合适的选择。而如果你的数据是时序数据并且受到隐含状态影响比如语音信号或生物学序列那么隐马尔可夫模型HMM可能更适合。 2模型假设GMM假设数据由多个高斯分布混合而成适合对具有明显聚类结构的数据进行建模HMM假设数据由一个隐含的马尔可夫链产生适合对时序数据进行建模。根据你的数据是否符合这些假设可以选择相应的模型。 3算法实现和效率针对具体的算法实现和计算效率需要考虑在实际场景中的使用情况。在选择算法时可以考虑算法的收敛速度、对初始值敏感程度、并行化能力等因素以及算法在大规模数据集上的表现。 4先前研究和应用在一些特定领域中可能已经有关于使用GMM或HMM的成功案例和成熟的应用。在选择算法时可以参考相关文献和先前研究了解在特定领域中哪种算法更为常用并根据先前的经验进行选择。 五、实验总结 在本次机器学习实验中探究的是期望最大化EM算法。实验中我首先查找了EM的算法背景最早是用来进行参数估计的一种算法。然后由一个两个碟子分菜的例子引入EM算法碟子分菜中给每个碟子初始化菜量和观察预期并调整的两个步骤实际上就是期望步骤Expectation和最大化步骤Maximization。 然后分析了EM算法假设及算法原理即四个核心部分E步骤、M步骤、迭代更新及收敛性。 在算法推导部分我实现了以下两个关键流程 第一步初始化分布参数 θ
第二步重复E-step 和 M-step直到收敛
并在最后得到了EM算法。
为了复现EM算法本次数据集使用的是王者荣耀中一些英雄的各方面数据汇总。并采用 GMM 高斯混合模型进行聚类。得到了呈现各属性间关系的热力图及输出的聚类结果。 在实验的最后讨论了EM算法的优缺点及应用并思考了在EM算法大框架下如何选择一个合适的算法如GMM和HMM。 总之通过此次实验对EM算法有了更深的认识和理解。EM算法通过交替地使用E步骤和M步骤在存在隐含变量的概率模型中进行参数估计是一种常用的机器学习算法。 2024-1-21
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/84202.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!