diff --git a/new/gan-proj/7.md b/new/gan-proj/7.md index 4b2a34cf1a8b2c363353f6dec09d28e2a8c5c59b..4031d537e8003fed754a23000668c0778e22146a 100644 --- a/new/gan-proj/7.md +++ b/new/gan-proj/7.md @@ -64,7 +64,7 @@ CycleGAN 总体上由两种架构组成:生成器和判别器。 生成器架 -生成器网络是自动编码器类型的网络。 它以图像作为输入并输出另一个图像。 它由两部分组成:编码器和解码器。 编码器包含具有下采样功能的卷积层,并将`128x128x3`形状的输入转换为内部表示。 解码器包含两个上采样块和最后一个卷积层,该层将内部表示形式转换为`128x128x3`形状的输出。 +生成器网络是自编码器类型的网络。 它以图像作为输入并输出另一个图像。 它由两部分组成:编码器和解码器。 编码器包含具有下采样功能的卷积层,并将`128x128x3`形状的输入转换为内部表示。 解码器包含两个上采样块和最后一个卷积层,该层将内部表示形式转换为`128x128x3`形状的输出。 生成器网络包含以下块: diff --git a/new/gan-proj/8.md b/new/gan-proj/8.md index 3770d26dfdef27bbc14566bf9dad24b48f51ae1b..5bcb784b6ad60a844de0451c5b8f01e043cfe880 100644 --- a/new/gan-proj/8.md +++ b/new/gan-proj/8.md @@ -45,7 +45,7 @@ Pix2pix 是条件 GAN 的变体。 我们已经在第 3 章,“使用条件 GA -正如我们在上一节中提到的,生成器网络在很大程度上受到 U-Net 架构的启发。 U-Net 的架构与自动编码器网络的架构几乎相同。 它们之间的主要区别在于,U-Net 网络在编码器中的各层之间具有跳跃连接,并且生成器网络和自动编码器的解码器部分不具有跳跃连接。 U-Net 网络由两个网络组成:编码器网络和解码器网络。 下图从基本层面说明了 U-Net 的架构: +正如我们在上一节中提到的,生成器网络在很大程度上受到 U-Net 架构的启发。 U-Net 的架构与自编码器网络的架构几乎相同。 它们之间的主要区别在于,U-Net 网络在编码器中的各层之间具有跳跃连接,并且生成器网络和自编码器的解码器部分不具有跳跃连接。 U-Net 网络由两个网络组成:编码器网络和解码器网络。 下图从基本层面说明了 U-Net 的架构: ![](img/ba22d993-cf32-42a1-86b9-94c2b37311e8.png) diff --git a/new/handson-unsup-learn-py/00.md b/new/handson-unsup-learn-py/00.md index 4dceac99a02fb8c3b596bcc2ddb6f22f252de6a5..160cc145589722a4340c540039a2b7b094ead7a0 100644 --- a/new/handson-unsup-learn-py/00.md +++ b/new/handson-unsup-learn-py/00.md @@ -30,7 +30,7 @@ 第 3 章,“高级聚类”讨论了一些更复杂的算法。 第 2 章,“聚类基础知识”中分析的许多问题都使用更强大,更灵活的方法进行了重新评估,只要基本算法的性能不符合要求,就可以轻松采用这些方法。 。 -第 4 章,“实用的分层聚类”完全致力于可以根据特定标准计算完整聚类层次的一系列算法。 分析了最常见的策略,以及可以提高方法有效性的特定性能指标和算法变体。 +第 4 章,“实用的层次聚类”完全致力于可以根据特定标准计算完整聚类层次的一系列算法。 分析了最常见的策略,以及可以提高方法有效性的特定性能指标和算法变体。 第 5 章,“软聚类和高斯混合模型”着重介绍了几种著名的软聚类算法,特别着重于高斯混合,这允许在相当合理的假设下定义生成式模型。 diff --git a/new/handson-unsup-learn-py/01.md b/new/handson-unsup-learn-py/01.md index a9c48d9e1013562e80e0889f039a805bf592f0aa..84b70d65362d8f65f7f21fb49f326e531353df5e 100644 --- a/new/handson-unsup-learn-py/01.md +++ b/new/handson-unsup-learn-py/01.md @@ -74,7 +74,7 @@ -# 诊断分析 +# 诊断性分析 @@ -92,7 +92,7 @@ -# 预测分析 +# 预测性分析 @@ -132,7 +132,7 @@ -# 规范分析 +# 规范性分析 @@ -218,7 +218,7 @@ -# 有监督的你好世界! +# 监督的你好世界 @@ -336,7 +336,7 @@ x(t) = 1.169t + 0.628 -# 无监督的世界! +# 无监督的你好世界 diff --git a/new/handson-unsup-learn-py/02.md b/new/handson-unsup-learn-py/02.md index dc62e903c7c289214ded92bdd16404969ee2c86f..ee78ef5f84605487917a840d4758b1847a52e7ae 100644 --- a/new/handson-unsup-learn-py/02.md +++ b/new/handson-unsup-learn-py/02.md @@ -41,7 +41,7 @@ -# 集群介绍 +# 聚类介绍 @@ -79,7 +79,7 @@ -# 距离功能 +# 距离函数 @@ -515,7 +515,7 @@ Completeness: 0.5168089972809706 -# 同质性评分 +# 同质性得分 @@ -573,7 +573,7 @@ V-Score: 0.46479332792160793 -# 调整后的相互信息(AMI)得分 +# 调整后的互信息(AMI)得分 diff --git a/new/handson-unsup-learn-py/03.md b/new/handson-unsup-learn-py/03.md index 0a41372e0b282cc1b4fd01d57284013ad62a2456..c760ae74879e451f3ebd6744ff4ab9ce19bbeae2 100644 --- a/new/handson-unsup-learn-py/03.md +++ b/new/handson-unsup-learn-py/03.md @@ -1,6 +1,6 @@ -# 进阶丛集 +# 高级聚类 @@ -252,7 +252,7 @@ MeanShift 在不同带宽下的聚类结果 -# 卡林斯基-哈拉巴兹分数 +# Calinski-Harabasz 分数 @@ -276,7 +276,7 @@ MeanShift 在不同带宽下的聚类结果 -# 使用 DBSCAN 分析工作缺勤数据集 +# 使用 DBSCAN 分析旷工数据集 @@ -440,7 +440,7 @@ print(sdff[sdff.columns[0:10]].describe()) -# 群集不稳定性作为性能指标 +# 作为性能指标的群集不稳定性 @@ -646,7 +646,7 @@ Adjusted Rand score K-Medoids: 0.4761670824763849 -# 桦木 +# CF 树 @@ -666,7 +666,7 @@ Adjusted Rand score K-Medoids: 0.4761670824763849 ![](img/3a24c4e7-7463-4f9f-a215-c21bf165d098.png) -但是,如果没有控制权,则树很容易变得不平衡,从而导致性能损失。 因此,该算法执行一个附加步骤。 一旦确定了 CF,就计算更新后的半径`r[j]`,以及是否`r[j] > T`并且 CF 的数量大于分支因子,分配新的块并且原始的 CF 保持不变。 由于这个新块几乎完全是空的(`x[i]`除外),BIRCH 会执行一个附加步骤来检查所有子集群之间的差异(此概念在[第 4 章中会更清楚](https://cdp.packtpub.com/hands_on_unsupervised_learning_with_python/wp-admin/post.php?post=26&action=edit#post_27) , “实用的分层聚类”;但是,读者可以考虑属于两个不同子类的点之间的平均距离)。 最不相似的一对分为两部分,其中之一移到新块中。 这样的选择确保了子群集的高度紧凑性,并加快了最终步骤。 实际上,实际聚类阶段中涉及的算法需要合并子聚类,直到总数减少到所需值为止。 因此,如果先前已将总不相似性最小化,则更容易执行此操作,因为*段*可以立即识别为连续并合并。 在本章中将不详细讨论此阶段,但不难想象。 将所有终端 CF 依次合并到较大的块中,直到确定单个群集为止(即使当数量与所需群集数目匹配时也可以停止该过程)。 因此,与小批量 K 均值相反,此方法可以轻松管理大量簇`n[c]`,而当`n[c]`很小时效果不佳。 实际上,正如我们在示例中将要看到的那样,其准确性通常比使用小批量 K 均值所能达到的精度低,并且其最佳用法要求准确选择分支因子和阈值。 由于此算法的主要目的是在在线情况下工作,因此`B`和`T`在处理了某些批量后可能会失效(而小批量 K 均值通常可以在几次迭代后纠正群集),产生次优的结果。 因此,BIRCH 的主要用例是需要非常细粒度细分的在线过程,而在所有其他情况下,通常最好选择小批量 K 均值作为初始选项。 +但是,如果没有控制权,则树很容易变得不平衡,从而导致性能损失。 因此,该算法执行一个附加步骤。 一旦确定了 CF,就计算更新后的半径`r[j]`,以及是否`r[j] > T`并且 CF 的数量大于分支因子,分配新的块并且原始的 CF 保持不变。 由于这个新块几乎完全是空的(`x[i]`除外),BIRCH 会执行一个附加步骤来检查所有子集群之间的差异(此概念在[第 4 章中会更清楚](https://cdp.packtpub.com/hands_on_unsupervised_learning_with_python/wp-admin/post.php?post=26&action=edit#post_27) , “实用的层次聚类”;但是,读者可以考虑属于两个不同子类的点之间的平均距离)。 最不相似的一对分为两部分,其中之一移到新块中。 这样的选择确保了子群集的高度紧凑性,并加快了最终步骤。 实际上,实际聚类阶段中涉及的算法需要合并子聚类,直到总数减少到所需值为止。 因此,如果先前已将总不相似性最小化,则更容易执行此操作,因为*段*可以立即识别为连续并合并。 在本章中将不详细讨论此阶段,但不难想象。 将所有终端 CF 依次合并到较大的块中,直到确定单个群集为止(即使当数量与所需群集数目匹配时也可以停止该过程)。 因此,与小批量 K 均值相反,此方法可以轻松管理大量簇`n[c]`,而当`n[c]`很小时效果不佳。 实际上,正如我们在示例中将要看到的那样,其准确性通常比使用小批量 K 均值所能达到的精度低,并且其最佳用法要求准确选择分支因子和阈值。 由于此算法的主要目的是在在线情况下工作,因此`B`和`T`在处理了某些批量后可能会失效(而小批量 K 均值通常可以在几次迭代后纠正群集),产生次优的结果。 因此,BIRCH 的主要用例是需要非常细粒度细分的在线过程,而在所有其他情况下,通常最好选择小批量 K 均值作为初始选项。 diff --git a/new/handson-unsup-learn-py/04.md b/new/handson-unsup-learn-py/04.md index 1ea28947243481e3f067c024281c4327c8126aeb..e07d32859a18328015f5346aeab5a86fbe05ba9a 100644 --- a/new/handson-unsup-learn-py/04.md +++ b/new/handson-unsup-learn-py/04.md @@ -1,6 +1,6 @@ -# 行动中的分层聚类 +# 实用的层次聚类 @@ -8,7 +8,7 @@ 特别是,我们将讨论以下主题: -* 分层聚类策略(分裂式和聚集式) +* 层次聚类策略(分裂式和聚集式) * 距离度量和链接方法 * 树状图及其解释 * 聚集聚类 @@ -42,7 +42,7 @@ -# 集群层次结构 +# 层次聚类 @@ -66,7 +66,7 @@ -# 聚集聚类 +# 凝聚聚类 @@ -130,7 +130,7 @@ -# 平均联系 +# 平均链接 @@ -144,13 +144,13 @@ 平均链接的示例。 选择`C[1]`和`C[2]`进行合并。 突出显示的点是平均值。 -平均链接在生物信息学应用程序(定义分层聚类的主要环境)中特别有用。 对其属性的数学解释是不平凡的,我鼓励您查看原始论文(《一种评估系统关系的统计方法》),以获取更多详细信息。 +平均链接在生物信息学应用程序(定义层次聚类的主要环境)中特别有用。 对其属性的数学解释是不平凡的,我鼓励您查看原始论文(《一种评估系统关系的统计方法》),以获取更多详细信息。 -# 病房的联系 +# Ward 链接 @@ -234,7 +234,7 @@ plt.show() 易于理解,聚集从选择最相似的簇/样本开始,然后通过添加*最近邻*,直到到达树的根为止。 在我们的情况下,在相异度等于 2.0 的情况下,已检测到三个定义明确的簇。 左一个也保留在下一个剪切中,而右两个(显然更靠近)被选择合并以生成单个簇。 该过程本身很简单,不需要特别的解释。 但是,有两个重要的考虑因素。 -第一个是树状图结构本身固有的。 与其他方法相反,分层聚类允许观察整个聚类树,当需要通过增加不相似度来显示流程如何演变时,此功能非常有用。 例如,产品推荐器应用程序无法提供有关代表用户的所需群集数量的任何信息,但是执行管理层可能会对理解合并过程的结构和演变方式感兴趣。 +第一个是树状图结构本身固有的。 与其他方法相反,层次聚类允许观察整个聚类树,当需要通过增加不相似度来显示流程如何演变时,此功能非常有用。 例如,产品推荐器应用程序无法提供有关代表用户的所需群集数量的任何信息,但是执行管理层可能会对理解合并过程的结构和演变方式感兴趣。 实际上,观察群集是如何合并的可以深入了解底层的几何,还可以发现哪些群集可能被视为较大群集的一部分。 在我们的示例中,在级别 0.5 处,我们有一个小的簇{ 1 , 3 }。 问题是“可以通过增加不相似性将哪些样本添加到该群集中?” 可以立即用{ 2 }回答。 当然,在这种情况下,这是一个微不足道的问题,可以通过查看数据图来解决,但是对于高维数据集,如果没有树状图的支持,它可能会变得更加困难。 @@ -260,7 +260,7 @@ plt.show() -# Cophenetic 相关性作为性能指标 +# 作为表现指标的 Cophenetic 相关性 @@ -323,7 +323,7 @@ CPC Average linkage: 0.794 -# 水厂数据集上的聚集聚类 +# 水厂数据集上的凝聚聚类 @@ -441,7 +441,7 @@ pdff = pd.concat([dff, df_pred], axis=1) 水处理厂数据集的聚类结果(八个群集) -不出所料,群集是不均匀的,但是它们与几何形状非常一致。 此外,孤立的簇(例如,在`x ∈ (-40. -20)`和`y > 60`的区域中)非常小,很可能包含真实的异常值,其行为与大多数其他样本有很大不同。 我们将不分析语义,因为问题非常具体。 但是,可以合理地认为`x ∈ (-40, 40)`和`y ∈ (-40, -10)`,代表合适的基线。 相反,其他大块(在该簇的极端)对应于具有特定特性或行为的工厂,这些工厂具有足够的扩散性,可以视为标准的替代实践。 当然,如开始时所述,这是不可知的分析,应该有助于理解如何使用分层聚类。 +不出所料,群集是不均匀的,但是它们与几何形状非常一致。 此外,孤立的簇(例如,在`x ∈ (-40. -20)`和`y > 60`的区域中)非常小,很可能包含真实的异常值,其行为与大多数其他样本有很大不同。 我们将不分析语义,因为问题非常具体。 但是,可以合理地认为`x ∈ (-40, 40)`和`y ∈ (-40, -10)`,代表合适的基线。 相反,其他大块(在该簇的极端)对应于具有特定特性或行为的工厂,这些工厂具有足够的扩散性,可以视为标准的替代实践。 当然,如开始时所述,这是不可知的分析,应该有助于理解如何使用层次聚类。 作为最后一步,我们希望以大约 35,000(对应于两个聚类)的相似度水平切割树状图。 结果显示在以下屏幕截图中: @@ -457,7 +457,7 @@ pdff = pd.concat([dff, df_pred], axis=1) -# 连接限制 +# 连通性约束 @@ -560,7 +560,7 @@ Y_pred = ag.fit_predict(X) -在本章中,我们介绍了分层聚类方法,重点介绍了可以采用的不同策略(分裂策略和聚集策略)。 我们还讨论了用于发现哪些群集可以合并或拆分(链接)的方法。 特别地,给定距离度量,我们分析了四种链接方法的行为:单一,完整,平均和沃德方法。 +在本章中,我们介绍了层次聚类方法,重点介绍了可以采用的不同策略(分裂策略和聚集策略)。 我们还讨论了用于发现哪些群集可以合并或拆分(链接)的方法。 特别地,给定距离度量,我们分析了四种链接方法的行为:单一,完整,平均和沃德方法。 我们已经展示了如何构建树状图以及如何分析树状图,以便使用不同的链接方法来理解整个分层过程。 引入了一种称为共情相关的特定性能度量,以在不了解基本事实的情况下评估分层算法的性能。 diff --git a/new/handson-unsup-learn-py/05.md b/new/handson-unsup-learn-py/05.md index 01d8307f1c09d1d294b02ba61e6ad004a9ef3e60..5c9597b73aba619aba7bf0961dc061f64e4d307d 100644 --- a/new/handson-unsup-learn-py/05.md +++ b/new/handson-unsup-learn-py/05.md @@ -40,7 +40,7 @@ -# 软集群 +# 软聚类 @@ -64,11 +64,11 @@ -# 模糊 c 均值 +# 模糊 C 均值 -我们将提出的第一个算法是基于软分配的 K 均值的变体。 名称 **Fuzzy c-means** 源自模糊集的概念,这是经典二元集的扩展(即,在这种情况下,样本可以属于单个簇),基于代表整个集合不同区域的不同子集的叠加。 例如,一个基于某些用户年龄的集合可以将度`young`,`adult`和`senior`与三个不同(且部分重叠)的年龄范围相关联:18-35、28-60 和`> 50`。例如,一个 30 岁的用户在不同程度上既是`young`又是`adult`(并且实际上是边界用户,考虑到边界)。 有关这些类型的集合以及所有相关运算的更多详细信息,我建议这本书《概念和模糊逻辑》。我们可以想象,数据集`X`包含`m`个样本,被划分为`k`个重叠的簇,因此每个样本始终以隶属度`w[ij]`与每个簇关联(介于 0 和 1 之间的值)。 如果`w[ij] = 0`,则表示`x[i]`完全在簇`C[j]`之外,相反,`w[ij] = 1`表示对群集`C[j]`的硬分配。 所有中间值代表部分成员资格。 当然,出于显而易见的原因,必须将样本的所有隶属度的总和标准化为 1(如概率分布)。 这样,样本始终属于所有聚类的并集,并且将聚类分为两个或多个子聚类始终会在成员资格方面产生一致的结果。 +我们将提出的第一个算法是基于软分配的 K 均值的变体。 名称**模糊 C 均值**源自模糊集的概念,这是经典二元集的扩展(即,在这种情况下,样本可以属于单个簇),基于代表整个集合不同区域的不同子集的叠加。 例如,一个基于某些用户年龄的集合可以将度`young`,`adult`和`senior`与三个不同(且部分重叠)的年龄范围相关联:18-35、28-60 和`> 50`。例如,一个 30 岁的用户在不同程度上既是`young`又是`adult`(并且实际上是边界用户,考虑到边界)。 有关这些类型的集合以及所有相关运算的更多详细信息,我建议这本书《概念和模糊逻辑》。我们可以想象,数据集`X`包含`m`个样本,被划分为`k`个重叠的簇,因此每个样本始终以隶属度`w[ij]`与每个簇关联(介于 0 和 1 之间的值)。 如果`w[ij] = 0`,则表示`x[i]`完全在簇`C[j]`之外,相反,`w[ij] = 1`表示对群集`C[j]`的硬分配。 所有中间值代表部分成员资格。 当然,出于显而易见的原因,必须将样本的所有隶属度的总和标准化为 1(如概率分布)。 这样,样本始终属于所有聚类的并集,并且将聚类分为两个或多个子聚类始终会在成员资格方面产生一致的结果。 该算法基于广义惯量`S[f]`的优化: @@ -415,7 +415,7 @@ P([1, 0]=G1) = 0.068 and P([1, 0]=G2) = 0.932 -# 评估高斯混合 AIC 和 BIC 的性能 +# 使用 AIC 和 BIC 评估高斯混合的表现 @@ -573,7 +573,7 @@ Weights: [3.07496936e-01 2.02264778e-01 2.94642240e-01 1.95417680e-01 1.78366038 -# 高斯混合生成 +# 生成式高斯混合 diff --git a/new/handson-unsup-learn-py/06.md b/new/handson-unsup-learn-py/06.md index b308e4927e6e551e34d911d3cc1a7fc1ea78f79f..b9f180e5813eea0f27dc390648724db171731366 100644 --- a/new/handson-unsup-learn-py/06.md +++ b/new/handson-unsup-learn-py/06.md @@ -274,7 +274,7 @@ Epanechnikov 核 -# 统一(或 Tophat)内核 +# 均匀(或 Tophat)内核 @@ -455,7 +455,7 @@ p(Age = 90) = 0.0000000 (Anomaly) -# 使用 KDD Cup 99 数据集进行异常检测 +# 将 KDD Cup 99 数据集用于异常检测 @@ -656,11 +656,11 @@ p = 0.00000 - High risk -# 一类支持向量机 +# 单类支持向量机 -一类**支持向量机**(**SVM**)的概念已由 SchölkopfB,Platt JC,Shawe-Taylor JC,Smola AJ 和 Williamson RC 提出(《估计高维分布的支持》),作为一种将新颖性分类为从真实数据生成过程中抽取的样本或异常值的方法。 让我们从我们要实现的目标开始:找到一个无监督模型,在给定样本`x[i]`的情况下,可以产生二进制输出`y[i]`(通常,SVM 的结果是双极性的,分别为 -1 和 +1),因此,如果`x[i]`属于内部,`y[i] = 1`,如果`x[i]`是一个异常值,则`y [i] = -1`,在上述论文中,假设对构成训练集的大多数内线而言,结果是`1`。 乍一看,这似乎是一个经典的监督问题。 但是,这不是因为不需要标签数据集。 实际上,给定一个包含`m`样本的数据集`X`,`x[i] ∈ R^n`,模型将使用一个固定的类进行训练,目的是找到一个分离的超平面,该平面使`X`与原点之间的距离最大化。 首先,让我们考虑一个简单的线性情况,如下图所示: +单类**支持向量机**(**SVM**)的概念已由 SchölkopfB,Platt JC,Shawe-Taylor JC,Smola AJ 和 Williamson RC 提出(《估计高维分布的支持》),作为一种将新颖性分类为从真实数据生成过程中抽取的样本或异常值的方法。 让我们从我们要实现的目标开始:找到一个无监督模型,在给定样本`x[i]`的情况下,可以产生二进制输出`y[i]`(通常,SVM 的结果是双极性的,分别为 -1 和 +1),因此,如果`x[i]`属于内部,`y[i] = 1`,如果`x[i]`是一个异常值,则`y [i] = -1`,在上述论文中,假设对构成训练集的大多数内线而言,结果是`1`。 乍一看,这似乎是一个经典的监督问题。 但是,这不是因为不需要标签数据集。 实际上,给定一个包含`m`样本的数据集`X`,`x[i] ∈ R^n`,模型将使用一个固定的类进行训练,目的是找到一个分离的超平面,该平面使`X`与原点之间的距离最大化。 首先,让我们考虑一个简单的线性情况,如下图所示: ![](img/0b1fe0d8-9c63-476f-85b5-359a89c61f10.png) diff --git a/new/handson-unsup-learn-py/07.md b/new/handson-unsup-learn-py/07.md index 179e65a829cc3e1e0cab25313bd349b9ea82b3ba..c87836e65475b322c74f9d867d70a7715b3c2fc7 100644 --- a/new/handson-unsup-learn-py/07.md +++ b/new/handson-unsup-learn-py/07.md @@ -10,7 +10,7 @@ * **主成分分析**(**PCA**) * **奇异值分解**(**SVD**)和增白 -* 内核 PCA +* 核 PCA * 稀疏的 PCA 和字典学习 * 因子分析 * **独立成分分析**(**ICA**) @@ -122,7 +122,7 @@ -# 美白 +# 白化 @@ -277,7 +277,7 @@ print(np.sum(pca.explained_variance_ratio_)) -# 内核 PCA +# 核 PCA @@ -319,7 +319,7 @@ print(np.sum(pca.explained_variance_ratio_)) ![](img/f1b5b271-2c9d-46d2-99c5-e00687a24f4c.png) -对于非常大的数据集,该过程仍然相当昂贵(但是可以预先计算并存储内核值,以避免浪费额外的时间),但是它比标准投影更有效。 此外,其具有允许在可能进行线性辨别的空间中提取主要成分的优点。 现在,让我们将 RBF 内核 PCA 应用于上一个屏幕快照中显示的半月数据集。 `gamma` 参数等于`1 /σ^2`。 在这种特殊情况下,主要问题是存在双重重叠。 考虑到原始标准偏差约为 1.0(即`σ^2 = 1`),我们至少需要三个标准偏差才能适当区分他们; 因此,我们将设置`γ = 10`: +对于非常大的数据集,该过程仍然相当昂贵(但是可以预先计算并存储内核值,以避免浪费额外的时间),但是它比标准投影更有效。 此外,其具有允许在可能进行线性辨别的空间中提取主要成分的优点。 现在,让我们将 RBF 核 PCA 应用于上一个屏幕快照中显示的半月数据集。 `gamma` 参数等于`1 /σ^2`。 在这种特殊情况下,主要问题是存在双重重叠。 考虑到原始标准偏差约为 1.0(即`σ^2 = 1`),我们至少需要三个标准偏差才能适当区分他们; 因此,我们将设置`γ = 10`: ```py from sklearn.datasets import make_moons @@ -799,7 +799,7 @@ print(Xl[200]) 4. `Kurt(X) = 5`的分布适用于 ICA。 它是否正确? 5. 包含样本`(1, 2)`和`(0, -3)`的数据集`X`的 NNMF 是多少? 6. 一个 10 个文档的语料库与一个带有 10 个词的词典相关联。 我们知道每个文档的固定长度为 30 个字。 字典是否过于完整? -7. 内核 PCA 与二次内核一起使用。 如果原始尺寸为 2,则执行 PCA 的新空间的尺寸是多少? +7. 核 PCA 与二次内核一起使用。 如果原始尺寸为 2,则执行 PCA 的新空间的尺寸是多少? diff --git a/new/handson-unsup-learn-py/08.md b/new/handson-unsup-learn-py/08.md index 0bed9a0d1e1b9a0aec9800248c25eb7a7f7c9992..006d841b0275a9edc82be0e19a396e332f854205 100644 --- a/new/handson-unsup-learn-py/08.md +++ b/new/handson-unsup-learn-py/08.md @@ -8,10 +8,10 @@ 特别是,我们将介绍以下内容: -* 汽车编码器 +* 自编码器 * 去噪自编码器 -* 稀疏的汽车编码器 -* 变体自编码器 +* 稀疏的自编码器 +* 变分自编码器 * PCA 神经网络: * 桑格的网络 * Rubner-Attic 的网络 @@ -44,7 +44,7 @@ -# 汽车编码器 +# 自编码器 @@ -391,7 +391,7 @@ for e in range(nb_epochs): -# 稀疏的汽车编码器 +# 稀疏自编码器 @@ -442,7 +442,7 @@ Epoch 600) Average loss per sample: 0.8058895015716553 (Code mean: 0.02853894419 -# 变体自编码器 +# 变分自编码器 @@ -488,7 +488,7 @@ ELBO 右侧的第二项是`log p(x|z; θ)`的期望值。 不难看出,这样 -# 深卷积变分自编码器的示例 +# 深度卷积变分自编码器的示例 @@ -675,25 +675,25 @@ for e in range(nb_epochs): -在本节中,我们将分析两个神经模型(Sanger 和 Rubner-Tavan 网络),它们可以执行**主成分分析**(**PCA**),而无需对协方差矩阵进行特征分解或执行截断的 SVD。 它们都是基于**赫布学习**的概念(有关更多详细信息,请参阅《理论神经科学》),这是有关非常简单的神经元动力学的第一批数学理论之一。 然而,这些概念具有非常有趣的含义,尤其是在组件分析领域。 为了更好地了解网络的动力学,提供神经元基本模型的快速概述将很有帮助。 让我们考虑一个输入`x ∈ R^n`和权重向量`w ∈ ℜ^n`。 神经元执行点积(无偏差),以产生标量输出`y`: +在本节中,我们将分析两个神经模型(Sanger 和 Rubner-Tavan 网络),它们可以执行**主成分分析**(**PCA**),而无需对协方差矩阵进行特征分解或执行截断的 SVD。 它们都是基于 **Hebbian 学习**的概念(有关更多详细信息,请参阅《理论神经科学》),这是有关非常简单的神经元动力学的第一批数学理论之一。 然而,这些概念具有非常有趣的含义,尤其是在组件分析领域。 为了更好地了解网络的动力学,提供神经元基本模型的快速概述将很有帮助。 让我们考虑一个输入`x ∈ R^n`和权重向量`w ∈ ℜ^n`。 神经元执行点积(无偏差),以产生标量输出`y`: ![](img/82b33ae4-637c-4004-b89b-c6e72863705d.png) -现在,如果我们想象两个神经元,第一个被称为突触前单元,另一个被称为突触后单元。 **赫布规则**指出,当突触前​​和突触后单元都输出具有相同符号(尤其是正值)的值时,突触强度必须增加,而当符号不同时,突触强度必须减弱。 这种概念的数学表达式如下: +现在,如果我们想象两个神经元,第一个被称为突触前单元,另一个被称为突触后单元。 **Hebbian 规则**指出,当突触前​​和突触后单元都输出具有相同符号(尤其是正值)的值时,突触强度必须增加,而当符号不同时,突触强度必须减弱。 这种概念的数学表达式如下: ![](img/d422484d-1407-4fbe-8258-bb66809bb7be.png) -常数`η`是学习率。 完整的分析超出了本书的范围,但是有可能证明,一个 Hebbian 神经元(经过一些非常简单的修改,需要控制`w`的生长)可以改变突触的权重,因此在足够多的迭代之后,它沿着数据集的第一个主成分`X`对齐。 从这个结果(我们不会证明)开始,我们可以介绍 Sanger 的网络。 +常数`η`是学习率。 完整的分析超出了本书的范围,但是有可能证明,一个 Hebbian 神经元(经过一些非常简单的修改,需要控制`w`的生长)可以改变突触的权重,因此在足够多的迭代之后,它沿着数据集的第一个主成分`X`对齐。 从这个结果(我们不会证明)开始,我们可以介绍 Sanger 网络。 -# 桑格的网络 +# Sanger 网络 -Sanger 的网络模型由 Sanger 提出(在《单层线性前馈神经网络中的最佳无监督学习》),以便提取第一个数据集的`X`的`k`个主成分,以在线过程降序排列(相反,标准 PCA 是需要整个数据集的批量)。 即使有基于特定版本 SVD 的增量算法,这些神经模型的主要优点是它们处理单个样本的固有能力而不会损失任何性能。 在显示网络结构之前,有必要对 Hebb 规则进行修改,称为 **Oja 规则**: +Sanger 网络模型由 Sanger 提出(在《单层线性前馈神经网络中的最佳无监督学习》),以便提取第一个数据集的`X`的`k`个主成分,以在线过程降序排列(相反,标准 PCA 是需要整个数据集的批量)。 即使有基于特定版本 SVD 的增量算法,这些神经模型的主要优点是它们处理单个样本的固有能力而不会损失任何性能。 在显示网络结构之前,有必要对 Hebb 规则进行修改,称为 **Oja 规则**: ![](img/eb954467-be52-42bb-a06d-e3d8cd62dd8c.png) @@ -701,7 +701,7 @@ Sanger 的网络模型由 Sanger 提出(在《单层线性前馈神经网络 ![](img/09e7fdb7-16a9-4ec9-87ba-717623f9c860.png) -Sanger 的网络基于 Oja 规则的修改版本,该规则定义为**广义赫布学习**(**GHL**)。 假设我们有一个数据集`X`,包含`m`个向量,`x[i] ∈ R^n`。 下图显示了网络的结构: +Sanger 网络基于 Oja 规则的修改版本,该规则定义为**广义 Hebbian 学习**(**GHL**)。 假设我们有一个数据集`X`,包含`m`个向量,`x[i] ∈ R^n`。 下图显示了网络的结构: ![](img/f212e875-6028-405a-a901-657d01e39d7e.png) @@ -723,7 +723,7 @@ Sanger 的网络基于 Oja 规则的修改版本,该规则定义为**广义赫 ![](img/350f6137-1ddd-447d-879a-79de245a6115.png) -在给定输入`x`的情况下,先前的更新是指单个权重`w[ij]`。 容易理解,第一部分是标准赫布法则,而其余部分是正交项,它扩展到`y[i]`之前的所有单元。 +在给定输入`x`的情况下,先前的更新是指单个权重`w[ij]`。 容易理解,第一部分是标准 Hebbian 法则,而其余部分是正交项,它扩展到`y[i]`之前的所有单元。 以矩阵形式,更新内容如下: @@ -739,7 +739,7 @@ Sanger 的网络基于 Oja 规则的修改版本,该规则定义为**广义赫 -# 桑格网络的一个例子 +# Sanger 网络的一个例子 @@ -772,7 +772,7 @@ Eigenvectors: [[-0.79948496 0.60068611] [-0.60068611 -0.79948496]] ``` -特征值分别约为 12 和 29,,表示第一主成分(对应于转置特征向量矩阵的第一行,因此`(-0.799, 0.6)`比第二个要短得多。 当然,在这种情况下,我们已经通过对协方差矩阵进行特征分解来计算了主成分,但这只是出于教学目的。 Sanger 的网络将按降序提取组件; 因此,我们期望找到第二列作为权重矩阵的第一列,第一列作为权重矩阵的第二列。 让我们从初始化权重和训练常数开始: +特征值分别约为 12 和 29,,表示第一主成分(对应于转置特征向量矩阵的第一行,因此`(-0.799, 0.6)`比第二个要短得多。 当然,在这种情况下,我们已经通过对协方差矩阵进行特征分解来计算了主成分,但这只是出于教学目的。 Sanger 网络将按降序提取组件; 因此,我们期望找到第二列作为权重矩阵的第一列,第一列作为权重矩阵的第二列。 让我们从初始化权重和训练常数开始: ```py import numpy as np @@ -838,7 +838,7 @@ Sanger 网络的最终配置 -# Rubner-Attic 的网络 +# Rubner-Attic 网络 @@ -987,7 +987,7 @@ Final covariance matrix: [[28.9963492 0.31487817] [ 0.31487817 12.01606874]] ``` -同样,最终协方差矩阵是去相关的(误差可忽略不计)。 Rubner-Tavan 的网络通常比 Sanger 的网络快,这是因为反希伯来语的反馈加快了收敛速度。 因此,当采用这种模型时,它们应该是首选。 但是,调整学习速率非常重要,这样可以避免振荡。 我建议从一个较小的值开始,然后稍微增加它,直到迭代次数达到最小值为止。 另外,也可以从较高的学习率入手,以便更快地进行初始校正,并可以通过使用线性(如 Sanger 网络)或指数衰减逐步降低学习率。 +同样,最终协方差矩阵是去相关的(误差可忽略不计)。 Rubner-Tavan 的网络通常比 Sanger 网络快,这是因为反希伯来语的反馈加快了收敛速度。 因此,当采用这种模型时,它们应该是首选。 但是,调整学习速率非常重要,这样可以避免振荡。 我建议从一个较小的值开始,然后稍微增加它,直到迭代次数达到最小值为止。 另外,也可以从较高的学习率入手,以便更快地进行初始校正,并可以通过使用线性(如 Sanger 网络)或指数衰减逐步降低学习率。 @@ -1035,7 +1035,7 @@ Final covariance matrix: [[28.9963492 0.31487817] -# 深度信仰网络 +# 深度信念网络 @@ -1127,7 +1127,7 @@ X_tsne = tsne.fit_transform(X_dbn) -在本章中,我们讨论了用于解决无监督任务的一些非常常见的神经模型。 自编码器使您可以查找数据集的低维表示形式,而没有对其复杂性的特定限制。 特别是,深度卷积网络的使用有助于检测和学习高级和低级几何特征,当内部代码也比原始维数短得多时,这可以导致非常准确的重构。 我们还讨论了如何为自编码器增加稀疏性,以及如何使用这些模型对样本进行降噪。 标准自编码器的一个稍有不同的变体是变体自编码器,它是一种生成模型,可以提高学习从中得出数据集的数据生成过程的能力。 +在本章中,我们讨论了用于解决无监督任务的一些非常常见的神经模型。 自编码器使您可以查找数据集的低维表示形式,而没有对其复杂性的特定限制。 特别是,深度卷积网络的使用有助于检测和学习高级和低级几何特征,当内部代码也比原始维数短得多时,这可以导致非常准确的重构。 我们还讨论了如何为自编码器增加稀疏性,以及如何使用这些模型对样本进行降噪。 标准自编码器的一个稍有不同的变体是变分自编码器,它是一种生成模型,可以提高学习从中得出数据集的数据生成过程的能力。 Sanger 和 Rubner-Tavan 的网络是神经模型,能够在不进行任何统计预处理的情况下提取数据集的前`k`主成分。 它们还具有以在线方式自然工作的优势(尽管标准 PCA 经常需要整个数据集,即使存在性能稍逊于脱机算法的增量变体),也可以按降序提取组件。 我们讨论的最后一个模型是在无监督的情况下的 DBN。 我们描述了其构建基块 RBM 的生成属性,然后分析了此类模型如何学习数据生成过程的内部(通常为低维)表示。 diff --git a/new/handson-unsup-learn-py/09.md b/new/handson-unsup-learn-py/09.md index 61efedef9a036a1573a2d25801765ba2bea8b1ee..38096e524eeaf991e48b2d16101c397ad5c2c2de 100644 --- a/new/handson-unsup-learn-py/09.md +++ b/new/handson-unsup-learn-py/09.md @@ -744,7 +744,7 @@ WGAN 不会陷入模式崩溃,但是不同区域的强烈分离使模型无法 -# 自组织图 +# 自组织映射 @@ -780,11 +780,11 @@ SOM 开发的墨西哥帽选择性 -# Kohonen 地图的示例 +# Kohonen 映射的示例 -在此示例中,我们要训练一个 8×8 正方形 Kohonen 地图以接受 Olivetti 人脸数据集。 由于每个样本都是 64×64 灰度图像,因此我们需要分配一个形状等于(8,8,4,096)的权重矩阵。 训练过程可能会很长; 因此,我们会将地图限制为 100 个随机样本(当然,读者可以自由删除此限制,并使用整个数据集训练模型)。 +在此示例中,我们要训练一个 8×8 正方形 Kohonen 映射以接受 Olivetti 人脸数据集。 由于每个样本都是 64×64 灰度图像,因此我们需要分配一个形状等于(8,8,4,096)的权重矩阵。 训练过程可能会很长; 因此,我们会将地图限制为 100 个随机样本(当然,读者可以自由删除此限制,并使用整个数据集训练模型)。 像往常一样,让我们​​开始加载并规范化数据集,如下所示: diff --git a/new/handson-unsup-learn-py/10.md b/new/handson-unsup-learn-py/10.md index e821a0f6bb1075c92572c7125f10347da2a3422b..ec552bafca04459f134d629fb2800ff7fddcba73 100644 --- a/new/handson-unsup-learn-py/10.md +++ b/new/handson-unsup-learn-py/10.md @@ -1,13 +1,13 @@ -# 评估 +# 习题 -# 第 1 章 +# 第一章 @@ -24,7 +24,7 @@ -# 第 2 章 +# 第二章 @@ -44,7 +44,7 @@ -# 第 3 章 +# 第三章 @@ -67,7 +67,7 @@ 1. 在凝聚方法中,该算法从每个样本(被视为一个集群)开始,然后继续合并子集群,直到定义了一个集群。 在分裂方法中,该算法从包含所有样本的单个簇开始,然后通过拆分将其进行到每个样本组成一个簇为止。 2. 最近的点是`(0, 0)`和`(0, 1)`,因此单键是`L[s](a, b) = 1`。 最远的点是`(-1, -1)`和`(1, 1)`,因此完整的链接是`L[c(a, b) = 2√2`。 -3. 没有; 树状图是给定度量和链接的分层聚类过程的树表示。 +3. 没有; 树状图是给定度量和链接的层次聚类过程的树表示。 4. 在聚集聚类中,树状图的初始部分包含所有样本作为自治聚类。 5. `y`轴报告差异。 6. 将较小的群集合并为较大的群集时,差异性会增加。