《分类模型决策边界与模型评估指标》

你好,这是关于机器学习实战课程的笔记,主要聚焦算法原理以及实现过程。微信公众号:Wilber的技术分享,欢迎感兴趣的小伙伴搜索关注。

1 决策边界(Decision Boundary)基本概念与用途

1.1 决策边界基本概念与绘制方法

  关于分类模型的模型性能判别,我们可以从模型基本理论出发来进行判别,当然也可以根据长期的实践经验来进行判断。不过除此以外,还有一种常见的、用于辅助判别分类模型的模型性能的方法,那就是绘制模型决策边界。决策边界本质上是一种可视化分类效果的方法,其基本思路也非常简单——利用训练好的模型对样本空间所有的坐标点进行预测,然后观察样本空间所有点的不同类别之间的边界,最终就是模型的决策边界。例如,假设现在样本空间是二维空间,即数据总共只有两个特征,我们采用某个二分类数据集训练了一个逻辑回归模型,然后我们我们借助该模型对样本空间中所有点进行预测,并且对模型判别的不同类别的点进行不同着色,最终不同颜色(也就是不同类别)的点之间的分界线,其实就是决策边界。当然,一般来说,我们会在决策边界图像上添加参与模型训练的样本点。相关过程如下图所示:
在这里插入图片描述

1.2 通过决策边界观察模型性能

  当然,根据决策边界图像,其实我们就能看出模型的分类性能和对于当前样本的分类结果。例如对于上图来说,首先我们能够发现,实际上逻辑回归在二维样本空间中的决策边界是一条直线,而这种决策边界的呈现“直线”的特性,会直接影响模型对于复杂样本的分类性能。在上述图四中能够清楚的看到,无论是红色区域的蓝色点,还是蓝色区域中红色的点,实际上都是模型错判的样本。受此“限制”,逻辑回归无法处理更加复杂的判别类问题,由此我们也能看到逻辑回归本身的性能瓶颈。
在这里插入图片描述
  当然,并非所有模型的决策边界都呈现出线性的状态,甚至对于大多数模型来说,其决策边界都不是单独一条直线:例如对于KNN模型来说,其决策边界实际上是一个个圆圈叠加而成的拥有一定幅度的边界,而对于决策树模型来说,其决策边界实际上是一条条折线:

在这里插入图片描述
  此外,有时我们还能借助决策边界观察模型过拟合倾向,一般来说,模型决策边界越不规则、越是出现不同颜色区域彼此交错的情况,则说明模型越是存在过拟合倾向。
在这里插入图片描述

1.3 逻辑回归决策边界与模型可解释性

  尽管逻辑回归的“线性决策边界”一定程度约束了模型的分类效能,但线性决策边界实际上也为逻辑回归的模型可解释性提供了一个新的解释角度,例如,对于上述dispersion=[6,2]的逻辑回归决策边界来说,第一个特征(X轴)取值越大、或者第二个特征(Y轴)取值越大,则越有可能蓝色一类,或者说样本为蓝色类的概率就更大。而该现象也为解释特征之于样本类别判别的作用提供了一个新的角度。这和我们此前介绍的,从逻辑回归的线性方程系数的角度去判别特征如何影响判别类别其实是类似的,当然,正如上文所述,只有决策边界是线性时才能够进行如此解释。
在这里插入图片描述
  值得一提的是,对于大多数模型来说都是试图找到一条更有效的决策边界去对样本进行类别划分,但也有些模型并不会在决策边界上下功夫,而是试图去“改变”样本空间,例如支持向量机SVM,就能够通过某种映射关系改变数据分布(包括数据维度),然后在新的数据分布中利用简单的决策平面或者超平面来对数据集进行切分。
在这里插入图片描述

2 混淆矩阵与F1-Score

  分类模型作为使用场景最为广泛的机器学习模型,相关模型评估指标也伴随着使用场景的拓展而不断丰富。除了此前所介绍的准确率以外,常用的二分类模型的模型评估指标还有召回率(Recall)、F1指标(F1-Score)、受试者特征曲线(ROC-AUC)、KS曲线等等。不同评估指标有对应的不同的计算方法,当然也有不同的使用场景。
  接下来,我们就依据不同评估指标彼此之间的计算关系来对二分类问题的模型评估指标进行统一介绍,并给出对应指标使用场景的介绍。

2.1 准确率局限

  首先,是准确率作为模型评估指标时的局限。整体来看,准确率作为最为通用、同时也是较好理解的评估指标,在机器学习领域其实仍然存在一定局限。当然,归根结底,这些局限其实是由准确率本身的计算过程所决定的。首先也是最重要的一点,就是准确率在计算过程中,所有样本其实是“均匀投票”的,也就是说对每个样本的判别结果,对于最终准确率的影响其实是相同的。例如假设总共有100条数据进行分类,其中任意一条样本被误判都会且仅会影响1%的准确率。如此一来就会造成两方面影响,其一,对于某些样本极端不平衡的分类数据集来说准确率很难很好的衡量模型表现,例如,假设总共有100样本,其中0类有99条,1类有1条,则此时就算模型判别此100条样本全都为0类,准确率也将达到99%,但很多时候可能我们希望的是模型能够将这些1识别出来,例如癌症病患数据中癌症患者、金融风控中欺诈用户等。当然,从更加本质的角度来看,那就是在很多业务场景中,将0错判为1、和将1错判为0,其实实际付出的代价是不一样的,很多时候我们并不是单纯的追求将所有的0样本都正确的识别为0且将1样本都正确的判别为1,而是根据误判的代价,选择更加激进或者更加保守的策略来进行识别。例如如果将1样本误判为0的代价非常大,而将0样本误判为1的代价并不大,则会采用“宁可错杀一千、不可放过一个”的激进策略来识别1。

  关于准确率的第二方面局限,实际上是一个相对隐藏更深的问题,那就对于哪怕是均衡的分类样本数据集,准确率有时也无法很好的衡量分类模型的分类性能、尤其是模型本身的泛化能力,这也是为什么我们不以准确率而以交叉熵作为损失函数的另一个原因。例如,假设对下述5条样本的二分类数据集,构建A、B两个逻辑回归模型进行判别,模型判结果如下所示:

index labels A-predicts B-predicts predicts_results
1 1 0.8 0.6 1
2 0 0.6 0.9 1
3 0 0.2 0.4 0
4 1 0.9 0.7 1
5 1 0.9 0.6 1

  如果是从准确率指标来看,两个模型在阈值为0.5的情况下,判别准确率都是80%(仅判错第二条样本),二者并无高下之分。但如果我们更加仔细的观察模型对各样本输出的概率欧安别结果,其实我们会发现模型A其实会更加“优秀”:首先,对于判断正确的1类数据,模型A输出的概率预测分别为0.8、0.9和0.9,表示模型非常肯定这些样本应该属于1类,而模型B的概率预测结果为0.6、0.7、0.6,表示模型并不是特别肯定这样样本属于1类,类似的情况也出现在两个模型正确识别0类的判别过程中。此外,对于误判的样本,虽然两个模型都将原本属于0类的2号样本误判为1,但模型B给出的概率结果是0.9,代表其非常肯定该样本应该属于1类,而模型A输出的概率结果为0.6,表示其并不是非常肯定该样本属于1类。在实际建模过程中,类似A模型的模型,即对判断正确的样本有较高的肯定、对判断错误的样本不太肯定,这类模型其实是更加准确的捕捉到了数据规律,在后续对于新数据集预测时,也将拥有更强的泛化能力。但遗憾的是,准确率评估指标并无法很好的将A类模型和B类模型的模型判别能力进行准确区分。

  而为了修正准确率的“均匀投票”在某些场景下的缺陷,我们将引入混淆矩阵、召回率、精确度、F1-Score等指标来完善模型评估指标体系,而为了更好的评估模型整体分类效力,我们将引入ROC-AUC等指标,此外我们还将介绍用于模型结果代价衡量和辅助判别最佳阈值的K-S曲线。

2.2 混淆矩阵(Confusion matrix)

混淆矩阵作为分类模型结果的更加细致精确的可视化展示,有时也被称为误差矩阵或者可能性表格,通常混淆矩阵会应用于二分类问题中,对此首先有如下关键定义:

  • Actual condition:样本真实标签;
  • Predicated condition:模型预测标签;
    例如,有如下数据集,第一列为真实标签,即Actual condition,第二列为模型预测结果,即Predicated condition,数据集如下:
labels(Actual condition) predicted(Predicated condition)
1 0
1 0
1 1
1 1
1 1
1 1
1 1
1 1
0 0
0 0
0 0
0 1

  此外,在进行二分类模型预测过程中,样本类别被模型正确识别的情况其实有两种,一种是阳性样本被正确识别,另一种是阴性样本被正确识别,据此我们可以有如下定义:

  • True positive(TP):样本属于阳性(类别1)、并且被正确识别为阳性(类别1)的样本总数;TP发生时也被称为正确命中(hit);
  • True negative(TN):样本属于阴性(类别0)、并且被正确识别为阴性(类别0)的样本总数;TN发生时也被称为正确拒绝(correct rejection);
    对于上述数据集而言,TP=6,TN=3。

当然,对于误分类的样本,其实也有两种情况,其一是阳性样本被误识别为阴性,其二是阴性样本被误识别为阳性,据此我们也有如下定义:

  • False positive(FP):样本属于阴性(类别0),但被错误判别为阳性(类别1)的样本总数;FP发生时也被称为发生I类了错误(Type I error),或者假警报(False alarm)、低估(underestimation)等;
  • False negative(FN):样本属于阳性(类别1),但被错误判别为阴性(类别0)的样本总数;FN发生时也被称为发生了II类错误(Type II error),或者称为错过目标(miss)、高估(overestimation)等;
    对于上述数据集而言,FP=1,FN=2。

对于上述符号,其实不难发现,第一位字母其实表示模型判断的正误(True or False),第二位字母代表样本预测标签(Positive or Negative)。通过上述关键指标,则可构成混淆矩阵:
在这里插入图片描述
对于上述数据集,混淆矩阵计算结果为:

101

3 混淆矩阵中的模型评估指标

3.1 围绕识别类别1所构建的评估指标

  当然,对于混淆矩阵来说,其实仍然属于第一级观察指标,通过混淆矩阵,通常我们并不会直接使用混淆矩阵中的一级指标,而是去使用基于这些一级指标的二级指标。例如从上述混淆矩阵所提供的结果不难看出,准确率其实就是 A C C = T P + T N T P + T N + F P + F N ACC=\frac{TP+TN}{TP+TN+FP+FN} ACC=TP+TN+FP+FNTP+TN。当然此外其实还有其他很多常用的二级指标,通过这些二级指标的构建,可以补充准确率在偏态样本中重点识别某类样本时表现的不足。首先,如果是更加关注类别1样本的识别情况,则有两个常用指标:

  • 召回率(Recall)
      召回率侧重于关注全部的1类样本中别准确识别出来的比例,其计算公式为:
    R e c a l l = T P T P + F N Recall = \frac{TP}{TP+FN} Recall=TP+FNTP
    对于上例中,全部12条样本中有8条1类样本,而其中有6条被正确识别,因此上例的召回率为6/8=75%。
      此外,召回率往往还被称为sensitivity(敏感度)、hit rate(命中率)、true positive rate (TPR)以及查全率等。
  • 精确度(Precision)
      和召回率不同,精确度并不主张“宁可错杀一千不可放过一个”,而是更加关注每一次出手(对1类样本的识别)能否成功(准确识别出1)的概率,精确度计算公式为:
    P r e c i s i o n = T P T P + F P Precision = \frac{TP}{TP+FP} Precision=TP+FPTP
    对于上例中,全部12条样本,模型总共判别7条样本为1类样本,但其中有6条判别准确,精确度为6/7=86%。
      关于召回率和精确度,也可以通过如下形式进行更加形象的可视化展示:
102
  • F1-Score
      不难发现,召回率和精确度其实是一对相对的概念,在围绕1类样本的识别过程中,召回率力求尽可能更多的将1识别出来,而精确度则力求每次对1样本的判别都能获得一个正确的结果。但是,再大多数情况下,其实我们是希望获得一个更加“均衡”的模型判别指标,即我们既不希望模型太过于激进、也不希望模型太过于保守,并且对于偏态样本,既可以较好的衡量1类样本是否被识别,同时也能够兼顾考虑到0类样本的准确率牺牲程度,此时,我们可以考虑使用二者的调和平均数(harmonic mean)作为模型评估指标,即F1-Score。
      所谓A和B的调和平均数,指的是 2 1 A + 1 B = 2 A B A + B \frac{2}{\frac{1}{A}+\frac{1}{B}}=\frac{2AB}{A+B} A1+B12=A+B2AB的计算结果,则F1-Score计算公式如下:
    F 1 − S c o r e = 2 1 R e c a l l + 1 P r e c i s i o n = 2 ⋅ R e c a l l ⋅ P r e c i s i o n R e c a l l + P r e c i s i o n F1-Score = \frac{2}{\frac{1}{Recall}+\frac{1}{Precision}}=\frac{2 \cdot Recall \cdot Precision}{Recall+Precision} F1Score=Recall1+Precision12=Recall+Precision2RecallPrecision
    当然,通常我们也会用TPR表示Recall、PPV表示Precision,此时F1-Score可表示如下:
    F 1 − S c o r e = 2 ⋅ T P R ⋅ P P V T P R + P P V F1-Score = \frac{2\cdot TPR \cdot PPV}{TPR+PPV} F1Score=TPR+PPV2TPRPPV
    如果更近一步用混淆矩阵的一级指标来进行表示,则:
    F 1 − S c o r e = 2 ⋅ T P 2 ⋅ T P + F P + F N F1-Score = \frac{2\cdot TP}{2\cdot TP+FP+FN} F1Score=2TP+FP+FN2TP
      根据F1-Score的计算公式不难发现,F1-Score是一个介于[0,1]之间的计算结果,当FP+FN=0时候(即没有误判样本时),F1-Score计算结果为1;而当没有正确识别出一个1时,即TP=0时,F1-Score=0。
  • F1-Score基本性质
      当然,从上述结果来看,F1-Score指标能够一定程度上综合Recall和Precision的结果,综合判断模型整体分类性能。当然,除了F1-Score以外我们还可以取Recall和Precision的均值(balanced accuracy,简称BA)来作为模型评估指标:
    B A = R e c a l l + P r e c i s i o n 2 BA = \frac{Recall+Precision}{2} BA=2Recall+Precision

除了F1-Score以外,还有一种更为一般的、可以自主调整召回率和精确度在参与调和平均数计算过程中的权重的评估指标, F β F_\beta Fβ,其计算公式如下:
F β = ( 1 + β 2 ) p r e c i s i o n ⋅ r e c a l l ( β 2 ⋅ p r e c i s i o n ) + r e c a l l F_\beta=(1+\beta ^2)\frac{precision \cdot recall}{(\beta ^2 \cdot precision)+recall} Fβ=(1+β2)(β2precision)+recallprecisionrecall

3.2 围绕识别类别0所构建的评估指标

  如果说Recall和Precision其实都是围绕以识别类别1为核心目标来构建的评估指标,那么由于二分类的两个类别的对称性,我们完全可以识别类别0为核心目标来构建一套镜像的模型评估指标。

  • 特异度(Specificity)
      首先是用来衡量0类被正确识别比例的特异度,该指标类似召回率,都是较为激进的评估指标,只考虑关注的类(0类或者1类)被识别出来的比例,而不考虑在识别过程中是否牺牲了另外一类的准确率。该指标计算公式如下:
    S p e c i f i c i t y = T N T N + F P Specificity = \frac{TN}{TN+FP} Specificity=TN+FPTN
    同样,对于上述例子来看,特异度计算结果为3/4=0.75
    此外,特异度往往也被称为true negative rate (TNR)。
  • 阴性预测值(negative predictive value)
      同样,类似Precision,对于0类样本的衡量,也有一个相对保守评估指标,用于衡量对0类样本进行判别的所有判别结果中正确识别的0类样本所占得比例,也就是阴性预测值指标,往往也被称为NPV(negative predictive value)。其计算公式如下:
    N P V = T N T N + F N NPV = \frac{TN}{TN+FN} NPV=TN+FNTN
    而对于上述例子来说,NPV计算结果为3/5=0.6
  • 伪阳率(false positive rate)
      除了上述指标外,我们还需要补充一个对后续会经常用到的一个评估指标:伪阳率(false positive rate),其计算公式为:
    F P R = 1 − s p e c i f i c i t y = F P F P + T N FPR = 1-specificity=\frac{FP}{FP+TN} FPR=1specificity=FP+TNFP
    即表示在所有预测为0类的样本中,错误样本所占比例。(假正例(实际为负例0)比上真实中的负例)

3.4 混淆矩阵评估指标使用策略

  在介绍了这么多基于混淆矩阵的评估指标之后,接下来我们简单总结这些评估指标的一般使用策略。
  首先,在类别划分上,仍然需要强调的是,我们需要根据实际业务情况,将重点识别的样本类划为类别1,其他样本划为类别0。当然,如果0、1两类在业务判断上并没有任何重要性方面的差异,那么我们可以将样本更少的哪一类划为1类。
  其次,在评估指标选取上,同样需要根据业务情况判断,如果只需要考虑1类别的识别率,则可考虑使用Recall作为模型评估指标,若只需考虑对1样本判别结果中的准确率,则可考虑使用Precision作为评估指标。但一般来说这两种情况其实都不多,更普遍的情况是,需要重点识别1类但也要兼顾0类的准确率,此时我们可以使用F1-Score指标。目前来看,F1-Score其实也是分类模型中最为通用和常见的分类指标。
  当然,在某些情况下,例如使用Scikit-Learn利用网格搜索进行模型调参时,对于某些本身分类性能比较强(本身对两类都能进行较好识别)的模型,我们可以适时采用召回率作为网格搜索评价指数,来提升1类识别准确率。

3.5 多分类混淆矩阵

  一般来说混淆矩阵常用于二分类问题,对于多分类问题,我们同样可以构建如下形式的混淆矩阵:

103

  此时,如果要进行Recall、Precision的计算,则需要先采用此前介绍的OVR策略进行“划分”、然后采用均值策略进行“集成”,依次将A、B、C视为1类,其余类别视为0类来进行计算,例如,A、B、C三类的Recall为:
R e c a l l A = 6 6 + 2 + 2 = 0.6 Recall_A = \frac{6}{6+2+2} = 0.6 RecallA=6+2+26=0.6 R e c a l l B = 3 3 + 1 + 3 = 3 7 = 0.42 Recall_B = \frac{3}{3+1+3} = \frac{3}{7} = 0.42 RecallB=3+1+33=73=0.42 R e c a l l C = 2 2 + 2 + 6 = 0.2 Recall_C = \frac{2}{2+2+6} = 0.2 RecallC=2+2+62=0.2
然后,进行均值计算,即可算得此时模型整体Recall:
R e c a l l = 0.6 + 0.42 + 0.2 3 = 0.4 Recall = \frac{0.6+0.42+0.2}{3} = 0.4 Recall=30.6+0.42+0.2=0.4

4 ROC曲线与AUC值

 除了F1-Score以外,还有一类指标也可以很好的评估模型整体分类效力,即ROC曲线与AUC值。当然这二者其实是一一对应的,ROC(全称为Receiver operating characteristic,意为受试者特征曲线)是一个二维平面空间中一条曲线,而AUC则是曲线下方面积(Area Under Curve)的计算结果,是一个具体的值,例如下图所示:

1

4.1 ROC-AUC计算

  其实ROC和AUC是一一对应的,因此二者其实是同一个评估指标。并且,ROC曲线同样也是基于混淆矩阵衍生的二级指标来进行构建,该指标的计算有些类似于交叉熵的计算过程,会纳入分类模型的分类概率来进行模型性能的评估。例如此前所说,对正例样本概率越大、负例样本概率越小,则模型性能越好。

  • ROC曲线绘制与AUC面积计算
      接下来,我们来讨论ROC曲线的绘制过程。首先,假设逻辑回归对某一组数据分类结果如下,我们按照预测概率从大到小进行排序:
107

数据总共20条样本,11条1类样本、9条0类样本。
  此时,我们从1开始逐渐降低阈值。在阈值取值范围为0.9-1之间时,模型将判别所有样本都属于0类,对于上述数据集来说,有混淆矩阵计算结果如下:

2

此时,我们令FPR为平面坐标的横坐标点、TPR作为平面坐标的纵坐标点,就可以绘制出ROC曲线上的第一个点:(0, 0)点。
  当然,从此结果上仍然看不出其模型评估价值,为了绘制ROC曲线,我们还需要进一步调整阈值。此时我们不断降低阈值,当阈值跨过0.9时,即介于0.8和0.9之间时,上述混淆矩阵计算结果将发生变化,此时模型将判别概率为0.9的样本为1类,其余样本为0类,此时上述混淆矩阵计算结果如下:

3

而此时我们就计算出了ROC曲线上的第二个点:(0, 0.09)
  如果我们进一步降低阈值,当阈值移动到0.7和0.8之间时,模型判别结果又将发生变化,我们可以继续计算此时的TPR和FDR。在不断调整阈值的过程中,阈值每跨越一个样本的预测概率,FDR和TPR就会发生变化,最终,我们将阈值从1逐渐降低到0的过程中的所有计算结果放在数据表中进行观察:

4

  当然,我们也可以简单验证上述结果是否正确。例如,当阈值取值范围在0.4-0.51之间时,有一半样本被预测1、另一半被预测为0,此时混淆矩阵计算结果为:

6

当然,FPR和TPR计算结果还有另一个理解角度,那就是我们可以将FPR计算结果视作0类概率累计结果,TPR视作1类概率累计结果。对于上述数据,1类数据共有11条,0类数据共有9条,假设当阈值移动到某个位置时,阈值以上总共有m条1类样本、n条0类样本,则此时FPR=n/9,TPR=m/11。例如当阈值移动到0.6-0.7之间时,m=2、n=1,此时FPR=1/9=1.1,TPR=2/18。

  当阈值完整从1移动0之后,我们即可把上述所有由(FPR,TPR)所组成的点绘制成一张折线图,该折线图就是ROC曲线图:

7

而此时,ROC曲线下方面积就是AUC值。

ROC曲线绘制另一种理解角度。根据上述描述,FPR实际上是0类概率累计,TPR实际上是1类概率累计,则自上而下观察True Class这一列,在原点为起始点时,每当出现一个1时,点就沿着Y轴正方向移动0.9,每当出现一个0时,点就沿着X轴正方向移动0.11,依次类推,最终从原点移动到(1,1)这个点的过程,就构成了ROC曲线。

4.2 ROC-AUC基本性质

  首先,由于FPR和TPR都是在[0,1]区间范围内取值,因此ROC曲线上的点分布在横纵坐标都在[0,1]范围内的二维平面区间内。其次,对于任意模型来说,ROC曲线越靠近左上方、ROC曲线下方面积越大,则模型分类性能越好。
  根据点的移动轨迹构成ROC曲线角度来理解,刚开始移动时,是朝向X还是Y轴正向移动,其实是有模型输出概率最高的几个样本决定的,如果这几个样本被判别错了(即实际样本类别为0),则刚开始从原点移动就将朝着X轴正方向移动,此时曲线下方面积会相对更小(相比刚开始朝着Y轴正方向移动的情况),并且根据此前介绍的理论,此时由于模型对于“非常肯定”的样本都判错了,证明模型本身判别性能欠佳;而反之,如果输出概率最高的头部几条样本都判断正确,样本真实类别确实属于1,则点开始移动时将朝向Y轴正方向移动,此时曲线下方面积就将相对更大,模型判别性能也将相对较好。

  • ROC的类别对称性与F1-Score指标的比较
      我们知道ROC由于是概率敏感,所以相比F1-Socre,ROC其实能够对模型的判别能力有更深刻的评判。此外,ROC还有另外一个特性——那就是类别对称性。
      在此前介绍F1-Socre的时候,我们讨论,F1-Score并不是类别对称的,而是更加侧重于评估模型在识别1类样本时的整体性能,但ROC却是类别对称的,即如果我们将数据中的0和1类互换,而模型原先预测1的类概率就变成了现在预测0类的概率,此时ROC曲线会参照 x + y = 1 x+y=1 x+y=1的直线进行对称变换,但AUC面积不变,即模型性能评估数值仍然不会发生变化。
      因此,尽管同样是衡量模型整体评估性能,但相比之下,F1-Score更加倾向于判别模型对1类样本的识别能力,而ROC-AUC则没有这方面的倾向性。因此,ROC-AUC和F1-Score之间的选取问题,同样也需要根据业务需要来进行选择,如果需要重点考虑1类是否被正确识别,则更加倾向选择F1-Score,但如果没有其他特殊要求,则一般会考虑使用ROC-AUC作为模型评估指标。
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐