python朴素贝叶斯调参_面试

ML & DM

集成学习 模型融合 ensemble

EM

EM算法的目标是找出有隐性变量的概率模型的最大可能性解,它分为两个过程E-step和M-step,E-step通过最初假设或上一步得出的模型参数得到后验概率,M-step重新算出模型的参数,重复这个过程直到目标函数值收敛。

PageRank

使用了马尔可夫模型,用图模型表示各个网页,并且网页转移符合马尔可夫链 。简单说来就是求Markov转移概率矩阵,通过迭代求该矩阵的最大特征值 只是为了收敛和稳定, 加入了阻尼因子. .

http://blog.jobbole.com/71431/

[ 转载 ]PageRank算法简介及Map-Reduce实现

KNN

1.优点:

1)简单,易于理解,易于实现,无需估计参数,无需训练。

2)作为非线性分类器,可以区分非线性因素

3)特别适合于多分类问题(multi-modal,对象具有多个类别标签), kNN比SVM的表现要好。

2.缺点:

1)该算法在分类时有个主要的不足是,当样本不平衡时,如一个类的样本容量很大,而其他类样本容量很小时,有可能导致当输入一个新样本时,该样本的K个邻居中大容量类的样本占多数。

2)该方法的另一个不足之处是计算量较大,因为对每一个待分类的文本都要计算它到全体已知样本的距离,才能求得它的K个最近邻点。

3)可理解性差,无法给出像决策树那样的规则。

4)类别评分不是规则化的。

3.改进策略:

针对以上算法的不足,算法的改进方向主要分成了分类效率和分类效果两方面。

分类效率:事先对样本属性进行约简,删除对分类结果影响较小的属性,快速的得出待分类样本的类别。该算法比较适用于样本容量比较大的类域的自动分类,而那些样本容量较小的类域采用这种算法比较容易产生误分。

分类效果:采用权值的方法(和该样本距离小的邻居权值大)来改进,

KNN树?

决策树(ID3与C4.5区别,剪枝),NB(推导),

LR(推导,梯度下降,牛顿法,拟牛顿法),

SVM(推导,核函数,与LR的区别),

SVM与LR的区别

两种方法都是常见的分类算法,从目标函数来看,区别在于逻辑回归采用的是logistical loss,svm采用的是hinge loss(折叶损失).这两个损失函数的目的都是增加对分类影响较大的数据点的权重,减少与分类关系较小的数据点的权重.SVM的处理方法是只考虑support vectors,也就是和分类最相关的少数点,去学习分类器.而逻辑回归要考虑所有的数据。通过非线性映射,大大减小了离分类平面较远的点的权重,相对提升了与分类最相关的数据点的权重.两者的根本目的都是一样的.此外,根据需要,两个方法都可以增加不同的正则化项,如l1,l2等等.所以在很多实验中,两种算法的结果是很接近的.

但是逻辑回归相对来说模型更简单,好理解,实现起来,特别是大规模线性分类时比较方便.而SVM的理解和优化相对来说复杂一些.但是SVM的理论基础更加牢固,有一套结构化风险最小化的理论基础,虽然一般使用的人不太会去关注.还有很重要的一点,SVM转化为对偶问题后,分类只需要计算与少数几个支持向量的距离,这个在进行复杂核函数计算时优势很明显,能够大大简化模型和计算

svm 更多的属于非参数模型,而logistic regression 是参数模型,本质不同.其区别就可以参考参数模型和非参模型的区别就好了.

logic 能做的 svm能做,但可能在准确率上有问题,svm能做的logic有的做不了。

LR需要调参,而朴素贝叶斯不需要。

EnsembleLearning(RF,GBDT,XGBoost原理,区别,实现)

聚类(kmeans的原理,缺点,改进)

CF(itemCF,userCF)

文本处理(tf-idf)

word2vec

相似度/距离

其他VC维

VC维(Vapnik-Chervonenkis Dimension)的概念是为了研究学习过程一致收敛的速度和推广性,

由统计学理论定义的有关函数集学习性能的一个重要指标。

传统的定义是:对一个指示函数集,如果存在H个样本能够被函数集中的函数按所有可能的2的H次方种形式分开,

则称函数集能够把H个样本打散;函数集的VC维就是它能打散的最大样本数目H。

若对任意数目的样本都有函数能将它们打散,则函数集的VC维是无穷大,

有界实函数的VC维可以通过用一定的阈值将它转化成指示函数来定义。

VC维反映了函数集的学习能力,VC维越大则学习机器越复杂(容量越大),

遗憾的是,目前尚没有通用的关于任意函数集VC维计算的理论,只对一些特殊的函数集知道其VC维。

例如在N维空间中线性分类器和线性实函数的VC维是N+1。

EM算法

KL距离

svm 对偶

SVM里面的对偶就是约束规划里面的对偶,因为SVM的求解就是约束规划问题,最优化里面比较简单的是无约束规划问题,约束规划问题要转化为无约束问题,一般是拉格朗日乘子法,同时整个问题需要满足KKT条件,转化以后就是一个先求max后求min的问题,它和先求min后求max是对偶问题,一半来说对偶问题的解就是原问题的解,不过有特殊情况,这个对SVM可以不考虑!我的理解就是这样,希望能帮到你

关联规则 /关联分析 Apriori

关联分析中的极大频繁项集;FP增长算法

Apriori算法是一种关联规则的基本算法,是挖掘关联规则的频繁项集算法,也称“购物篮分析”算法,是“啤酒与尿布”案例的代表。

算法步骤:

1)依据支持度找出所有频繁项集。

Apriori算法是发现频繁项集的一种方法。Apriori算法的两个输入参数分别是最小支持度和数据集。该算法首先会生成所有单个元素的项集列表。接着扫描数据集来查看哪些项集满足最小支持度要求,那些不满足最小支持度的集合会被去掉。然后,对剩下来的集合进行组合以生成包含两个元素的项集。接下来,再重新扫描交易记录,去掉不满足最小支持度的项集。该过程重复进行直到所有项集都被去掉。为了生成所有频繁项集,使用了递归的方法。

2)依据置信度产生关联规则。

关联分析的目标包括两项:发现频繁项集和发现关联规则。首先需要找到频繁项集,然后才能获得关联规则(计算关联规则的可信度需要用到频繁项集的支持度)。

频繁项集(frequent item sets)是经常出现在一块儿的物品的集合。

关联规则(association rules)暗示两种物品之间可能存在很强的关系。

支持度(support)被定义为数据集中包含该项集的记录所占的比例。

可信度或置信度(confidence)是针对关联规则来定义的。规则{尿布}➞{啤酒}的可信度被定义为”支持度({尿布,啤酒})/支持度({尿布})”,由于{尿布,啤酒}的支持度为3/5,尿布的支持度为4/5,所以”尿布➞啤酒”的可信度为3/4。这意味着对于包含”尿布”的所有记录,我们的规则对其中75%的记录都适用。

是经典的关联规则数据挖掘算法。

1.优点:

1)简单、易理解。

2)数据要求低。

2.缺点:

1)在每一步产生候选项目集时循环产生的组合过多,没有排除不应该参与组合的元素。

2)每次计算项集的支持度时,都对数据库中的全部记录进行了一遍扫描比较,如果是一个大型的数据库时,这种扫描会大大增加计算机的I/O开销。

3.改进:

特殊到一般:先发现极大频繁项集,其子集一定满足:

从宽度优先到深度优先。

1)利用建立临时数据库的方法来提高Apriori算法的效率。

2)Fp-tree 算法。以树形的形式来展示、表达数据的形态;可以理解为水在不同河流分支的流动过程。

3)事务数据集列表使用垂直数据分布。水平数据布局改为垂直数据布局,压缩TID列表防止内存装不下

特征提取

排序特征、离散特征、计数特征、one hot、交叉特征

特征选择

线性分类器与非线性分类器的区别及优势

特征比数据量还大时,选择什么样的分类器

对于维度很高的特征,你是选择线性分类器还是非线性分类器。

对于维度很低的特征,你是选择线性分类器还是非线性分类器。

经验风险最小化与结构风险最小化

结构风险 = 经验风险+正则化项

什么是过拟合?原因?怎么解决?

优化方法BFGS推导

LDA

HMM

CRF

L1,L2正则区别,L1为什么能保证稀疏,L1,L2哪个效果好? 正则化 范数

L1范数(L1 norm)是指向量中各个元素绝对值之和,也有个美称叫“稀疏规则算子”(Lasso regularization)。

比如 向量A=[1,-1,3], 那么A的L1范数为 |1|+|-1|+|3|.

简单总结一下就是:

L1范数: 为x向量各个元素绝对值之和。

L2范数: 为x向量各个元素平方和的

Lp范数: 为x向量各个元素绝对值p次方和.

在支持向量机学习过程中,L1范数实际是一种对于成本函数求解最优的过程,因此,L1范数正则化通过向成本函数中添加L1范数,使得学习得到的结果满足稀疏化,从而方便人类提取特征。

L1为什么能保证稀疏: L1函数是一次的,其导数恒定不变,在零点附近导数较大导致取得最优解时很多特征会沿着剃度下降到0,但是L2函数是二次函数,其导数在零点附近接近于0,因此梯度下降是一般不会下降到0点

L1范数可以使权值稀疏,方便特征提取。

L2范数可以防止过拟合,提升模型的泛化能力。

L1,L2哪个效果好?:看你需要干嘛 L1 用于1)特征选择(Feature Selection)并使得模型更好解释,且简化模型运输

L2范数可以防止过拟合,提升模型的泛化能力。L2对较大的W系数有更大的惩罚(平方)因此一般泛化能力效果更好更常见。L2正则化会让系数的取值变得平均。对于关联特征,这意味着他们能够获得更相近的对应系数。还是以Y=X1+X2为例,假设X1和X2具有很强的关联,如果用L1正则化,不论学到的模型是Y=X1+X2还是Y=2X1,惩罚都是一样的,都是2alpha。但是对于L2来说,第一个模型的惩罚项是2alpha,但第二个模型的是4*alpha。可以看出,系数之和为常数时,各系数相等时惩罚是最小的,所以才有了L2会让各个系数趋于相同的特点。

为什么加上这么一个项就可以了呢,我们先来引入奥卡姆剃刀原理:在所有可能选择的模型中,能够很好地解释已知数据并且十分简单的模型才是最好的模型,也就是应该选择的模型。 现在,让我们通过一张图来看下这项是怎l2 norm 使得权值衰减,并防止某些过大的W,(用最少的w去拟合)——奥卡姆剃刀

(from prml)

Paste_Image.png

正则化项本质上是一种先验信息,整个最优化问题从贝叶斯观点来看是一种贝叶斯最大后验估计,其中正则化项对应后验估计中的先验信息,损失函数对应后验估计中的似然函数,两者的乘积即对应贝叶斯最大后验估计的形式,如果你将这个贝叶斯最大后验估计的形式取对数,即进行极大似然估计,你就会发现问题立马变成了损失函数+正则化项的最优化问题形式。

(1) 避免出现过拟合(over-fitting)。经验风险最小化 + 正则化项 = 结构风险最小化。

(2) 从模型求解上看,正则化提供了一种唯一解的可能。光用最小二乘拟合可能出现无数组解,加个L1或L2正则化项能有唯一解。

word2vec原理,怎么实现的,损失函数是什么,有没看过源码?

把词当做特征,那么Word2vec就可以把特征映射到 K 维向量空间,可以为文本数据寻求更加深层次的特征表示 。其基本思想是 通过训练将每个词映射成 K 维实数向量(K 一般为模型中的超参数),通过词之间的距离(比如 cosine 相似度、欧氏距离等)来判断它们之间的语义相似度.其采用一个 三层的神经网络 ,输入层-隐层-输出层。有个核心的技术是 根据词频用Huffman编码 ,使得所有词频相似的词隐藏层激活的内容基本一致,出现频率越高的词语,他们激活的隐藏层数目越少,这样有效的降低了计算的复杂度。这个三层神经网络本身是 对语言模型进行建模 ,但也同时 获得一种单词在向量空间上的表示 ,而这个副作用才是Word2vec的真正目标。

损失函数:softmax 交叉熵损失

这里写图片描述

这里写图片描述

(这里问了很久,比较深入)

xgboost和gbdt区别

xgb比gbdt好的地方:

二阶泰勒展开

节点分数惩罚

增益计算不同,gbdt是gini,xgb是优化推导公式

1.正则化

xgboost在代价函数里加入了正则项,用于控制模型的复杂度。正则项里包含了树的叶子节点个数、每个叶子节点上输出的score的L2模的平方和。从Bias-variance tradeoff角度来讲,正则项降低了模型的variance,使学习出来的模型更加简单,防止过拟合,这也是xgboost优于传统GBDT的一个特性。

2.并行处理

xgboost工具支持并行。boosting不是一种串行的结构吗?怎么并行的?注意xgboost的并行不是tree粒度的并行,xgboost也是一次迭代完才能进行下一次迭代的(第t次迭代的代价函数里包含了前面t-1次迭代的预测值)。xgboost的并行是在特征粒度上的。我们知道,决策树的学习最耗时的一个步骤就是对特征的值进行排序(因为要确定最佳分割点),xgboost在训练之前,预先对数据进行了排序,然后保存为block结构,后面的迭代中重复地使用这个结构,大大减小计算量。这个block结构也使得并行成为了可能,在进行节点的分裂时,需要计算每个特征的增益,最终选增益最大的那个特征去做分裂,那么各个特征的增益计算就可以开多线程进行。

3.灵活性

xgboost支持用户自定义目标函数和评估函数,只要目标函数二阶可导就行。

4.缺失值的处理

对于特征的值有缺失的样本,xgboost可以自动学习出它的分裂方向

5.剪枝

XGBoost 先从顶到底建立所有可以建立的子树,再从底到顶反向进行剪枝。比起GBM,这样不容易陷入局部最优解

6.内置交叉验证

xgb.cv() 是不是感觉很方便

7.可以自定义目标函数评价函数,方便特殊问题

描述一下mapreduce的过程

stacking bagging boosting 介绍,与偏差方差关系

hadoop,spark,分布式计算,sql

关系型数据库,非关系型数据库,

当前主流的关系型数据库有Oracle、DB2、Microsoft SQL Server、Microsoft Access、MySQL等。

非关系型数据库有 NoSql、Cloudant。

在关系型数据库中,导致性能欠佳的最主要因素是多表的关联查询,以及复杂的数据分析类型的复杂SQL报表查询。为了保证数据库的ACID特性,我们必须尽量按照其要求的范式进行设计,关系型数据库中的表都是存储一些格式化的数据结构,每个元组字段的组成都一样,即使不是每个元组都需要所有的字段,但数据库会为每个元组分配所有的字段,这样的结构可以便于表与表之间进行连接等操作,但从另一个角度来说它也是关系型数据库性能瓶颈的一个因素。

非关系型数据库提出另一种理念,他以键值对存储,且结构不固定,每一个元组可以有不一样的字段,每个元组可以根据需要增加一些自己的键值对,这样就不会局限于固定的结构,可以减少一些时间和空间的开销。使用这种方式,用户可以根据需要去添加自己需要的字段,这样,为了获取用户的不同信息,不需要像关系型数据库中,要对多表进行关联查询。仅需要根据id取出相应的value就可以完成查询。但非关系型数据库由于很少的约束,他也不能够提供想SQL所提供的where这种对于字段属性值情况的查询。并且难以体现设计的完整性。他只适合存储一些较为简单的数据,对于需要进行较复杂查询的数据,SQL数据库显得更为合适。

伪代码实现:LR、梯度下降、最小二乘、KNN、Kmeans;

基本知识:

监督与非监督区别;

监督:输入的数据有明确的标识,可建立模型做预测,多用于分类和回归。

非监督:数据并不被特别标识,需要建立模型得出数据的内在结构,多用于聚类。

生成模型和判别模型区别 像贝叶斯,lda 、pLSA 等就是生成模型,计算过概率分布之类的

生成模型:由数据学习联合概率密度分布P(X,Y),求出条件概率分布P(Y|X)作为预测的模型,即生成模型P(Y|X)=P(X,Y)/P(X),再利用它分类。

判别模型:由数据直接学习决策函数y=f(x)或者条件概率分布P(Y|X)作为预测的模型。基本思想是有限样本条件下建立判别函数,不考虑样本的产生模型,直接研究预测模型。

典型的判别模型包括K近邻、感知机、决策树、支持向量机等。

由生成模型可以得到判别模型,但由判别模型得不到生成模型。生成模型学习联合概率分布P(X,Y),而判别模型学习条件概率分布P(Y|X)。

算法的优缺点以及相应解决方案:k-means, KNN, apriori

算法原理:LR、KNN、k-means、apriori、ID3(C45,CART)、SVM、神经网络,协同过滤,em算法

from bryan

常见问题:

1)svm算法的原理、如何组织训练数据、如何调节惩罚因子、如何防止过拟合、svm的泛化能力、增量学习

2)神经网络参数相关。比如,参数的范围?如何防止过拟合?隐藏层点的个数多了怎样少了怎样?什么情况下参数是负数?

3)为什么要用逻辑回归?LR CTR

从训练角度来说:首先LR的分布式优化SGD发展比较成熟,你线上训练肯定要用到许多机器,算法要可分布。

从在线预测CTR的角度来说:LR的预测也可以在特征级别并行,因为他是一个线性模型,这有什么好处呢?比如说你预测一次点击行为用到十亿个特征,其中9亿个特征可能更新很不频繁,或者对更新不敏感,你可能为了性能要做缓存。对于LR来说,你可以把这9亿个特征和权重的点乘缓存下来。这样每次计算的时候就少了很多内存搬运和CPU时间消耗。如果是决策树做这种优化就困难很多。比如说淘宝,商品的特征更新是很慢的,或者说一时半会不更新也不至于怎么样,那你缓存下来,用户玩命刷淘宝首页的时候每次实际计算的是那一亿对更新比较敏感的特征的数值。

当然天下没有免费的午餐,LR的缺点就是模型本身的表达能力很弱,需要构造非常棒的特征组合才能达到好的效果,好消息是这只需要堆人力就好了。而且缓存的机制设计也有些复杂,需要一些toolkit+对模型和业务的理解才能把性能优化到很好。

另外gbdt 当然是好的,但点击率预估的特征需要经过一些tricky的处理后才能用到上面,也会吃掉更多的机器资源。

4)决策树算法是按什么来进行分类的?

5) 朴素贝叶斯公式

p(y|x)=p(x|y)p(y)/p(x) ,p(x)=∑k (y=ck) ∏P(xi|y=ck)

也即 p(x)p(y|x)=p(x|y)p(y)

实质是根据先验概率分布 P(y) 和条件概率分布P(X|Y),学习到联合概率分布P(X,Y) 然后得到P(Y|X) 。是一种生成模型。

期望风险最小化 f(x) = argmaxP(y=ck|X=x)

极大似然估计

学习过程 1. 先学先验概率分布 p(y=ck) 2. 再学给定某分类ck下的条件概率p(xj=aj | y=ck)

拉普拉斯平滑

避免了0概率问题(即样本很少时如果某个量x,在观察样本库(训练集)中没有出现过,会导致整个实例的概率结果是0),而且对于文本训练计算整个文档的概率如果一个词为0会导致整个文本概率为0,不合理!,分子和分母都分别加上一个常数,

Paste_Image.png

讲em算法

7)svm中rbf核函数与高斯和函数的比较

8)说一下SVM的实现和运用过程

9)谈谈DNN

10)简单说说决策树分析

推荐系统中基于svd方法

https://zhuanlan.zhihu.com/p/25801478

特征值分解是一个提取矩阵特征很不错的方法,但是它只是对方阵而言的,在现实的世界中,我们看到的大部分矩阵都不是方阵,奇异值分解是一个能适用于任意的矩阵的一种分解的方法:

Paste_Image.png

Paste_Image.png

奇异值:奇异值往往对应着矩阵中隐含的重要信息,且重要性和奇异值大小正相关。每个矩阵!都可以表示为一系列秩为1的“小矩阵”之和,而奇异值则衡量了这些“小矩阵”对于的权重。用于PCA SVD,得到三个矩阵的物理意义,并实现压缩

对物品进行推荐,某些用户买了某些东西,要来算出,物品跟物品之间的相识度,这是很常见的推荐问题,用 SVD 算法,在 python中numpy 的 linalg 可以计算矩阵的 SVD。分解完矩阵就可以用距离算法或者其他,可以求出相识性。

2.SVD应用于推荐系统

数据集中行代表用户user,列代表物品item,其中的值代表用户对物品的打分。基于SVD的优势在于:用户的评分数据是稀疏矩阵,可以用SVD将原始数据映射到低维空间中,然后计算物品item之间的相似度,可以节省计算资源。

整体思路:先找到用户没有评分的物品,然后再经过SVD“压缩”后的低维空间中,计算未评分物品与其他物品的相似性,得到一个预测打分,再对这些物品的评分从高到低进行排序,返回前N个物品推荐给用户。

具体代码如下,主要分为5部分:

第1部分:加载测试数据集;

第2部分:定义三种计算相似度的方法(余弦、欧式、皮尔逊)

第3部分:通过计算奇异值平方和的百分比来确定将数据降到多少维才合适,返回需要降到的维度;

第4部分:在已经降维的数据中,基于SVD得到的相似度对用户未打分的物品进行评分预测,返回未打分物品的预测评分值;

第5部分:产生前N个评分值高的物品,返回物品编号以及预测评分值。

优势在于:用户的评分数据是稀疏矩阵,可以用SVD将数据映射到低维空间,然后计算低维空间中的item之间的相似度,对用户未评分的item进行评分预测,最后将预测评分高的item推荐给用户。

12)SVM有哪些优势,(x,y,z)三个特征如何用径向基核函数抽取第四维特征

13)userCF和ItemCF在实际当中如何使用,提供具体操作,以及它们的优势(推荐系统)

14)如何用Logic regression建立一个广告点击次数预测模型

15)举一个适合采用层次分析法的例子

随机森林的学习过程

随机森林中的每一棵树是如何学习的

随机森林学习算法中CART树的基尼指数是什么

27)支持向量机、图模型、波尔茨曼机,内存压缩、红黑树、并行度

28) 如何搭建一个推荐平台,给出具体的想法,

29) 实现一个中文输入法

30) k-meanshift的机制,能不能用伪码实现

31)实现最小二乘法。

经常会问到的问题,经典算法推导(加分项),原理,各个损失函数之间区别,使用场景,如何并行化,有哪些关键参数比如LR,SVM,RF,KNN,EM,Adaboost,PageRank,GBDT,Xgboost,HMM,DNN,推荐算法,聚类算法,等等机器学习领域的算法,这些基本都会被问到

XGB和GBDT区别与联系也会经常问到:https://www.zhihu.com/question/41354392/answer/128008021?group_id=773629156532445184

哪些优化方法,随机梯度下降,牛顿拟牛顿原理生成模型,判别模型线性分类和非线性分类各有哪些模型SVM核技巧原理,如何选择核函数特征选择方法有哪些(能说出来10种以上加分)常见融合框架原理,优缺点,bagging,stacking,boosting,为什么融合能提升效果信息熵和基尼指数的关系(信息熵在x=1处一阶泰勒展开就是基尼指数)如何克服过拟合,欠拟合L0,L1,L2正则化(如果能推导绝对是加分项,一般人最多能画个等高线,L0是NP问题)

模型的稳定性

越简单越稳定

cv的方差作为稳定性评估

t检验 卡方检验

单样本T检验是检验某个变量的总体均值和某指定值之间是否存在显著差异。T检验的前提是样本总体服从

正态分布。

卡方拟合性检验是检验单个多项分类名义型变量各分类间的实际观测次数与理论次数之间是否一致的问题

,其零假设是观测次数与理论次数之间无差异。

语言

Python类继承,内存管理

python 提高运行效率的一些方法

推荐系统的一些

SVD SVD++

其他

Java垃圾回收

TCP、HTTP、socket的区别

五层协议及对应层的协议,TCP/UDP区别,IP地址子网掩码网络号那些会计算,TCp的拥塞控制,TCP的三次握手四次释放,http/https的区别

八大排序(能在五分钟内手写,快排,归并,堆比较常见),数组,字符串(最大子串之类的),二叉树(二叉树遍历,递归非递归5分钟内手写),图(不太常见,深度优先广度优先得懂)

数据挖掘在游戏应用

408

简述数据库操作的步骤

建立数据库连接、打开数据库连接、建立数据库命令、运行数据库命令、保存数据库命令、关闭数据库连接。

概率论的知识

对深度学习的了解和理解

看过的书籍

推荐系统实战、数学之美、机器学习实战、机器学习、统计学习方法、数据挖掘导论

课程

blog

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值