机器学习-周志华】学习笔记-第十一章

记录第一遍没看懂的
记录觉得有用的
其他章节:
        第一章
        第三章
        第五章
        第六章
        第七章
        第八章
        第九章
        第十章
        十一章
        十二章
        十三章
        十四章
        十五章
        十六章

特征选择

        特征选择是一个重要的"数据预处理" 过程,其一可以大为减轻维数灾难问题,二是可以降低学习任务的难度。
        第一个环节是“子集搜索”,可以逐渐增加相关特征(“前向”搜索);可以从完整的特征集合开始,每次尝试去掉一个无关特征("后向"搜索 );还可将前向与后向搜索结合起来,每一轮逐渐增加选定相关特征(这些特征在后续轮中将确定不会被去除)、同时减少无关特(“双向” 搜索)。
        第二个环节是“子集评价”,通过公式计算信息增益
在这里插入图片描述
        过滤式方法先对数据集进行特征选择,然后再训练学习器,特征选择过程与后续学习器无关
        包裹式特征选择直接把最终将要使用的学习器的性能作为特征于集的评价准则,这样性能更好但计算开销也大。
        嵌入式选择是在学习器训练过程中自动地进行了特征选择。L1范数正则化公式为:
在这里插入图片描述
        使用L1范数的好处可以通过下面的图来理解:使用范数就是为了找到一个点使得w极小,公式中 ∑ i = 1 m ( y i − w T x i ) 2 \sum_{i=1}^m(y_i-w^Tx_i)^2 i=1m(yiwTxi)2其实是关于 w w w的平方项,也就是一个抛物面;也就是最终w得到的点是抛物面与菱形/圆圈的交点上,可以看出,用L1可能得到w2项为0的点,相当于起到降维的效果。
在这里插入图片描述
         L 1 L_1 L1问题求解,首先假设条件(11.9): f ( x ) f(x) f(x)和他旁边的点的梯度相差不是很大,也就是 f ( x ) f(x) f(x)不是太陡,没有突变点;也因此可以使用泰勒展开式。然而,由于正则项的存在,所以没有解析解,因此采用每次都朝梯度下降的方向走的方法。相当于把(11.13)当成一个标量式了,每次只求其中一个分量
在这里插入图片描述
        解(11.14)的具体过程如下:
x k + 1 i = a r g m x i n L 2 ( x i − z i ) 2 + λ ∣ x i ∣ 平方项展开: L 2 x 2 − L z x + L 2 z 2 + λ ∣ x ∣ x > 0 : L 2 x 2 + ( λ − L z ) x + L 2 z 2 ⇒ x ∗ = z L − λ L x < 0 : L 2 x 2 + ( − λ − L z ) x + L 2 z 2 ⇒ x ∗ = z L + λ L x_{k+1}^i=arg \underset{x} min \dfrac{L}{2}(x^i-z^i)^2+\lambda|x^i|\\ 平方项展开:\dfrac{L}{2}x^2-Lzx+ \dfrac{L}{2}z^2+\lambda|x|\\ x>0:\dfrac{L}{2}x^2+(\lambda-Lz)x+ \dfrac{L}{2}z^2 \rArr x^*=\dfrac{zL-\lambda}{L}\\ x<0:\dfrac{L}{2}x^2+(-\lambda-Lz)x+ \dfrac{L}{2}z^2 \rArr x^*=\dfrac{zL+\lambda}{L} xk+1i=argxmin2L(xizi)2+λxi平方项展开:2Lx2Lzx+2Lz2+λxx>0:2Lx2+(λLz)x+2Lz2x=LzLλx<0:2Lx2+(λLz)x+2Lz2x=LzL+λ

稀疏学习

        前面的情况都是,没有用的都是整列整列的,但实际情况时,没有用的都是分散在数据矩阵中。这样的样本的好处是:1.处理文本数据的性能较好,使大多数问题变得线性可分;2.存储高效。
        因此,本节的目的就是希望样本能够“恰当”的稀疏,让他在某些算法上有比较好的表现。那么首先需要先学习出一个“字典”,然后进行“稀疏编码”。
在这里插入图片描述
        采用用变量交替优化的策略来求解,首先固定 B B B,利用近端梯度下降法求解 α i \alpha_i αi;然后固定 α i \alpha_i αi,利用KSVD策略求解。
在这里插入图片描述
        奈奎斯特采样定理:令采样频率达到模拟信号最高频率的两倍,则采样后的数字信号就保留了模拟信号的全部信息;那么假定有长度为 x x x的离散信号 ,不妨假定我们以远小于奈奎斯特来样定理要求的采样率进行采样,得到长度为 n n n的采样后信号 y y y,即 y = Φ x y=\Phi x y=Φx,但由于这是一个欠定方程,因此难以求出数值解;所以假设 x = Ψ s x=\Psi s x=Ψs,那么 y = Φ Ψ s y=\Phi \Psi s y=ΦΨs;如果 s s s具有稀疏性,那么公式中 A = Φ Ψ A=\Phi \Psi A=ΦΨ可以类似于字典,能将信号转换为稀疏表示。
        压缩感知关注的是如何利用信号本身所具有的稀疏性,从部分观测样本中恢复原信号。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本章主要介绍了概率图模型的基本概念和常见类型,以及如何利用Python实现这些模型。下面是一些笔记和代码示例。 ## 概率图模型的基本概念 概率图模型是一种用于表示和处理不确定性的图形化模型,它能够将一个复杂的联合概率分布表示为多个简单的条件概率分布的乘积形式,从而简化概率推理和模型学习的过程。概率图模型主要包括两种类型:有向图模型和无向图模型。 有向图模型(Directed Acyclic Graph, DAG)又称为贝叶斯网络(Bayesian Network, BN),它用有向边表示变量之间的因果关系,每个节点表示一个随机变量,给定父节点的条件下,每个节点的取值都可以用一个条件概率分布来描述。有向图模型可以用贝叶斯公式进行概率推理和参数学习。 无向图模型(Undirected Graphical Model, UGM)又称为马尔可夫随机场(Markov Random Field, MRF),它用无向边表示变量之间的相互作用关系,每个节点表示一个随机变量,给定邻居节点的取值,每个节点的取值都可以用一个势函数(Potential Function)来描述。无向图模型可以用和有向图模型类似的方法进行概率推理和参数学习。 ## 概率图模型的Python实现 在Python中,我们可以使用`pgmpy`库来实现概率图模型。该库提供了一个简单而强大的接口来定义和操作概率图模型,支持有向图模型和无向图模型的构建、概率推理、参数学习等功能。 ### 有向图模型 以下是一个简单的有向图模型的示例: ```python from pgmpy.models import BayesianModel model = BayesianModel([('A', 'B'), ('C', 'B'), ('B', 'D')]) ``` 其中,`BayesianModel`是有向图模型的类,`('A', 'B')`表示A节点指向B节点,即B节点是A节点的子节点,依此类推。我们可以使用以下代码查看模型的结构: ```python print(model.edges()) # 输出:[('A', 'B'), ('B', 'D'), ('C', 'B')] ``` 接下来,我们可以为每个节点定义条件概率分布。以下是一个简单的例子: ```python from pgmpy.factors.discrete import TabularCPD cpd_a = TabularCPD(variable='A', variable_card=2, values=[[0.2, 0.8]]) cpd_c = TabularCPD(variable='C', variable_card=2, values=[[0.4, 0.6]]) cpd_b = TabularCPD(variable='B', variable_card=2, values=[[0.1, 0.9, 0.3, 0.7], [0.9, 0.1, 0.7, 0.3]], evidence=['A', 'C'], evidence_card=[2, 2]) cpd_d = TabularCPD(variable='D', variable_card=2, values=[[0.9, 0.1], [0.1, 0.9]], evidence=['B'], evidence_card=[2]) model.add_cpds(cpd_a, cpd_c, cpd_b, cpd_d) ``` 其中,`TabularCPD`是条件概率分布的类,`variable`表示当前节点的变量名,`variable_card`表示当前节点的取值个数,`values`表示条件概率分布的值。对于有父节点的节点,需要指定`evidence`和`evidence_card`参数,表示当前节点的父节点和父节点的取值个数。 接下来,我们可以使用以下代码进行概率推理: ```python from pgmpy.inference import VariableElimination infer = VariableElimination(model) print(infer.query(['D'], evidence={'A': 1})) # 输出:+-----+----------+ # | D | phi(D) | # +=====+==========+ # | D_0 | 0.6000 | # +-----+----------+ # | D_1 | 0.4000 | # +-----+----------+ ``` 其中,`VariableElimination`是概率推理的类,`query`方法用于查询给定变量的概率分布,`evidence`参数用于指定给定变量的取值。 ### 无向图模型 以下是一个简单的无向图模型的示例: ```python from pgmpy.models import MarkovModel model = MarkovModel([('A', 'B'), ('C', 'B'), ('B', 'D')]) ``` 其中,`MarkovModel`是无向图模型的类,与有向图模型类似,`('A', 'B')`表示A节点和B节点之间有相互作用关系。 接下来,我们可以为每个节点定义势函数。以下是一个简单的例子: ```python from pgmpy.factors.discrete import DiscreteFactor phi_a = DiscreteFactor(['A'], [2], [0.2, 0.8]) phi_c = DiscreteFactor(['C'], [2], [0.4, 0.6]) phi_b = DiscreteFactor(['A', 'C', 'B'], [2, 2, 2], [0.1, 0.9, 0.3, 0.7, 0.9, 0.1, 0.7, 0.3]) phi_d = DiscreteFactor(['B', 'D'], [2, 2], [0.9, 0.1, 0.1, 0.9]) model.add_factors(phi_a, phi_c, phi_b, phi_d) ``` 其中,`DiscreteFactor`是势函数的类,与条件概率分布类似,需要指定变量名、变量取值个数和势函数的值。 接下来,我们可以使用以下代码进行概率推理: ```python from pgmpy.inference import BeliefPropagation infer = BeliefPropagation(model) print(infer.query(['D'], evidence={'A': 1})) # 输出:+-----+----------+ # | D | phi(D) | # +=====+==========+ # | D_0 | 0.6000 | # +-----+----------+ # | D_1 | 0.4000 | # +-----+----------+ ``` 其中,`BeliefPropagation`是概率推理的类,与有向图模型类似,`query`方法用于查询给定变量的概率分布,`evidence`参数用于指定给定变量的取值。 ## 总结 本章介绍了概率图模型的基本概念和Python实现,包括有向图模型和无向图模型的构建、条件概率分布和势函数的定义、概率推理等。使用`pgmpy`库可以方便地实现概率图模型,对于概率模型的学习和应用都有很大的帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值