1.3万字的支持向量机-含详尽的数学推导和细致全面的逻辑解释-第二部分

四、存在噪音的训练数据集

  训练集中存在噪音,该如何寻找最优超平面?答曰:引入软间隔。我们同样按线性可分数据集和线性不可分数据集来讨论。

(1) 训练数据集线性可分

1) 噪音让最优超平面变形

  到目前为止,我们都假设训练数据集的样本点全部来自于原始样本空间。但实际上,我们采集到的训练数据集是有可能存在噪音的,即存在一些点偏离正常位置很远,它们被称为outlier。这些噪音可能会对结果造成很大影响。我们求出的超平面本身就是由几个支持向量决定的,而如果这些支持向量里面存在噪音的话,那么我们的超平面便变形了。如下图所示:

备注:该图片来源于https://blog.csdn.net/macyang/article/details/38782399/
  黑圆圈中的蓝点是个噪音,没有它,红色的线代表求解出的最优超平面。而有了它,则最优超平面变成黑色的虚线了。可见,最优超平面发生了变形,间隔变小了。甚至有些噪音会导致我们无法求出最优超平面。

2) 引入松弛变量处理噪音,修改原目标函数和约束条件

  既然数据有可能存在噪音,那么最好能去掉噪音,所以我们允许模型在一些样本上出错,即超平面对这些样本分类错误。这称之为软间隔(soft margin)【与之对应,硬间隔(hard margin)就是要求超平面对所有的样本点都分类正确】。如下图所示:

备注:该图引自《机器学习》-周志华

  既然允许样本分类出错,那么我们要修改下原目标函数与约束条件:
{min12||w||2yi(wTxi+b)1,i=1,2,...,n
  原约束条件是yi(wTxi+b)1,i=1,2,...,n,这意味着所有点均分类正确,且支持向量到超平面的距离是最小的。现在我们引入松弛变量ξi0,i=1,2,...,n,约束条件变为yi(wTxi+b)1ξi,i=1,2,...,n,这意味着允许有些正类点穿过超平面到负类一侧,或者某些负类点穿过超平面到正类一侧。极端来说,如果松弛变量ξi为正无穷,则1ξi为负无穷,那么约束条件恒成立,即任何一个组(w,b)【任何一个超平面】都可以让约束条件成立,因而失去约束意义。
  因此我们要约束松弛变量,让松弛变量的总和最小,即让误分类的点尽可能少,所以我们将目标函数修改为: min[12||w||2+Cni=1ξi],其中C>0C用于调节“让误分类的点尽可能少”这个目标的权重,是需要预先给出的。C越小,表示我们能接受的不满足大间隔约束的样本点越多。
  现在我们得到新的目标函数和约束条件,如下所示:
{min[12||w||2+Cni=1ξi]C>01yi(wTxi+b)1ξi,i=1,2,...,n2ξi0,i=1,2,...,n
  变形得:
{f=12||w||2+Cni=1ξiC>011ξiyi(wTxi+b)0,i=1,2,...,n2ξi0,i=1,2,...,nmin[f(w,ξi)]

3) 构造拉格朗日函数得到对偶问题
31) 构造拉格朗日函数

  我们模仿原目标函数的求解过程,先构造拉格朗日函数Lf,当L取得最大值时,f可取得最小值:
max[L(w,b,ξi)]=12||w||2+Cni=1ξi+ni=1αi(1ξiyi(wTxi+b))+ni=1μi(ξi),αi0,μi0,C>0
现在我们令Lw,b,ξi求导:
\frac{\partial L}{\partial w}=0,\frac{\partial L}{\partial b}=0,\frac{\partial L}{\partial \xi_{i}}=0,i=1,2,...,n
  解得:
w=\sum_{i=1}^{n}\alpha _{i}y_{i}x_{i},0=\sum_{i=1}^{n}\alpha _{i}y_{i},C-\alpha _{i}-\mu_{i}=0

32) KTT条件-最优解必须满足的条件

  也就是,当L取得最大值时,必然要求L的第三项,第四项取得最大值。而第三项,第四项的最大值均为0,这时有\alpha _{i}(1-\xi_{i}-y_{i}(w^{T}x_{i}+b))=0,且\mu_{i}(-\xi_{i})=0。当L取得最值时,还有C-\alpha _{i}-\mu_{i}=0i=1,2,...,n

1)若\alpha _{i}=0,则C=\mu_{i},而C>0,即\mu_{i}>0,这时\xi_{i}=0y_{i}(w^{T}x_{i}+b)\geq1,即样本点x_{i}是正常的点。

2)若\alpha _{i}=C,则\mu_{i}=0,则max[L(w,b,\xi_{i})]=\frac{1}{2}||w||^{2}+C\sum_{i=1}^{n}(\xi_{i}+1-\xi_{i}-y_{i}(w^{T}x_{i}+b)) =\frac{1}{2}||w||^{2}+C\sum_{i=1}^{n}(1-y_{i}(w^{T}x_{i}+b))

L取得最大值时必然要求1-y_{i}(w^{T}x_{i}+b)\geq 0,即y_{i}(w^{T}x_{i}+b)\leq 1,即样本点是错误分类点。【这里存在疑问】

3)若0<\alpha _{i}<C,则1-\xi_{i}-y_{i}(w^{T}x_{i}+b)=0且\mu_{i}>0,而\mu_{i}>0,则\xi_{i}=0,此时有1=y_{i}(w^{T}x_{i}+b),这样的\alpha _{i}对应的样本点x_{i}为支持向量。

  总结,当L取得最大值,目标函数f取得最优解,最优解必然满足以下三个条件的其中一个。
\left\{\begin{matrix} \alpha _{i}=0\Leftrightarrow y_{i}(w^{T}x_{i}+b)\geq1\\ 0<\alpha _{i}<C\Leftrightarrow 1=y_{i}(w^{T}x_{i}+b)\\ \alpha _{i}=C\Leftrightarrow y_{i}(w^{T}x_{i}+b)\leq 1 \end{matrix}\right.
  这些条件合称KKT条件,如果某个解是最优解,则它必然是满足这些条件的中的一个,如果它满足这些条件之外的条件(如下),则该解一定不是最优解。
\left\{\begin{matrix} C>\alpha _{i}>0\Leftrightarrow y_{i}(w^{T}x_{i}+b)\geq1\\ \alpha _{i}=0或\alpha _{i}=C\Leftrightarrow 1=y_{i}(w^{T}x_{i}+b)\\ 0\leq\alpha _{i}<C\Leftrightarrow y_{i}(w^{T}x_{i}+b)\leq 1 \end{matrix}\right.


33) 对偶问题

  再将此结果代入L中,消掉w,b,\mu_{i},得到跟原目标函数的对偶函数一样的对偶函数:
max[\sum_{i=1}^{n}\alpha _{i}-\frac{1}{2}(\sum_{i=1}^{n}\alpha _{i}y_{i}x_{i}^{T})(\sum_{j=1}^{n}\alpha _{j}y_{j}x_{j})]
  不同的是,由约束条件C-\alpha _{i}-\mu_{i}=0,\mu_{i}\geq 0可得 C \geq \alpha _{i}\geq 0
  由此,我们可以得到L的等价问题g,也称为对偶问题,记做:
\left\{\begin{array}目目标函数:g(\alpha _{1} ,...,\alpha _{n})=\sum_{i=1}^{n}\alpha _{i}-\frac{1}{2}(\sum_{i=1}^{n}\alpha _{i}y_{i}x_{i}^{T})(\sum_{j=1}^{n}\alpha _{j}y_{j}x_{j})\\ 约束条件1:\sum_{i=1}^{n}\alpha _{i}y_{i}=0,(i=1,2,...,n)\\ 约束条件2:C \geq \alpha _{i}\geq0,(i=1,2,...,n)\\ 求最大值:max[g(\alpha _{1} ,...,\alpha _{n})] \\ \end{array}\right.
  求g的最大值等价于求g的最小值,变形得
\left\{\begin{array}目目标函数:g(\alpha _{1} ,...,\alpha _{n})=\frac{1}{2}(\sum_{i=1}^{n}\alpha _{i}y_{i}x_{i}^{T})(\sum_{j=1}^{n}\alpha _{j}y_{j}x_{j})-\sum_{i=1}^{n}\alpha _{i}\\ 约束条件1:\sum_{i=1}^{n}\alpha _{i}y_{i}=0,(i=1,2,...,n)\\ 约束条件2::C \geq \alpha _{i}\geq0,(i=1,2,...,n)\\ 求最小值:min[g(\alpha _{1} ,...,\alpha _{n})] \\ \end{array}\right.

4)求解对偶问题-SMO算法

  现在我们想要解出对偶问题。

41) 思路

  思路一:对偶问题的目标函数g共有n<script type="math/tex">n</script>个变量,我们可以每次选择一个\alpha _{i},固定剩余的n-1个变量(即将它们当成常量),这样就将g从n元函数转化为一元函数,另其导数为0,求导,便可解出\alpha _{i}。这样一共执行n次,便可求出所有变量的解。但这种解法要求被选择的变量\alpha _{i}和剩余的n-1个变量之间是相互独立的,而这里存在约束条件1\sum_{i=1}^{n}\alpha _{i}y_{i}=0,(i=1,2,...,n),当我们将剩余n-1个变量固定为常量时,\alpha _{i}也被固定下来了,变成了常量而不再是变量。

  思路二:因此,我们要换个思路,每次选择两个变量\alpha _{i}\alpha _{j},固定剩余的n-2个变量(即将它们当成常量),这样就将g从n元二次函数转化为子问题二元二次函数,再加上约束条件,就组成二元的二次规划问题求解,这比n元的二次规划容易多了。这就是SMO算法的核心思想。

序列最小化SMO(Sequential Minimal Optimizaion)算法是John Platt在1998年发布的一个用于处理SVM的强大算法,核心思想是将大优化问题分解为多个小优化问题求解。这些小优化问题往往很容易求解,而且对它们的求解顺序不会影响最终结果。虽然分解为的小优化问题较多,但比起将它们作为整体来求解,分解后还是高效很多。

42) 计算出最优解

  基于思路二,假设我们选择的变量是\alpha _{1}\alpha _{2},我们先来求解简单的二元的二次规划问题。

S0 为了叙述方便,我们先定义些符号:

s_{2}=\sum_{i=1}^{2}\alpha _{i}y_{i}x_{i}=\alpha _{1}y_{1}x_{1}+\alpha _{2}y_{2}x_{2},s_{n-2}=\sum_{i=3}^{n}\alpha _{i}y_{i}x_{i},则

w=\sum_{i=1}^{n}\alpha _{i}y_{i}x_{i}=s_{n-2}+s_{2}w^{T}=\sum_{i=1}^{n}\alpha _{i}y_{i}x_{i}^{T}=s_{n-2}^{T}+s_{2}^{T}

\sum_{i=1}^{n}\alpha _{i}y _{i}=r_{2}+r_{n-2}=0,r_{2}=\alpha _{1}y _{1}+\alpha _{2}y _{2},r_{n-2}=\sum_{i=3}^{n}\alpha _{i}y _{i}

c_{2}=\alpha _{1}+\alpha _{2},c_{n-2}=\sum_{i=3}^{n}\alpha _{i},c_{2}+c_{n-2}=\sum_{i=1}^{n}\alpha _{i}

以上的s_{n-2},c_{n-2}均假设为常量

S1 我们先分析目标函数:

g(\alpha _{1} ,\alpha _{2})=\frac{1}{2}(s_{n-2}^{T}+s_{2}^{T})(s_{n-2}+s_{2})-(c_{2}+c_{n-2})=\frac{1}{2}(s_{n-2}^{T}s_{n-2}+s_{n-2}^{T}s_{2}+s_{2}^{T}s_{n-2}+s_{2}^{T}s_{2})-(c_{2}+c_{n-2})

\because s_{n-2}^{T}s_{n-2},c_{n-2}为常量,对求导数没影响,且s_{n-2}^{T}s_{2}=s_{2}^{T}s_{n-2}

\therefore 不妨设 g(\alpha _{1} ,\alpha _{2}) = s_{2}^{T}s_{n-2}+\frac{1}{2}s_{2}^{T}s_{2} - c_{2}

S2 我们再分析约束条件1:

\sum_{i=1}^{n}\alpha _{i}y_{i}=0,(i=1,2,...,n) \rightarrow \alpha _{1}y_{1} +\alpha _{2}y_{2}=-r_{n-2}\rightarrow \alpha _{2}y_{2}^{2}=-r_{n-2}y_{2}-\alpha _{1}y_{1}y_{2},而y_{2}^{2}=1

\rightarrow \alpha _{2}=-r_{n-2}y_{2}-\alpha _{1}y_{1}y_{2}

可见,\alpha _{2}可以被\alpha _{1}表示出,于是

c_{2}=\alpha _{1}+\alpha _{2}=\alpha _{1}-r_{n-2}y_{2}-\alpha _{1}y_{1}y_{2}=\alpha _{1}(1-y_{1}y_{2})-r_{n-2}y_{2}

s_{2}=\alpha _{1}y_{1}x_{1}+\alpha _{2}y_{2}x_{2}=\alpha _{1}y_{1}x_{1}+(-r_{n-2}y_{2}-\alpha _{1}y_{1}y_{2})y_{2}x_{2}=\alpha _{1}y_{1}(x_{1}-x_{2})-r_{n-2}x_{2}

u=y_{1}(x_{1}-x_{2}),v=-r_{n-2}x_{2},有s_{2}=\alpha _{1}u+v

S3 基于约束条件的分析,我们将目标函数变形:

g(\alpha _{1}) = (\alpha _{1}u^{T}+v^{T})s_{n-2}+\frac{1}{2} (\alpha _{1}u^{T}+v^{T})(\alpha _{1}u+v) - c_{2} \\=\frac{1}{2}\alpha _{1}^{2}u^{T}u+\alpha _{1}(u^{T}v+u^{T}s_{n-2}-(1-y_{1}y_{2}))+r_{n-2}x_{2}+v^{T}s_{n-2}+v^{T}v

去掉常数部分,有: g(\alpha _{1})=\frac{1}{2}\alpha _{1}^{2}u^{T}u+\alpha _{1}[u^{T}(v+s_{n-2})-(1-y_{1}y_{2})]

S4 求导,解出变量的最优解:
\frac{\partial g}{\partial \alpha _{1}}=\alpha _{1}u^{T}u+u^{T}(v+s_{n-2})-(1-y_{1}y_{2})=0\rightarrow \alpha _{1}^{*}=\frac{(1-y_{1}y_{2})-u^{T}(v+s_{n-2})}{u^{T}u}
其中,1-y_{1}y_{2}=y_{1}^{2}-y_{1}y_{2}=y_{1}(y_{1}-y_{2})u^{T}u=y_{1}^{2}(x_{1}-x_{2})^{T}(x_{1}-x_{2})=(x_{1}-x_{2})^{T}(x_{1}-x_{2})=\eta,为学习速率。

另外,v+s_{n-2}=s_{2}-\alpha _{1}u+s_{n-2}=w-\alpha _{1}u,所以u^{T}(v+s_{n-2})=u^{T}(w-\alpha _{1}u)=u^{T}w-\alpha _{1}u^{T}u=u^{T}w-\alpha _{1}\eta

u^{T}w=y_{1}(x_{1}^{T}w-x_{2}^{T}w)=y_{1}(w^{T}x_{1}-w^{T}x_{2})=y_{1}[(w^{T}x_{1}+b)-(w^{T}x_{2}+b)]=y_{1}(f(x_{1})-f(x_{1}))

所以,
\alpha _{1}^{*}=\frac{y_{1}(y_{1}-y_{2})-[y_{1}(f(x_{1})-f(x_{2}))-\alpha _{1}\eta]}{\eta}=\frac{y_{1}[(f(x_{2})-y_{2})-(f(x_{1})-y_{1})]+\alpha _{1}\eta}{\eta}
E_{i}=f(x_{i})-y_{i},我们有
\left\{\begin{matrix} \alpha _{1}^{*}=\frac{y_{1}(E_{2}-E_{1})}{\eta}+\alpha _{1}\\ E_{1}=f(x_{1})-y_{1},E_{2}=f(x_{2})-y_{2}\\ \eta=(x_{1}-x_{2})^{T}(x_{1}-x_{2}) \end{matrix}\right.
其中,\alpha _{1}代表[0,C]之间的任意原始值,\alpha _{1}^{*}代表导数为零最优解,我们记\alpha _{1}=\alpha _{1} ^{old},\alpha _{1}^{*}=\alpha _{1}^{new},有:
\left\{\begin{matrix} \alpha _{1}^{new}=\frac{y_{1}(E_{2}-E_{1})}{\eta}+\alpha _{1}^{old}\\ E_{1}=f(x_{1})-y_{1},E_{2}=f(x_{2})-y_{2}\\ \eta=(x_{1}-x_{2})^{T}(x_{1}-x_{2}) \end{matrix}\right.
  另外,我们根据\alpha _{1}的最优解来求\alpha _{2}的最优解。

由约束条件1我们有:
\left\{\begin{matrix} \alpha _{1}^{new}=-\sum_{i=3}^{n}\alpha _{i}y _{i}y_{1}-\alpha _{2}^{new}y_{1}y_{2}\\ \alpha _{1}^{old}=-\sum_{i=3}^{n}\alpha _{i}y _{i}y_{1}-\alpha _{2}^{old}y_{1}y_{2}\\ \end{matrix}\right.
可得\alpha _{1}^{new}=\alpha _{1}^{old}+\alpha _{2}^{old}y_{1}y_{2}-\alpha _{2}^{new}y_{1}y_{2},因而\alpha _{2}^{new}=\alpha _{2}^{old}+(\alpha _{1}^{old}-\alpha _{1}^{new})y_{1}y_{2}

  到目前为止,我们已经推出了最终需要的迭代公式。

S5 根据变量的最优解,解出b的最优解

1)当0<\alpha _{1}<C时,\alpha _{1}对应的点x_{1}为支持向量时,我们有1=y_{1}(w^{T}x_{1}+b) \rightarrow y_{1}=w^{T}x_{1}+b \rightarrow y_{1}=(s_{n-2}+s_{2})^{T}x_{1}+b

记new为最优解,old为原始非最优解,则y_{1}=(s_{n-2}+s_{2}^{new})^{T}x_{1}+b^{new} \rightarrow b^{new}=y_{1}-s_{n-2}^{T}x_{1}-(s_{2}^{new})^{T}x_{1}

另一方面,我们有(s_{n-2}+s_{2}^{old})^{T}x_{1}+b^{old}=f(x_{1}) \rightarrow s_{n-2}^{T}x_{1}=f(x_{1})-b^{old}-(s_{2}^{old})^{T}x_{1}

所以,b^{new}=y_{1}-(f(x_{1})-b^{old}-(s_{2}^{old})^{T}x_{1})-(s_{2}^{new})^{T}x_{1}=(y_{1}-f(x_{1}))+(s_{2}^{old}-s_{2}^{new})^{T}x_{1}+b^{old}

s_{2}^{old}-s_{2}^{new}=(\alpha _{1}^{old}-\alpha _{1}^{new})y_{1}x_{1}+(\alpha _{2}^{old}-\alpha _{2}^{new})y_{2}x_{2},而-E_{1}=y_{1}-f(x_{1})

所以,b^{new}=-E_{1}+((\alpha _{1}^{old}-\alpha _{1}^{new})y_{1}x_{1}+(\alpha _{2}^{old}-\alpha _{2}^{new})y_{2}x_{2})^{T}x_{1}+b^{old}

同样,当0<\alpha _{2}<C时,\alpha _{2}对应的点x_{2}为支持向量时,我们可计算得b^{new}=-E_{2}+((\alpha _{1}^{old}-\alpha _{1}^{new})y_{1}x_{1}+(\alpha _{2}^{old}-\alpha _{2}^{new})y_{2}x_{2})^{T}x_{1}+b^{old}

为了区分,我们记\alpha _{1}对应的b^{new}b_{1}^{new},记\alpha _{2}对应的b^{new}b_{2}^{new}

2)当\alpha _{1},\alpha _{2}0或者为C时,b_{1}^{new},b_{2}^{new}以及它们之间的数都是符合最优解条件的,我们取它们的中点(b_{1}^{new}+b_{2}^{new}/)2

  至此,我们可以总结b的最优解:
b^{new}\left\{\begin{matrix} b_{1}^{new},0<\alpha _{1}<C\\ b_{2}^{new},0<\alpha _{2}<C\\ (b_{1}^{new}+b_{2}^{new}/)2,\alpha _{1},\alpha _{2}为0或者为C \end{matrix}\right.

43) 分析最优解的取值范围

  我们已经有\alpha _{1}^{new}=\alpha _{1}^{old}+\alpha _{2}^{old}y_{1}y_{2}-\alpha _{2}^{new}y_{1}y_{2}。而根据y_{1}y_{2}的关系,以及约束条件2,我们有:
\left\{\begin{matrix} \alpha _{1}^{new}=\alpha _{1}^{old}+\alpha _{2}^{old}-\alpha _{2}^{new},C \geq \alpha _{2}^{new}\geq0,当y_{1}=y_{2}时\\ \alpha _{1}^{new}=\alpha _{1}^{old}-\alpha _{2}^{old}+\alpha _{2}^{new},C \geq \alpha _{2}^{new}\geq0,当y_{1}≠y_{2}时\\ \end{matrix}\right.
  可解得\alpha _{1}^{new}的取值范围:
\left\{\begin{matrix} max(0,\alpha _{2}^{old}+\alpha _{1}^{old}-C) \leq \alpha _{1}^{new} \leq min(C,\alpha _{2}^{old}+\alpha _{1}^{old}),当y_{1}=y_{2}时\\ max(0,\alpha _{1}^{old}-\alpha _{2}^{old}) \leq \alpha _{1}^{new} \leq min(C,C+\alpha _{1}^{old}-\alpha _{2}^{old}),当y_{1}≠y_{2}时\\ \end{matrix}\right.

44)如何选择两个变量?

  基于思路二,每次我们需要选择两个变量\alpha _{i}\alpha _{j},其中一个应该选择违反最优解条件(KKT条件)最严重的,这样解出它的最优解,那么我们会更快接近目标函数的最值。第二个变量是由约束条件自动确定的。
  选择第一变量\alpha _{i}时,首先看0<\alpha _{i}<C对应的样本点(即支持向量)是否满足最优解条件,如果它们不满足(KKT条件),则选择它们中一个;如果它们满足,则遍历其他的点。
  第二个变量\alpha _{j}的选择标准是希望\alpha _{j}有足够大的变化,\alpha _{j}^{new}=\frac{y_{j}(E_{i}-E_{j})}{\eta}+\alpha _{j}^{old}\alpha _{j}^{new}依赖于|E_{i}-E_{j}|,确定\alpha _{i}^{new}后,可确定E_{i},应选择一个E_{j},让|E_{i}-E_{j}|最大。

5) 小结

  以上就是引入软间隔后,可以处理带有噪音的线性可分训练数据集的支持向量机,跟处理没有噪音的线性可分训练数据集的支持向量机对比,不同的地方在于约束条件2,软间隔下是C \geq \alpha _{i}\geq 0,硬间隔下是\alpha _{i}\geq 0

(2)训练数据集非线性可分

  Kernel化的非线性可分数据集若带有噪音,则其处理方式跟线性可分数据集一样,最后求得其支持向量机中,只要将目标函数中的x^{T}_{i}x_{j}换成\kappa x^{T}_{i}x_{j}

五、后记

  后续会继续研究如何在python中实现SVM;研读国际性论文,扩充本文在理论方面的不足;研究SVM在实际项目中的应用。
  本人是初学者,若有纰漏,恳请指出,非常感谢!

六、参考

​ 1. 李航《统计学习方法》

  1. 周志华《机器学习》
  2. https://blog.csdn.net/alwaystry/article/details/60957096 惊呼——SVM支持向量机三重境界!
  3. http://cuijiahua.com/blog/2017/11/ml_8_svm_1.html 机器学习实战教程(八):支持向量机原理篇之手撕线性SVM
  4. https://www.zhihu.com/question/21094489/answer/86273196
  5. https://www.youtube.com/watch?v=3liCbRZPrZA 核函数的可视化例子
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值