机器学习面试题之LR

机器学习面试题之LR——逻辑回归

1. LR为什么是线性模型
Logistic Regression从几率的概念构建线性回归模型。一个事件发生的几率(odds)为该事件发生的概率与不发生概率的比值,几率的取值范围为 [ 0 , + ∞ ) [0,+∞) [0,+),其对数的取值范围为实数域,所以,可以将对数几率作为因变量构建线性回归模型: l o g p 1 − p = W T X log\frac{p}{1-p} = W^T X log1pp=WTX
由此可得 p = 1 1 + e x p ( − W T X ) p = \frac{1}{1+exp(-W^TX)} p=1+exp(WTX)1,即 P ( y = 1 ∣ x , w ) = p P(y=1|x,w)=p P(y=1x,w)=p,这便是Logistic Regression采用sigmoid函数的原因,sigmoid函数将自变量的线性组合映射到(0,1),用以表述分类的概率特性。 从sigmoid函数看出,当 θ T X > 0 \theta^TX>0 θTX>0 时, y = 1 y=1 y=1,否则 y = 0 y=0 y=0 θ T X = 0 \theta^TX=0 θTX=0 是模型隐含的分类平面(在高维空间中,我们说是超平面)。所以说逻辑回归本质上是一个线性模型。

2. LR如何解决低维不可分
特征映射:通过特征变换的方式把低维空间转换到高维空间,而在低维空间不可分的数据,到高维空间中线性可分的几率会高一些。具体方法:核函数,如:高斯核,多项式核等等。

3. 从图模型角度看LR(现在还不是很懂其他生成模型,以后补上)
LR模型可以看作是CRF模型的低配版,在完全不定义随机变量交互,只考虑P(Y|X)的情况下,得到的就是LR模型。
最大熵相比LR,可以提取多组特征(最大熵定义了多个特征函数),本质上等价的。CRF又是最大熵模型序列化的推广。
本质上,LR和softmax是等价的,而且也可证最大熵和softmax也等价,即可证LR和最大熵的等价性
LR(最大熵模型)统计的是训练集中的各种数据满足特征函数的频数(conditional);贝叶斯模型统计的是训练集中的各种数据的频数;CRF统计的是训练集中相关数据 (比如说相邻的词,不相邻的词不统计) 满足特征函数的频数。
PS,最大熵模型和CRF的区别:最大熵模型在每个状态都有一个概率模型,在每个状态转移时都要进行归一化。如果某个状态只有一个后续 状态,那么该状态到后续状态的跳转概率即为1。这样,不管输入为任何内容,它都向该后续状态跳转。而CRFs是在所有的状态上建立一个统一的概率模型,这 样在进行归一化时,即使某个状态只有一个后续状态,它到该后续状态的跳转概率也不会为1,从而解决了“labelbias”问题。因此,从理论上 讲,CRFs非常适用于中文的词性标注。
参考链接:
https://zhuanlan.zhihu.com/p/34261803
https://www.cnblogs.com/ooon/p/5829341.html

4. LR的损失函数
J ( θ ) = [ − 1 m ∑ i = 1 m ( y ( i ) l o g ( h θ ( x ( i ) ) ) + ( 1 − y ( i ) ) l o g ( 1 − h θ ( x ( i ) ) ) ) ] + λ m ∑ j = 1 n θ j 2 J(\theta) = [-\frac{1}{m}\sum_{i=1}^m(y^{(i)}log(h_{\theta}(x^{(i)}))+(1-y^{(i)})log(1-h_{\theta}(x^{(i)})))]+\frac{\lambda}{m}\sum_{j=1}^n\theta_j^2 J(θ)=[m1i=1m(y(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i))))]+mλj=1nθj2损失函数的推导:
使用极大似然估计去估算模型的参数。
根据上面1中的知识,我们知道Y=1发生的概率,设为p,则 P ( Y = 1 ∣ x ) = p ( x i ) , P ( Y = 0 ∣ x ) = 1 − p ( x i ) P(Y=1|x)=p(x_i),P(Y=0|x)=1−p(x_i) P(Y=1x)=p(xi),P(Y=0x)=1p(xi)写出似然函数:
L ( w ) = ∏ i = 1 n [ p ( x i ) ] y i [ 1 − p ( x i ) ] 1 − y i L(w)=\prod_{i=1}^n[p(x_i)]^{y_i}[1−p(x_i)]^{1-y_i} L(w)=i=1n[p(xi)]yi[1p(xi)]1yin为样本个数。
因为我们这里只考虑了二分类的情况,即 y i y_i yi只能取0和1两种情况。上面的似然函数就是依据这个条件写出来的。
求对数似然函数: l n L ( w ) = ∑ i = 1 n [ y i l n p ( x i ) + ( 1 − y i ) l n ( 1 − p ( x i ) ) ] lnL(w)=\sum_{i=1}^n[y_ilnp(x_i)+(1−y_i)ln(1−p(x_i))] lnL(w)=i=1n[yilnp(xi)+(1yi)ln(1p(xi))]最后取平均,就得到了
1 n l n L ( w ) = 1 n ∑ i = 1 n [ y i l n p ( x i ) + ( 1 − y i ) l n ( 1 − p ( x i ) ) ] \frac{1}{n}lnL(w)=\frac{1}{n}\sum_{i=1}^n[y_ilnp(x_i)+(1−y_i)ln(1−p(x_i))] n1lnL(w)=n1i=1n[yilnp(xi)+(1yi)ln(1p(xi))]最大似然估计就是要求参数 w , b w,b wb使得这个 l n L ( w ) lnL(w) lnL(w))最大,也就是 1 n l n L ( w ) \frac{1}{n}lnL(w) n1lnL(w)最大。
上面得到的平均对数似然函数跟我们常常接触的损失函数是不是有点像,但是在损失函数我们中希望所求的参数让损失最小。那么我们将平均损失函数乘以 − 1 -1 1,此时希望所求的参数使似然函数的概率最大与让损失最小等价。 J ( w ) = − 1 n l n L ( w ) = − 1 n ∑ i = 1 n [ y i l n p ( x i ) + ( 1 − y i ) l n ( 1 − p ( x i ) ) ] J(w)=−\frac{1}{n}lnL(w)=−\frac{1}{n}\sum_{i=1}^n[y_ilnp(x_i)+(1−y_i)ln(1−p(x_i))] J(w)=n1lnL(w)=n1i=1n[yilnp(xi)+(1yi)ln(1p(xi))]所以在逻辑回归模型中,最大化似然函数等价于最小化对数似然损失函数.

5. LR面公式为什么用e?
在线性回归中,我们用模型的预测值 y ^ \hat{y} y^逼近样本的真实值 y y y,相当于让 w T x + b w^Tx+b wTx+b逼近 y y y。 但是在实际应用中,我们不总是用模型的预测值 y ^ \hat{y} y^逼近样本的真实值 y y y
对数线性回归就是其中一个例子。对数线性回归是让模型的预测值逼近 l n y lny lny而不是 y y y,相当于让 e w T x + b e^{w^Tx+b} ewTx+b逼近 y y y。 广义线性模型就是一个概括性的表示,它引入一个单调可微函数 g ( ⋅ ) g(\cdot) g(),也称为联系函数, y = g − 1 ( w T x + b ) y=g^{−1}(w^Tx+b) y=g1(wTx+b)
对于逻辑回归模型,联系函数选对数几率函数: y = 1 1 + e − z y=\frac{1}{1+e^{−z}} y=1+ez1 z = w T x + b z=w^Tx+b z=wTx+b带入上式,变形得到 l o g ( y 1 − y ) = w T x + b log(\frac{y}{1−y})=w^Tx+b log(1yy)=wTx+b这就是用线性回归模型的预测结果去逼近真实标记的对数几率。
进一步了解什么是几率?在周志华的机器学习里定义为事件发生与不发生的概率比值: o d d s = p 1 − p odds=\frac{p}{1−p} odds=1pp对数几率就是取几率的对数: l o g i t ( p ) = l o g p 1 − p logit(p)=log\frac{p}{1−p} logit(p)=log1pp逻辑回归是一种二分类模型,由条件概率分布P(Y|X) 表示,二项LR的条件概率如下: P ( Y = 1 ∣ x ) = = e w ⋅ x 1 + e w ⋅ x P(Y=1|x)==\frac{e^{w\cdot x}}{1+e^{w\cdot x}} P(Y=1x)==1+ewxewx P ( Y = 0 ∣ x ) = = 1 1 + e w ⋅ x P(Y=0|x)==\frac{1}{1+e^{w\cdot x}} P(Y=0x)==1+ewx1从概率的角度看,Y=1 的对数几率就 l o g P ( Y = 1 ∣ x ) 1 − P ( Y = 1 ∣ x ) = w ⋅ x \frac{logP(Y=1|x)}{1−P(Y=1|x)}=w\cdot x 1P(Y=1x)logP(Y=1x)=wx

6. L1-norm和L2-norm
其实稀疏的根本还是在于 L 0 − n o r m L_0-norm L0norm也就是直接统计参数不为0的个数作为规则项,但实际上却不好执行,于是引入了 L 1 − n o r m L_1-norm L1norm;而 L 1 − n o r m L_1-norm L1norm本质上是假设参数先验是服从 L a p l a c e Laplace Laplace分布的,而 L 2 − n o r m L_2-norm L2norm是假设参数先验为 G a u s s i a n Gaussian Gaussian分布。 但是 L 1 − n o r m L_1-norm L1norm的求解比较困难,可以用坐标轴下降法或是最小角回归法求解。
在这里插入图片描述在这里插入图片描述
7. 为什么逻辑回归比线性回归要好?
逻辑回归能够用于分类,不过其本质还是线性回归。它仅在线性回归的基础上,在特征到结果的映射中加入了一层sigmoid函数(非线性)映射,即先把特征线性求和,然后使用sigmoid函数来预测。
由于线性回归在整个实数域内敏感度一致,而分类范围,需要在 [ 0 , 1 ] [0,1] [0,1]之内。逻辑回归就是一种减小预测范围,将预测值限定为 [ 0 , 1 ] [0,1] [0,1]间的一种回归模型,逻辑曲线在 z = 0 z=0 z=0时,十分敏感,在 z &gt; 0 z&gt;0 z>0 z &lt; 0 z&lt;0 z<0处,都不敏感,将预测值限定为 ( 0 , 1 ) (0,1) (0,1)

8. 使用梯度下降法求解最优参数
在线性回归中,我们使用平方误差来判断模型的好坏,优化损失函数也就是找到使平方误差最小的参数。但是在逻辑回归中,损失函数不再使用平方误差。
对于二分类问题,把两种情况写到一起,损失函数为
C o s t ( h θ ( x ) , y ) = − y l o g ( h θ ( x ) ) − ( 1 − y ) l o g ( 1 − h θ ( x ) ) Cost(h_θ(x),y)=−ylog(hθ(x))−(1−y)log(1−h_θ(x)) Cost(hθ(x),y)=ylog(hθ(x))(1y)log(1hθ(x))

这里的hθ(x)hθ(x)就是sigmoid函数。
不考虑正则项,完整的损失函数为:
J ( θ ) = − 1 m ∑ i = 1 m [ y i l o g ( h θ ( x i ) ) + ( 1 − y i ) l o g ( 1 − h θ ( x i ) ) ] J(θ)=−\frac{1}{m}\sum_{i=1}^{m}[y_ilog(h_θ(x_i))+(1−y_i)log(1−h_θ(x_i))] J(θ)=m1i=1m[yilog(hθ(xi))+(1yi)log(1hθ(xi))]

J ( θ ) J(θ) J(θ)的梯度
∂ J ( θ ) ∂ θ = 1 m ∑ i = 1 m ( h θ ( x i ) − y i ) x i j \frac{∂J(θ)}{∂θ}=\frac{1}{m}\sum_{i=1}^{m}(h_θ(x_i)−y_i)x_{ij} θJ(θ)=m1i=1m(hθ(xi)yi)xij

更新公式:
θ : = θ − α m ∑ i = 1 m ( h θ ( x i ) − y i ) x i j θ := θ−\frac{α}{m}∑_{i=1}^m(h_θ(x_i)−y_i)x_{ij} θ:=θmαi=1m(hθ(xi)yi)xij

α α α就是学习率。
考虑正则项的损失函数:
J ( θ ) = − 1 m ∑ i = 1 m [ y i l o g ( h θ ( x i ) ) + ( 1 − y i ) l o g ( 1 − h θ ( x i ) ) ] + λ 2 m ∑ j = 1 n θ j 2 J(θ)=−\frac{1}{m}∑_{i=1}^m[y_ilog(h_θ(x_i))+(1−y_i)log(1−h_θ(x_i))]+\frac{λ}{2m}∑_{j=1}^nθ^2_j J(θ)=m1i=1m[yilog(hθ(xi))+(1yi)log(1hθ(xi))]+2mλj=1nθj2

这里再强调一下, L 2 L2 L2正则能够平滑损失函数,减少过拟合的可能。但是正则系数要选对,如果选得过大,或造成平滑过渡从而导致过拟合;如果选小了,小到与0差不多,那就相当于没有正则项,发生过拟合的可能性会增大。
对带正则项的损失求梯度:
上面损失函数的正则项使用 θ 1 θ_1 θ1开始的,因为 θ 0 θ_0 θ0表示的偏置项。偏置项不需要惩罚。 对于 θ 0 θ_0 θ0,没有正则项,
∂ J ( θ ) ∂ θ = 1 m ∑ i = 1 m ( h θ ( x i ) − y i ) x 0 i \frac{∂J(θ)}{∂θ}=\frac{1}{m}∑_{i=1}^m(h_θ(x_i)−y_i)x_0^i θJ(θ)=m1i=1m(hθ(xi)yi)x0i

对于 θ j , j &gt; 0 θ_j,j&gt;0 θjj>0
∂ J ( θ ) ∂ θ = 1 m ∑ i = 1 m ( h θ ( x i ) − y i ) x i j + λ m θ j \frac{∂J(θ)}{∂θ}=\frac{1}{m}∑_{i=1}{m}(h_θ(x_i)−y_i)x_{ij}+\frac{λ}{m}θ_j θJ(θ)=m1i=1m(hθ(xi)yi)xij+mλθj

参数更新的表达式:
对于 θ 0 θ_0 θ0,
θ 0 : = θ 0 − α m ∑ i = 1 m ( h θ ( x i ) − y i ) x 0 i θ_0:=θ_0−\frac{α}{m}∑_{i=1}^m(h_θ(x_i)−y_i)x^i_0 θ0:=θ0mαi=1m(hθ(xi)yi)x0i

对于 θ j , j &gt; 0 θj,j&gt;0 θjj>0
θ j = θ j − α m ∑ i = 1 m [ ( h θ ( x i ) − y i ) x i j ] + λ m θ j θ_j=θ_j−\frac{α}{m}∑_{i=1}^m[(h_θ(x_i)−y_i)x_{ij}]+\frac{λ}{m}θ_j θj=θjmαi=1m[(hθ(xi)yi)xij]+mλθj

9. LR 如何解决多分类问题
如果y不是在[0,1]中取值,而是在K个类别中取值,这时问题就变为一个多分类问题。有两种方式可以出处理该类问题:一种是我们对每个类别训练一个二元分类器(One-vs-all),当K个类别不是互斥的时候,比如用户会购买哪种品类,这种方法是合适的。如果K个类别是互斥的,即 y=i 的时候意味着 y 不能取其他的值,比如用户的年龄段,这种情况下 Softmax 回归更合适一些。Softmax 回归是直接对逻辑回归在多分类的推广,相应的模型也可以叫做多元逻辑回归(Multinomial Logistic Regression)。模型通过 softmax 函数来对概率建模,具体形式如下:
P ( y = i ∣ x , θ ) = e θ i T x ∑ j K e θ j T x P(y=i|x,θ)=\frac{e^{θ^T_i x}}{∑^K_je^{θ^T_j x}} P(y=ix,θ)=jKeθjTxeθiTx

而决策函数为: y ∗ = a r g m a x i P ( y = i ∣ x , θ ) y^∗=argmax_iP(y=i|x,θ) y=argmaxiP(y=ix,θ)
对应的损失函数为:
J ( θ ) = − 1 N ∑ i N ∑ j K 1 [ y i = j ] l o g e θ i T x ∑ e θ k T x J(θ)=−\frac{1}{N}∑_i^N∑_j^K1[y_i=j]log\frac{e^{θ^T_ix}}{∑e^{θ^T_kx}} J(θ)=N1iNjK1[yi=j]logeθkTxeθiTx

类似的,我们也可以通过梯度下降或其他高阶方法来求解该问题,这里不再赘述。

10. LR和SVM的区别
首先是两者的共同点:

  1. LR和SVM都是分类算法
  2. 如果不考虑核函数,LR和SVM都是线性分类算法,即分类决策面都是线性的
  3. LR和SVM都是有监督学习算法
  4. LR和SVM都是判别模型

模型作为统计学习的三要素之一(模型,策略,算法)
模型:学习什么样的模型,模型就是所要学习的条件概率分布或者说是决策函数,ps有监督学习和无监督学习都要训练一个模型,然后泛化应用
策略:按照什么样的准则学习或者选择最优的模型,包括损失函数和风险函数,损失函数是一次的好坏,风险函数是平均的好坏
常用的损失函数有0-1损失函数,平方损失函数,绝对值损失函数和对数损失函数,认为损失函数值越小,模型就越好
经验风险就是模型关于联合分布的期望损失,经验风险最小化(ERM)策略就认为经验风险最小的模型为最优模型,最大似然估计就是经验风险最小化的一个例子
结构风险最小化就等价于正则化,加入正则化项或者惩罚项,往往对训练数据和测试数据都有很好的预测(避免对于训练数据的过拟合问题,具有较好的泛化能力),贝叶斯估计中的最大后验概率估计就是结构风险最小化的例子
算法:也就是指学习模型的具体计算方法,统计学习通常归结为最优化问题,如何保证找到全局最优解,并使求解过程非常高效,就需要好的最优化算法
判别模型主要有:K近邻,感知机(SVM),决策树,逻辑斯蒂回归(LR),最大熵模型,提升方法(boost)和条件随机场
与判别模型对应的是生成模型,比如朴素贝叶斯,隐马尔可夫模型
两者的区别是生成模型由数据求得联合概率分布P(X, Y),然后求出条件概率分布P(Y|X)作为预测
而判别模型由数据直接求得决策函数f(x),或者条件概率分布P(Y|X)
判别模型的特点:直接面对预测,准确率高;可以简化学习问题,对数据进行各种程度的抽象,定义特征等
生成模型的特点:可以还原出联合概率密度;收敛速度快,当样本容量增加时也能很快的收敛;存在隐变量时,仍可以使用

两者的不同点:

  1. 损失函数的不同,逻辑回归采用的是log loss(对数损失函数),svm采用的是hinge loss(合页损失函数)
  2. 分类原理的不同,LR基于概率理论,通过极大似然估计的方法估计出参数的值,而SVM基于几何间隔最大化原理,认为存在最大几何间隔的分类面为最优分类面,从最大间隔出发,转化为求对变量w和b的凸二次规划问题
  3. 由于分类原理的不同,也导致了LR是所有样本都有影响,而SVM只是少量样本有影响的(支持向量),在支持向量外添加样本点是没有影响的
  4. 正因为LR受数据影响较大,所以在数据不同类别时,要先对数据做balancing
  5. 同样的,由于SVM依赖数据表达的距离测度,所以要先对数据做normalization标准化
  6. 对于线性不可分的情况,SVM的核函数可以帮助将低维不可分的数据转换到高维,变成线性可分的,而LR很少用到核函数(并不是没有。。)假设我们在LR里也运用核函数的原理,那么每个样本点都必须参与核计算,这带来的计算复杂度是相当高的。所以,在具体应用时,LR很少运用核函数机制。​
  7. SVM的损失函数就自带正则(损失函数中的1/2||w||^2项),这就是为什么SVM是结构风险最小化算法的原因,而LR必须另外在损失函数上添加正则化

关于LR和SVM的选择:

  1. 如果Feature的数量很大,跟样本数量差不多,这时候选用LR或者是Linear Kernel的SVM
  2. 如果Feature的数量比较小,样本数量一般,不算大也不算小,选用SVM+Gaussian Kernel
  3. 如果Feature的数量比较小,而样本数量很多,需要手工添加一些feature变成第一种情况

11. LR的优化方法
逻辑回归本身是可以用公式求解的,但是因为需要求逆的复杂度太高,所以才引入了梯度下降算法。
一阶方法:梯度下降、随机梯度下降、mini 随机梯度下降降法。随机梯度下降不但速度上比原始梯度下降要快,局部最优化问题时可以一定程度上抑制局部最优解的发生。
二阶方法:牛顿法、拟牛顿法:
牛顿法其实就是通过切线与x轴的交点不断更新切线的位置,直到达到曲线与x轴的交点得到方程解。在实际应用中我们因为常常要求解凸优化问题,也就是要求解函数一阶导数为0的位置,而牛顿法恰好可以给这种问题提供解决方法。实际应用中牛顿法首先选择一个点作为起始点,并进行一次二阶泰勒展开得到导数为0的点进行一个更新,直到达到要求,这时牛顿法也就成了二阶求解问题,比一阶方法更快。我们常常看到的x通常为一个多维向量,这也就引出了Hessian矩阵的概念(就是x的二阶导数矩阵)。缺点:牛顿法是定长迭代,没有步长因子,所以不能保证函数值稳定的下降,严重时甚至会失败。还有就是牛顿法要求函数一定是二阶可导的。而且计算Hessian矩阵的逆复杂度很大。
拟牛顿法: 不用二阶偏导而是构造出Hessian矩阵的近似正定对称矩阵的方法称为拟牛顿法。拟牛顿法的思路就是用一个特别的表达形式来模拟Hessian矩阵或者是他的逆使得表达式满足拟牛顿条件。主要有DFP法(逼近Hession的逆)、BFGS(直接逼近Hession矩阵)、 L-BFGS(可以减少BFGS所需的存储空间)

12.一元线性回归的基本假设有?

  1. 随机误差项是一个期望值或平均值为0的随机变量;
  2. 对于解释变量的所有观测值,随机误差项有相同的方差;
  3. 随机误差项彼此不相关;
  4. 解释变量是确定性变量,不是随机变量,与随机误差项彼此之间相互独立;
  5. 解释变量之间不存在精确的(完全的)线性关系,即解释变量的样本观测值矩阵是满秩矩阵;
  6. 随机误差项服从正态分布
    违背基本假设的计量经济学模型还是可以估计的,只是不能使用普通最小二乘法进行估计。
    当存在异方差时,普通最小二乘法估计存在以下问题: 参数估计值虽然是无偏的,但不是最小方差线性无偏估计。
    杜宾-瓦特森(DW)检验,计量经济,统计分析中常用的一种检验序列一阶 自相关 最常用的方法。

13. 线性回归中的多重共线性问题
所谓多重共线性(Multicollinearity)是指线性回归模型中的解释变量之间由于存在精确相关关系或高度相关关系而使模型估计失真或难以估计准确。影响
7. 完全共线性下参数估计量不存在
8. 近似共线性下OLS估计量非有效
多重共线性使参数估计值的方差增大,1/(1-r2)为方差膨胀因子(Variance Inflation Factor, VIF)
9. 参数估计量经济含义不合理
10. 变量的显著性检验失去意义,可能将重要的解释变量排除在模型之外
11. 模型的预测功能失效。变大的方差容易使区间预测的“区间”变大,使预测失去意义。

14. 关于逻辑回归,连续特征离散化的好处
在工业界,很少直接将连续值作为特征喂给逻辑回归模型,而是将连续特征离散化为一系列0、1特征交给逻辑回归模型,这样做的优势有以下几点:

  1. 稀疏向量内积乘法运算速度快,计算结果方便存储,容易scalable(扩展)。
  2. 离散化后的特征对异常数据有很强的鲁棒性:比如一个特征是年龄>30是1,否则0。如果特征没有离散化,一个异常数据“年龄300岁”会给模型造成很大的干扰。
  3. 逻辑回归属于广义线性模型,表达能力受限;单变量离散化为N个后,每个变量有单独的权重,相当于为模型引入了非线性,能够提升模型表达能力,加大拟合。
  4. 离散化后可以进行特征交叉,由M+N个变量变为M*N个变量,进一步引入非线性,提升表达能力。
  5. 特征离散化后,模型会更稳定,比如如果对用户年龄离散化,20-30作为一个区间,不会因为一个用户年龄长了一岁就变成一个完全不同的人。当然处于区间相邻处的样本会刚好相反,所以怎么划分区间是门学问。
    大概的理解:1)计算简单;2)简化模型;3)增强模型的泛化能力,不易受噪声的影响。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值