• 3(3).线性分类之logistic regression(基于经验风险最小化)


     

    线性回归不仅可以用于回归任务,还可以用于分类任务。

    一、逻辑回归

    1.二分类模型

    (1)给定数据集$D={(x_1,y_1),(x_2,y_2),...,(x_N,y_N)}$

    考虑带$wx+b$的取值是连续的,因此它不能拟合离散变量。可以考虑用它来拟合条件概率$p(y=1|x)$,因为概率的取值也是连续的;

    但是对于$w$不等于0向量,$wx+b$取值是从(负无穷,正无穷),不符合概率取值$0~1$,因此,考虑采用广义线性模型,最理想的是单位阶跃函数:

    但是阶跃函数不满足单调可微的性质,不能直接用作$g$,对数几率函数(logistic function)就是这样的一个替代函数:$p(y=1|x)=frac{1}{1+e^{-z}}$,$z=wx+b$

    这样的模型称为对数几率回归模型。

    (2)由于$p(y=0|x)=1-p(y=1|x)$,则有:$lnfrac{P(y=1|x)}{P(y=0|x)}=z=wx+b$

    比值$frac{P(y=1|x)}{P(y=0|x)}$表示样本为正例的可能性比上反例的可能性,称作几率(odd),几率反映了样本作为正例的相对可能性。几率的对数称作对数几率(log odds,也称作logis) 

    对数几率回归就是用线性回归模型的预测结果去逼近真实标记的对数几率。

    (3)虽然对数几率回归名字带有回归,但是它是一种分类的学习方法,其优点:

    • 直接对分类的可能性进行建模,无需事先假设数据分布,这就避免了因为假设分布不准确带来的问题。
    • 不仅预测出来类别,还得到了近似概率的预测,这对许多需要利用概率辅助决策的任务有用。
    • 对数函数是任意阶可导的凸函数,有很好的数学性质,很多数值优化算法都能直接用于求取最优解。

    2.参数估计

    (1)给定数据集$D={(X_1,y_1),(X_2,y_2),...,(X_N,y_N)}$,可以用极大似然估计法估计模型参数,从而得出模型。

    令:$w=(w_1,w_2,...,w_n,b)^T$,$x=(x_1,x_2,...,x_n,1)^T$

    令:$p(y=1|x)=sigma(x)=frac{exp(wx)}{1+exp(wx)}$

    $p(y=0|x)=1-sigma(x)$

    对数似然函数为:

     (2)由于$sigma(x)=frac{exp(wx)}{1+exp(wx)}$,因此:

     则需要求解最优化问题:

     最终 logistic 回归模型为:

    (3)logistic回归的最优化问题,通常用梯度下降法或者牛顿法来求解

    3.多分类问题

    (1)可以推广二分类的logistic回归模型到多分类问题。

    (2)设离散型随机变量y的取值集合为:{1,2,...,K},则多元logistic回归模型为:

     其参数估计方法类似二项 logistic 回归模型。

    三、面试问题

    1.LR为什么使用sigmoid函数作为激活函数?其他函数不行吗?

    答:因为作为广义线性模型(GLM)中的一类,逻辑回归的连接函数的 canonical 形式就是 sigmoid函数(具体解释看这里)sigmoid函数由指数族分布,加上二项分布导出来的。

    逻辑回归是在线性回归的基础上加了一个 Sigmoid 函数(非线性)映射,使得逻辑回归称为了一个优秀的分类算法。本质上来说,两者都属于广义线性模型,但他们两个要解决的问题不一样,逻辑回归解决的是分类问题,输出的是离散值,线性回归解决的是回归问题,输出的连续值。

    Sigmoid 函数到底起了什么作用:

    • 线性回归是在实数域范围内进行预测,而分类范围则需要在 [0,1],逻辑回归减少了预测范围;
    • 线性回归在实数域上敏感度一致,而逻辑回归在 0 附近敏感,在远离 0 点位置不敏感,这个的好处就是模型更加关注分类边界,可以增加模型的鲁棒性。

    2.LR为什么要使用极大似然函数作为损失函数?

    损失函数一般有四种,平方损失函数,对数损失函数,HingeLoss0-1损失函数,绝对值损失函数。将极大似然函数取对数以后等同于对数损失函数。在逻辑回归这个模型下,对数损失函数的训练求解参数的速度是比较快的。至于原因大家可以求出这个式子的梯度更新

    这个式子的更新速度只和$x_j^i$,$y^i$相关。和sigmod函数本身的梯度是无关的。这样更新的速度是可以自始至终都比较的稳定。

    3.那为什么不选平方损失函数的呢?

    其一是因为如果你使用平方损失函数,你会发现梯度更新的速度和sigmod函数本身的梯度是很相关的。sigmod函数在它在定义域内的梯度都不大于0.25。这样训练会非常的慢。

    4.LR中若标签为+1和-1,损失函数如何推导?

    5.如果有很多的特征高度相关或者说有一个特征重复了100遍,会造成怎样的影响?

    • 先说结论,如果在损失函数最终收敛的情况下,其实就算有很多特征高度相关也不会影响分类器的效果。
    • 但是对特征本身来说的话,假设只有一个特征,在不考虑采样的情况下,你现在将它重复100遍。训练以后完以后,数据还是这么多,但是这个特征本身重复了100遍,实质上将原来的特征分成了100份,每一个特征都是原来特征权重值的百分之一。
    • 如果在随机采样的情况下,其实训练收敛完以后,还是可以认为这100个特征和原来那一个特征扮演的效果一样,只是可能中间很多特征的值正负相消了。

    6.为什么我们还是会在训练的过程当中将高度相关的特征去掉?

    • 去掉高度相关的特征会让模型的可解释性更好
    • 可以大大提高训练的速度。如果模型当中有很多特征高度相关的话,就算损失函数本身收敛了,但实际上参数是没有收敛的,这样会拉低训练的速度。其次是特征多了,本身就会增大训练的时间。

    7.LR可以用核么?可以怎么用?l1和l2正则项是啥?lr加l1还是l2好?加哪个可以用核

    (加l2正则项,和svm类似,加l2正则项可以用核方便处理)

    区别:SVM如果不用核函数,也得像逻辑回归一样,在映射后的高维空间显示的定义非线性映射函数Φ,而引入了核函数之后,可以在低维空间做完点积计算后,映射到高维。

    综上,逻辑回归本质上是线性回归模型,关于系数是线性函数,分离平面无论是线性还是非线性的,逻辑回归其实都可以进行分类。对于非线性的,需要自己去定义一个非线性映射。

    (1)L1正则化

    等价于原始损失函数的后面加上了 L1 正则,因此 L1 正则的本质其实是为模型增加了“模型参数服从零均值拉普拉斯分布”这一先验知识。

    (2)L2正则化

    等价于原始的损失函数后面加上了 L2 正则,因此 L2 正则的本质其实是为模型增加了“模型参数服从零均值正态分布”这一先验知识。

    (3)L1和L2的区别

      从上面的分析中我们可以看到,L1 正则化增加了所有权重 w 参数的绝对值之和逼迫更多 w 为零,也就是变稀疏( L2 因为其导数也趋 0, 奔向零的速度不如 L1 给力了)。我们对稀疏规则趋之若鹜的一个关键原因在于它能实现特征的自动选择。一般来说,大部分特征 x_i 都是和最终的输出 y_i 没有关系或者不提供任何信息的。在最小化目标函数的时候考虑 x_i 这些额外的特征,虽然可以获得更小的训练误差,但在预测新的样本时,这些没用的特征权重反而会被考虑,从而干扰了对正确 y_i 的预测。L1 正则化的引入就是为了完成特征自动选择的光荣使命,它会学习地去掉这些无用的特征,也就是把这些特征对应的权重置为 0。

      L2 正则化中增加所有权重 w 参数的平方之和,逼迫所有 w 尽可能趋向零但不为零(L2 的导数趋于零)。因为在未加入 L2 正则化发生过拟合时,拟合函数需要顾忌每一个点,最终形成的拟合函数波动很大,在某些很小的区间里,函数值的变化很剧烈,也就是某些 w 值非常大。为此,L2 正则化的加入就惩罚了权重变大的趋势。

    以二维样本为例,图解阐述加入L1正则化和L2正则化之后目标函数求解时发生的变化。

    原函数曲线等高线(同颜色曲线上,每一组w1,w2带入后值都相同)

     

     那现在我们看下加了 L1 正则化和 L2 正则化之后,目标函数求解的时候,最终解会有什么变化。

    从上边两幅图中我们可以看出:

    如果不加 L1 和 L2 正则化的时候,对于线性回归这种目标函数凸函数的话,我们最终的结果就是最里边的紫色的小圈圈等高线上的点。
    当加入 L1 正则化的时候,我们先画出$|w_1|+|w_2|=F$的图像,也就是一个菱形,代表这些曲线上的点算出来的 范数$|w_1|+|w_2|$都为 F。那我们现在的目标是不仅是原曲线算的值要小(越来越接近中心的紫色圈圈),还要使得这个菱形越小越好(F 越小越好)。那么还和原来一样的话,过中心紫色圈圈的那个菱形明显很大,因此我们要取到一个恰好的值。那么如何求值呢?

    综上所述,我们可以看见,加入正则化项,在最小化经验误差的情况下,可以让我们选择解更简单(趋向于 0)的解。

    结构风险最小化:在经验风险最小化的基础上(也就是训练误差最小化),尽可能采用简单的模型,以此提高泛化预测精度。

    因此,加正则化项就是结构风险最小化的一种实现。

    正则化之所以能够降低过拟合的原因在于,正则化是结构风险最小化的一种策略实现。

    简单总结下:

    给 loss function 加上正则化项,能使新得到的优化目标函数$h=f+||w||$ ,需要在 $f$ 和 $||w||$ 中做一个权衡,如果还像原来只优化 $f$ 的情况下,那可能得到一组解比较复杂,使得正则项 $||w||$ 比较大,那么 h 就不是最优的,因此可以看出加正则项能让解更加简单,符合奥卡姆剃刀理论,同时也比较符合在偏差和方差(方差表示模型的复杂度)分析中,通过降低模型复杂度,得到更小的泛化误差,降低过拟合程度。

    L1 正则化就是在 loss function 后边所加正则项为 L1 范数,加上 L1 范数容易得到稀疏解(0 比较多)。L2 正则化就是 loss function 后边所加正则项为 L2 范数的平方,加上 L2 正则相比于 L1 正则来说,得到的解比较平滑(不是稀疏),但是同样能够保证解中接近于 0(但不是等于 0,所以相对平滑)的维度比较多,降低模型的复杂度。

    8.LR可以用来处理非线性问题么?怎么做?可以像SVM那样么?为什么?

    LR可以用核解决非线性分类问题:(加了核的lr 这里加核是显式地把特征映射到高维 然后再做lr)

    (1)利用特殊核函数,对特征进行变换:把低维空间转换到高维空间,而在低维空间不可分的数据,到高维空间中线性可分的几率会高一些。

    区别是:SVM如果不用核函数,也得像逻辑回归一样,在映射后的高维空间显示的定义非线性映射函数Φ,而引入了核函数之后,可以在低维空间做完点积计算后,映射到高维。

    综上,逻辑回归本质上是线性回归模型,关于系数是线性函数,分离平面无论是线性还是非线性的,逻辑回归其实都可以进行分类。对于非线性的,需要自己去定义一个非线性映射。

    (2)扩展LR算法,提出FM算法

    在LR中,我们可以通过在基本线性回归模型的基础上引入交叉项,来实现非线性分类,如下:

    但是这种直接在交叉项$x_i,x_j$的前面加上交叉项系数$w_{ij}$的方式在稀疏数据的情况下存在一个很大的缺陷,即在对于观察样本中未出现交互的特征分量,不能对相应的参数进行估计。

    即,在数据稀疏性普遍存在的实际应用场景中,二次项参数的训练是很困难的。其原因是,每个参数$w_{ij}$的训练需要大量$x_i$和$x_j$都非零的样本;由于样本数据本来就比较稀疏,满足$x_i$和$x_j$都非零”的样本将会非常少。训练样本的不足,很容易导致参数$w_{ij}$不准确,最终将严重影响模型的性能。

    使用FM模型:

    另一种方法是对LR进行扩展,因子分解机(Factorization Machine,FM)是对LR算法的扩展。FM模型是一种基于矩阵分解的机器学习模型,对于稀疏数据具有很好的学习能力;
    对于因子分解机FM来说,最大的特点是对于稀疏的数据具有很好的学习能力。
    FM解决了LR泛化能力弱的问题,其目标函数如下所示:

    9.为什么LR需要归一化或者取对数,为什么LR把特征离散化后效果更好,为什么把特征组合之后还能提升

    这些基本都是增强了特征的表达能力,或者说更容易线性可分吧

    (1)为什么LR需要归一化或者取对数?

    符合假设、利于分析、归一化也有利于梯度下降。

    (2)为什么LR把特征离散化后效果更好?离散化的好处有哪些?

    逻辑回归属于广义线性模型,表达能力受限;
    在工业界,很少直接将连续值作为逻辑回归模型的特征输入,而是将连续特征离散化为一系列0、1特征交给逻辑回归模型,这样做的优势有以下几点:

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

    10.SVM和LR分别在上面情况下使用?

    (1)如何选择LR与SVM?

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

    (2)什么是参数模型(LR)与非参数模型(SVM)?

    参数模型通常假设总体(随机变量)服从某一个分布,该分布由一些参数确定(比如正太分布由均值和方差确定),在此基础上构建的模型称为参数模型;

    非参数模型对于总体的分布不做任何假设,只是知道总体是一个随机变量,其分布是存在的(分布中也可能存在参数),但是无法知道其分布的形式,更不知道分布的相关参数,只有在给定一些样本的条件下,能够依据非参数统计的方法进行推断。

    11.逻辑回归估计参数时的目标函数逻辑回归的值表示概率吗?

    (值越大可能性越高,但不能说是概率)

    12.LR缺点,LR怎么推导,写LR目标函数,目标函数怎么求最优解,讲讲LR的梯度下降,梯度下降有哪几种,逻辑函数是啥

    (1)LR与其他模型的对比:

    • LR与线性回归 

       线性回归和逻辑回归都是广义线性回归模型的特例
       线性回归只能用于回归问题,逻辑回归用于分类问题(可由二分类推广至多分类)
       线性回归使用最小二乘法作为参数估计方法,逻辑回归使用极大似然法作为参数估计方法
       逻辑回归引入了sigmoid函数,把y值从线性回归的(−∞,+∞)限制到了(0,1)的范围。
       逻辑回归通过阈值判断的方式,引入了非线性因素,可以处理分类问题。

    • LR与最大熵模型

      逻辑回归和最大熵模型本质上没有区别,最大熵在解决二分类问题时就是逻辑回归,在解决多分类问题时就是多项逻辑回归。

    • LR与 SVM

      相同点:

      都是分类算法,本质上都是在找最佳分类超平面;
      都是监督学习算法;
      都是判别式模型,判别模型不关心数据是怎么生成的,它只关心数据之间的差别,然后用差别来简单对给定的一个数据进行分类;
      都可以增加不同的正则项。
      不同点:

      LR 是一个统计的方法,SVM 是一个几何的方法;
      SVM 的处理方法是只考虑 Support Vectors,也就是和分类最相关的少数点去学习分类器。而逻辑回归通过非线性映射减小了离分类平面较远的点的权重,相对提升了与分类最相关的数据点的权重;
    损失函数不同:LR 的损失函数是交叉熵,SVM 的损失函数是 HingeLoss,这两个损失函数的目的都是增加对分类影响较大的数据点的权重,减少与分类关系较小的数据点的权重。对 HingeLoss 来说,其零区域对应的正是非支持向量的普通样本,从而所有的普通样本都不参与最终超平面的决定,这是支持向量机最大的优势所在,对训练样本数目的依赖大减少,而且提高了训练效率;
      LR 是参数模型,SVM 是非参数模型,参数模型的前提是假设数据服从某一分布,该分布由一些参数确定(比如正太分布由均值和方差确定),在此基础上构建的模型称为参数模型;非参数模型对于总体的分布不做任何假设,只是知道总体是一个随机变量,其分布是存在的(分布中也可能存在参数),但是无法知道其分布的形式,更不知道分布的相关参数,只有在给定一些样本的条件下,能够依据非参数统计的方法进行推断。所以 LR 受数据分布影响,尤其是样本不均衡时影响很大,需要先做平衡,而 SVM 不直接依赖于分布;
      LR 可以产生概率,SVM 不能;
      LR 不依赖样本之间的距离,SVM 是基于距离的;
      LR 相对来说模型更简单好理解,特别是大规模线性分类时并行计算比较方便。而 SVM 的理解和优化相对来说复杂一些,SVM 转化为对偶问题后,分类只需要计算与少数几个支持向量的距离,这个在进行复杂核函数计算时优势很明显,能够大大简化模型和计算。

    • LR与朴素贝叶斯

      朴素贝叶斯和逻辑回归都属于分类模型,当朴素贝叶斯的条件概率$P(X|Y=c_k)$服从高斯分布时,它计算出来的 $P(Y=1|X)$ 形式跟逻辑回归是一样的。

      两个模型不同的地方在于:

      逻辑回归是判别式模型 $p(y|x)$,朴素贝叶斯是生成式模型 $p(x,y)$:判别式模型估计的是条件概率分布,给定观测变量$x$和目标变量$y$的条件模型,由数据直接学习决策函数 $y=f(x)$ 或者条件概率分布 $P(y|x)$ 作为预测的模型。判别方法关心的是对于给定的输入$x$,应该预测什么样的输出 y;而生成式模型估计的是联合概率分布,基本思想是首先建立样本的联合概率概率密度模型$P(x,y)$,然后再得到后验概率$P(y|x)$,再利用它进行分类,生成式更关心的是对于给定输入 x 和输出 y 的生成关系;
      朴素贝叶斯的前提是条件独立,每个特征权重独立,所以如果数据不符合这个情况,朴素贝叶斯的分类表现就没逻辑会好了。

    (2)LR的求解方法

    由于该极大似然函数无法直接求解,我们一般通过对该函数进行梯度下降来不断逼急最优解。在这个地方其实会有个加分的项,考察你对其他优化方法的了解。因为就梯度下降本身来看的话就有随机梯度下降,批梯度下降,small batch 梯度下降三种方式,面试官可能会问这三种方式的优劣以及如何选择最合适的梯度下降方式。

    • 简单来说 批梯度下降会获得全局最优解,缺点是在更新每个参数的时候需要遍历所有的数据,计算量会很大,并且会有很多的冗余计算,导致的结果是当数据量大的时候,每个参数的更新都会很慢。
    • 随机梯度下降是以高方差频繁更新,优点是使得sgd会跳到新的和潜在更好的局部最优解,缺点是使得收敛到局部最优解的过程更加的复杂。
    • 小批量梯度下降结合了sgd和batch gd的优点,每次更新的时候使用n个样本。减少了参数更新的次数,可以达到更加稳定收敛结果,一般在深度学习当中我们采用这种方法。

    其实这里还有一个隐藏的更加深的加分项,看你了不了解诸如Adam,动量法等优化方法。因为上述方法其实还有两个致命的问题。

    • 第一个是如何对模型选择合适的学习率。自始至终保持同样的学习率其实不太合适。因为一开始参数刚刚开始学习的时候,此时的参数和最优解隔的比较远,需要保持一个较大的学习率尽快逼近最优解。但是学习到后面的时候,参数和最优解已经隔的比较近了,你还保持最初的学习率,容易越过最优点,在最优点附近来回振荡,通俗一点说,就很容易学过头了,跑偏了。
    • 第二个是如何对参数选择合适的学习率。在实践中,对每个参数都保持的同样的学习率也是很不合理的。有些参数更新频繁,那么学习率可以适当小一点。有些参数更新缓慢,那么学习率就应该大一点。

    13.LR特点

    • 可用于概率预测,也可用于分类。 并不是所有的机器学习方法都可以做可能性概率预测(比如SVM就不行,它只能得到1或者-1)。可能性预测的好处是结果又可比性:比如我们得到不同广告被点击的可能性后,就可以展现点击可能性最大的N个。这样以来,哪怕得到的可能性都很高,或者可能性都很低,我们都能取最优的topN。当用于分类问题时,仅需要设定一个阈值即可,可能性高于阈值是一类,低于阈值是另一类。 
    • 仅能用于线性问题 只有在feature和target是线性关系时,才能用Logistic Regression(不像SVM那样可以应对非线性问题)。这有两点指导意义,一方面当预先知道模型非线性时,果断不使用Logistic Regression; 另一方面,在使用Logistic Regression时注意选择和target呈线性关系的feature。 
    • 各feature之间不需要满足条件独立假设,但各个feature的贡献是独立计算的。 逻辑回归不像朴素贝叶斯一样需要满足条件独立假设(因为它没有求后验概率)。但每个feature的贡献是独立计算的,即LR是不会自动帮你combine 不同的features产生新feature的 (时刻不能抱有这种幻想,那是决策树,LSA, pLSA, LDA或者你自己要干的事情)。举个例子,如果你需要TF*IDF这样的feature,就必须明确的给出来,若仅仅分别给出两维 TF 和 IDF 是不够的,那样只会得到类似 a*TF + b*IDF 的结果,而不会有 c*TF*IDF 的效果。
    • LR对于样本噪声是robust的;
    • 对缺失数据敏感;
    • 可用于在线学习;

    14.LR优缺点

    优点:

    • 形式简单,模型的可解释性非常好。从特征的权重可以看到不同的特征对最后结果的影响,某个特征的权重值比较高,那么这个特征最后对结果的影响会比较大。
    • 模型效果不错。在工程上是可以接受的(作为baseline),如果特征工程做的好,效果不会太差,并且特征工程可以大家并行开发,大大加快开发的速度。
    • 训练速度较快。分类的时候,计算量仅仅只和特征的数目相关。并且逻辑回归的分布式优化sgd发展比较成熟,训练的速度可以通过堆机器进一步提高,这样我们可以在短时间内迭代好几个版本的模型。
    • 资源占用小,尤其是内存。因为只需要存储各个维度的特征值,。
    • 方便输出结果调整。逻辑回归可以很方便的得到最后的分类结果,因为输出的是每个样本的概率分数,我们可以很容易的对这些概率分数进行cutoff,也就是划分阈值(大于某个阈值的是一类,小于某个阈值的是一类)。

    缺点:

    • 准确率并不是很高。因为形式非常的简单(非常类似线性模型),很难去拟合数据的真实分布。
    • 很难处理数据不平衡的问题。举个例子:如果我们对于一个正负样本非常不平衡的问题比如正负样本比 10000:1.我们把所有样本都预测为正也能使损失函数的值比较小。但是作为一个分类器,它对正负样本的区分能力不会很好。
    • 处理非线性数据较麻烦。逻辑回归在不引入其他方法的情况下,只能处理线性可分的数据,或者进一步说,处理二分类的问题 。
    • 逻辑回归本身无法筛选特征。有时候,我们会用gbdt来筛选特征,然后再上逻辑回归。

     

     

     

    参考文献:

    【1】逻辑回归的常见面试点总结

    【2】面试总结——LR

  • 相关阅读:
    第一章 搭建Qt开发环境
    Git
    spring和springmvc
    spring注解
    转:spring mvc 设置@Scope("prototype")
    转:win10完美去除快捷方式小箭头
    数据库操作之DBUtils
    java.awt.headless系统设定
    POI 导出Exicel, 报Could not initialize class sun.awt.X11FontManager错误
    ORA-01950: no privileges on tablespace
  • 原文地址:https://www.cnblogs.com/nxf-rabbit75/p/10279762.html
Copyright © 2020-2023  润新知