WWW 2020|考虑职业发展倾向的个性化员工学习课程推荐

本文主要是介绍WWW 2020|考虑职业发展倾向的个性化员工学习课程推荐,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

你和“懂AI”之间,只差了一篇论文

很多读者给芯君后台留言,说看多了相对简单的AI科普和AI方法论,想看点有深度、有厚度、有眼界……以及重口味的专业论文。

为此,在多位AI领域的专家学者的帮助下,我们解读翻译了一组顶会论文。每一篇论文翻译校对完成,芯君和编辑部的老师们都会一起笑到崩溃,当然有的论文我们看得抱头痛哭。

同学们现在看不看得懂没关系,但芯君敢保证,你终有一天会因此爱上一个AI的新世界。

读芯术读者论文交流群,请加小编微信号:zhizhizhuji。等你。

这是读芯术解读的第148篇论文


WWW 2020

考虑职业发展倾向的个性化员工学习课程推荐

Personalized Employee Training Course Recommendation with Career Development Awareness

中国科学技术大学、百度

原文

Chao Wang, Hengshu Zhu, Chen Zhu, Xi Zhang, Enhong Chen, Hui Xiong, Personalized Employee Training Course Recommendation with Career Development Awareness, In Proceedings of the Web Conference 2020 (WWW 20), Taipei, Taiwan

本文是中国科学技术大学和百度TIC联合发表于WWW2020的工作,文章提出一种具有较强可解释性的个性化员工学习课程推荐系统,能够综合考虑员工当前的技能状态和他的职业发展倾向来共同推荐合适的在线课程。具体地,我们首先从员工技能标签中提取出可解释的能力状态向量,接着通过我们提出的需求识别机制将其转化为能力需求向量,最后结合同样可解释的课程隐向量利用协同过滤的方法进行课程推荐。实验结果表明我们的方法可以有效地为员工提供课程推荐结果,并具有较强的可解释性。


1.引言


在公司的战略人才管理中,学习与发展(learning and development,L&D)旨在通过为员工制定针对性的培训来提高和磨练他们的技能与知识水平。这对于保持公司的竞争力至关重要。根据美国人才发展协会{https://www.td.org/}的研究报告,2018年,美国的企业组织在L&D一项上的支出为平均每位员工1,296美元,平均学习时间34.1小时。因此,近年来,越来越多的公司已经建立了自己的学习管理系统(LMS)来促进对员工的在线培训,这不仅可以节省大量培训成本,还可以增强公司对人才的吸引力。

因此,一个重要的问题是如何在学习管理系统上为人才提供个性化的学习课程推荐,来帮助和提高员工的学习效率。然而,为达到这个目标我们需要面临许多挑战。 首先,与传统推荐方案(例如电影或购物推荐)不同,员工的学习动机在很大程度上不仅取决于他们目前的能力状态,还取决于他们未来职业发展的目标。图1展示了员工使用在线学习系统的一些案例。根据员工当前的技能档案和历史课程学习记录,我们可以猜测,出于巩固技能的目的,Alice学习了课程Java Performance Optimization,而Bob则学习了课程From Hadoop to Spark以提高他的现有能力。同时,尽管Cindy的技能与Alice非常相似,她选择了非常不同的课程Deep Learning in NLP。这与她现有的技能属性相去甚远,一个可能的原因是她想学习和掌握新领域的技能,以实现自己未来的职业目标。因此,在员工课程推荐中,一个至关重要的点是要同时考虑当前的能力和员工的职业发展倾向。其次,在教育领域,可解释模型在设计更好的教学指导以及辅助学生自主学习中发挥着重要作用,对推荐结果进行解释是至关重要的。最后,我们通常必须在LMS上面对极端的数据稀疏和冷启动问题。例如,技能标签数据可能无法完全反映员工的真实技能情况,并且会同时包含细粒度和粗略的技能标签,从如此嘈杂和稀疏的数据中挖掘出真正的员工能力和学习倾向是非常具有挑战性的。

 

图1.课程推荐案例

为了解决上述挑战,在本文中,我们提出了一种个性化的员工课程推荐系统。该系统可以对员工当前的能力状态和职业发展倾向进行建模。具体地说,我们设计了一套新颖的基于端到端结构的贝叶斯协同过滤推荐网络框架(Demand-aware Collaborative Bayesian Variational Network,DCBVN)。首先,考虑到原始的技能档案存在稀疏性和模棱两可等问题,无法直接利用。因此,在DCBVN中,我们使用基于变分推理的自动主题模型建模,从员工的技能档案中提取出员工能力的潜在可解释向量表示。员工技能信息不但可以帮助我们加深对员工的了解,还可以辅助减轻员工历史学习记录的稀疏和冷启动问题。然后,通过利用观察到的历史课程学习记录,我们提出了一种有效的需求识别机制,用于学习每位员工个人职业发展的需求方向。潜在能力状态向量和能力需求向量的每个维度都代表了现实中一种可解释的技能主题,这样就使得我们的推荐模型具有较强的可解释性。最后,我们通过协同算法给员工推荐最合适的学习课程。上述所有过程都被集成到统一的贝叶斯协同过滤框架中,以同时保证推荐结果的准确性和可解释性,并在学习过程中实现相互促进的作用。在真实数据上的大量实验结果清楚地证明了DCBVN框架的有效性和解释能力,以及在稀疏和冷启动场景下的鲁棒性。

2. 模型框架


考虑职业发展倾向的个性化员工学习课程推荐技术是建立在深度理解用户当前能力状态与用户的学习发展需求上设计和实现的。在这一节中,我们首先介绍DCBVN的总体框架概览,然后再详细介绍DCBVN的各个组成部件,即能力状态建模和学习需求建模,最后,通过联合的贝叶斯推断方法进行模型的学习和优化。

2.1 模型概览


本文用来表示用户的学习记录矩阵,其中N为用户数量,E为课程数量,若用户i学习过课程j,则记为1,反之则记为0,故而学习记录矩阵是一个0-1矩阵。借鉴矩阵分解模型的思路,本文将高维稀疏的R矩阵映射到两个处于低维空间中的矩阵,分别记为,其中U代表了用户的需求,而V则代表了课程的属性。U矩阵的第i列就代表了用户i的需求隐向量,而V矩阵的第j列就代表了课程j的属性隐向量。于是,可由的乘积进行建模,可以假设服从于一个正态分布:

其中是置信度系数,通常当为0时,将设为一个比较小的值,反之则将设为一个比较大的值。这是因为对于原始学习记录中,用户已经学习的课程属于明确的正样本,我们对其有较高的置信度。而对于用户没有学习的课程,由于无法得知用户是不喜欢该课程还是不知道该课程,所以只能作为信号较弱的负样本,我们对这些负样本课程建模时设置较低的置信度。

接着,对于课程j的属性隐向量,可以假设其先验分布也是一个正态分布:

在传统矩阵分解模型中,用户的需求隐向量也是由一个正态先验分布得到的,然而,在本文的情景下,我们知道,用户的学习需求与其自身当前能力状态有极大关系。因此,本文通过一个需求识别机制G()来完成从用户能力隐向量到需求隐向量的转变。

记用户能力标签矩阵是一个0-1矩阵,M为技能标签的数量。用户i的能力标签向量可以认为是由能力隐向量生成的。

通过上述方式,我们就完成了对课程推荐过程的整体概率化建模。图二是DCBVN的概率图模型。接下来,我们将详细介绍DCBVN如何利用变分自编码器网络完成对技能主题的抽取和迁移。

图2.DCBVN的概率图模型

2.2技能主题建模


 仿照传统的主题建模模型(LDA),我们可以假设每个用户的技能档案是从K个主题中生成出来的。其中每个技能主题代表了在M个技能上的概率分布。例如,在于机器学习有关的技能主题中,技能标签“SVM”的概率就远大于“产品设计”的概率。注意所有技能的概率之和为1。接着用户的主题分布就代表了该用户在K个主题上的概率分布,可以假设服从于狄利克雷分布Dirichlet(α)。最后,可以认为用户的技能是从一个多项式分布中采样得到的,。根据以上过程,可以得到xi的边缘似然函数如下:

狄利克雷先验在主题模型中起到很重要的作用,然而,在变分自编码器网络中,难以对狄利克雷先验实施重参数化技巧,由此会导致网络无法计算梯度大小。为此,这里我们采用拉普拉斯估计,即设:

其中σ()是softmax函数,能力隐变量服从于一个多元正态分布,其协方差矩阵的非对角元素以O(1/K)的速率趋于0。可近似认为能力隐变量服从于一个协方差矩阵为对角阵的多元正态分布,其均值和方差如下:

2.3变分自编码器


传统的LDA模型在稀疏数据上的表现会比较差,这里我们采取基于变分自编码器的主题模型VAE-LDA来进行技能建模。变分自编码器包含两个神经网络组件,分别是编码器和解码器,对应模型的推断过程和生成过程。图3展示了变分自编码器的结构组成。

图3. 变分自编码器

编码器由L层全连接网络(Multi-layerPerceptionNetwork)组成,每一层网络都对上一层网络传输过来的数据进行加工并再传输到下一层中,第一层的输入就是用户的能力标签向量。具体地,每一层网络有两个参数,分别是权重系数矩阵和偏置向量,二者均服从正态分布的先验:

对第l层网络,则有:

其中Sig()是Sigmoid函数。

最终编码器的输出再分别经过全连接网络来得到均值层和方差层:

于是用户能力隐向量可以通过采样得到:

传统的蒙特卡洛(MonteCarlo)估计需要对分布多次采样取均值,由于在神经网络的训练过程中,训练数据被随机打乱顺序后按照每个batch固定数量数据的形式反复进行迭代训练,故而多次采样的过程其实在训练中已经有体现,在单次训练过程中就不需要多次采样,而是只采一次样本即可。这样的训练方法简单直接,且大大提高了计算效率。

完成了对技能标签的编码后,下一步是对其进行解码。解码过程也是通过全连接神经网络完成,但与编码器不同,解码器只需要一层神经网络,且只需要权重参数即可:

其中β和θ分别是能力隐向量和解码器的权重参数矩阵按列经过softmax函数计算后的结果,通过softmax函数,可以将原始矩阵按列归一化,于是就代表了用户i在这K维技能主题上的概率分布,β的第k列就代表了第k个技能主题上每个技能标签的概率分布。

最终用户的能力标签服从于一个多项式分布:

从上述设计可以看出,原始离散的能力标签数据通过编码器转换成了低维空间中的连续隐向量,代表着用户的能力状态。而通过解码器,我们得到的能力隐向量可以还原成显式的能力标签,这一过程可以帮助我们学习到更加准确的用户隐向量,同时也赋予了得到的隐向量丰富的物理解释含义。

然而,课程的属性隐向量仍然不具备可解释性。在现实应用场景中,给课程打标签同样是一个很有意义的问题。因此,我们可以利用员工的技能标签来学习课程的技能分布。对每个课程,我们统计所有上过该课的员工的技能标签,然后只保留前200个出现次数最多的技能标签来避免数据噪声的影响,这样就构成了课程的技能标签向量

对不可解释的属性隐向量,我们利用一层神经网络变换来将其转化为可解释的课程技能主题分布

接着课程技能标签就可以由技能主题分布通过多项式分布生成。

注意这里的主题β与用户网络中的β是一致的,以此来保证学习到的用户和课程主题是同一主题。

2.4学习需求建模


需求建模的关键点是如何处理能力隐向量和需求隐向量之间的关系,员工的学习需求既跟当前的能力状态有关,又跟个性化的职业发展偏好有关。同样一门课程,对于能力状态不同的两个用户,选择这门课的目的也可能是不一样的。为此,本文提出一种新型需求识别机制G()来处理这个问题,它将输入的能力隐向量转变成需求隐向量。

如图4所示,具体地,首先我们可以假定有T种主要的需求迁移模式,用迁移变量表示,则迁移后的需求变量。由于能力隐向量的每一维代表着一个能力主题,故而迁移变量的每一维可以认为是用户在这一能力主题上学习需求的变化,迁移矩阵

为了全面分析用户的真实需求,我们需要通过计算每种迁移模式的重要性得分,来衡量每种迁移模式与用户实际需求之间的关系。某个模式的重要性得分越大,表示该模式对用户影响越大。通过这种方式,我们能够捕获最相关的迁移模式并给它们赋予更高的权值。在本文中,我们提出了两种自动计算重要性得分的方法,即基于个体和基于协作的重要性得分算法。

在基于个体的重要性得分算法中,我们可以通过结合用户的历史学习记录来挖掘用户的真实学习需求,对每一种能力迁移模式,我们需要得到这种模式出现的概率值。为此提出一种自适应的计算方法:

其中就是用户在所有迁移模式上的概率分布。通过计算我们就可以挖掘出用户的需求迁移方向,每一个用户的最终需求隐向量可以通过对所有迁移后的需求变量加权求和的方法得到,注意每一种迁移模式也是通过模型自适应学习得到的。

然而个人的学习记录可能比较稀疏,难以全面反应该员工的学习倾向。因此,在基于协作的重要性得分算法中,我们将员工按照其所属部门和职位进行划分,将属于相同部门和职位的员工划归同一组,并认为属于同一组的员工其职业发展倾向较为相似,因此也具有相似的学习需求。在计算重要性得分时,不但要考虑用户个人的学习记录,也考虑和他同一组员工的学习记录。小组学习记录向量和基于协作的重要性得分可以如下计算:

其中sum()函数表示对每一列进行求和以此来对结果归一化,I()是示性函数,ρ是一个平衡参数来调节个人与小组学习记录之间的权重。

最终,需求识别机制可以表示为:

图4.需求识别机制

2.5模型优化与预测


如图2所示,上述DCBVN的各个构成组件均可被统一于一个贝叶斯推断的框架之下,因此,可以通过求解DCBVN概率模型的对数似然函数的变分下界(EvidenceLower Bound, ELBO)来进行模型优化。模型的变分下界如下给出:

可以看到最终的目标函数可以被分为几个部分,第一项是课程学习记录的预测损失函数,中间两项是模型的重构损失函数,最后两项可以认为是模型的正则化项。

在预测阶段,我们可以计算学习记录矩阵的点估计预测结果:

于是对每个员工,将DCBVN预测的课程分值按照从大到小的顺序进行排列,就可以将评分高的课程优先推荐给员工。

当遇见冷启动问题时,即新员工没有历史学习记录时,DCBVN仍然能进行推荐。例如,一种简单的做法是仅使用用户的当前能力状态进行推荐而忽略需求识别机制。此外,还可以利用该员工所处小组的其他员工的学习记录来进行需求识别机制的学习。

3. 实验


·  课程推荐实验:为了训练我们的模型以及验证模型效果,我们收集了30,662名员工在8,693门课程上的学习记录及员工的技能标签档案。经过数据清理,共有714,091个有效的员工学习记录,也就是说学习记录矩阵的稀疏度达到了99.73%。我们分别在通常设置和极端稀疏设置下按照时间顺序划分了数据集。在通常设置情况下,我们对每个用户选取70%的学习记录作为训练集,而在极端稀疏设置下,每个用户仅有30%的学习记录被选作训练集。

在本实验中,我们采取一种常用推荐系统评价指标:召回率Recall@P。其计算公式如下给出:

我们将DCBVN与多个先进的推荐模型进行对比,其中包含一种我们模型的变种模型DCBVN-0,即在需求识别机制的计算中只使用基于个人的重要性得分而不使用基于协作的重要性得分。在两种设置情况下的对比结果如表1和表2所示。从表1和表2中可以观察到,我们的推荐模型DCBVN都取得了最好的效果。此外,DCBVN-O的效果明显不如DCBVN,证明了基于协作的重要性得分算法的有效性。

表1.通常设置下的推荐结果对比

表2.极端稀疏设置下的推荐结果对比

·  冷启动场景下的推荐效果:冷启动问题是推荐系统中常见的一个挑战。在这里,我们随机选择了50%的用户作为训练集,余下的用户作为冷启动问题中的新用户,新用户的数据不参与训练过程的计算。在DCBVN框架下,我们提出三种应对冷启动问题的解决方法,即DCBVN-C1,DCBVN-C2和DCBVN-C3。在DCBVN-C1中,我们仅将员工的能力隐向量用于推荐,即认为能力隐向量与需求隐向量完全相同。在DCBVN-C2中,我们让需求识别机制里的每个迁移模式都具有相同的重要性得分。在DCBVN-C3中,对于每个新用户,我们使用用户所在小组员工的学习记录信息来计算员工的重要度,即只采用基于协作的重要性得分算法。为了进行比较,我们还提供了没有冷启动限制的DCBVN结果。结果如图5所示所示,可以看到即使是最简单的DCBVN-C1方案仍然取得了不错的体检效果,DCBVN-C2的效果超过了DCBVN-C1,说明了认为能力隐向量与需求隐向量完全相同确实是不恰当的。最终DCBVN-C3取得了冷启动情况下最好的推荐效果,这再次证明了小组内其他员工的学习记录对于该员工也具有一定的指导价值。

图5.冷启动下的推荐效果

·  案例分析:为了进一步说明我们的DCBVN模型的可解释性,表3展示了我们系统推荐的一个结果示例。这里我们只展示权重最高的三个技能主题,对每个技能主题,仅列出排名最高的部分技能列表。可以从该员工的当前技能主题分布中推测出她可能是R&D工程师,因为她目前的技能主要与数据处理和编程有关。同时,从历史学习记录中,我们可以发现她想要学习如何成长为一个团队的领导者(课程b)。此外,她还对办公安全课程感兴趣(课程a)。接着我们从DCBVN挖掘到的用户需求技能主题分布中可以很容易地发现,用户需求变量如实地反映了用户当前能力和个人发展需求的差异(主题2和主题3),也就是说,DCBVN成功地学习到她的职业发展目标,即成为一名好的领导者。因此,DCBVN推荐了一些课程来增强她的业务视野(课程2和3)并发展她的领导能力(课程4和8)。DCBVN还推荐了一些技术课程(课程和7)来帮助她提高当前的技能。此外,由于她需要信息安全意识培训,DCBVN推荐了课程1和6。

表3. 用户案例分析

DCBVN同样可以对课程生成可解释性的技能主题分布,表4给出了两个课程排名前3的技能主题展示。对于第一个课程,如果一名用户完全不知道Selenium是什么,她可能会对ExploringSelenium课程感到非常困惑。但是,在DCBVN得到的标签帮助下,她很容易推测出该课程是关于一种自动化测试工具的(实际上,Selenium是一个开放源代码的Web自动化测试工具)。同样,如果一个人不知道吴先生是谁,那么她也难以猜测出Mr.Wu s experience sharing这门课是在讲什么。实际上,吴先生是一名出色的基层经理,我们可以根据DCBVN给定的技能主题分布轻松推断出这一点。

表4.课程案例分析

4. 总结

在本文中,我们提出了一种个性化的员工课程推荐系统,以辅助公司内部员工的培训和发展。该推荐系统的重要特点是综合了员工的当前能力及其职业发展倾向共同建模。具体地,我们提出了一种新颖的端到端结构的贝叶斯协同过滤推荐网络框架(DCBVN)。该框架可以从员工的技能标签中提取处潜在的可解释表征向量,然后利用需求学习机制学习不同员工对职业发展的个人倾向,最终利用一套自适应的协同过滤算法来为员工推荐最合适的培训课程。上述所有过程都集成到一个统一的贝叶斯推断过程中来同时确保模型的准确性,鲁棒性和可解释性。最后,我们在真实数据上进行了大量的实验,实验结果证明了DCBVN框架的有效性和解释能力,以及在稀疏和冷启动场景下的鲁棒性。


推荐阅读专题

留言点赞发个朋友圈

我们一起分享AI学习与发展的干货

如转载,请后台留言,遵守转载规范

推荐文章阅读

ACL2018论文集50篇解读

EMNLP2017论文集28篇论文解读

2018年AI三大顶会中国学术成果全链接

ACL2017论文集:34篇解读干货全在这里

10篇AAAI2017经典论文回顾

长按识别二维码可添加关注

读芯君爱你

这篇关于WWW 2020|考虑职业发展倾向的个性化员工学习课程推荐的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/209535

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

深入探索协同过滤:从原理到推荐模块案例

文章目录 前言一、协同过滤1. 基于用户的协同过滤(UserCF)2. 基于物品的协同过滤(ItemCF)3. 相似度计算方法 二、相似度计算方法1. 欧氏距离2. 皮尔逊相关系数3. 杰卡德相似系数4. 余弦相似度 三、推荐模块案例1.基于文章的协同过滤推荐功能2.基于用户的协同过滤推荐功能 前言     在信息过载的时代,推荐系统成为连接用户与内容的桥梁。本文聚焦于

usaco 1.3 Mixing Milk (结构体排序 qsort) and hdu 2020(sort)

到了这题学会了结构体排序 于是回去修改了 1.2 milking cows 的算法~ 结构体排序核心: 1.结构体定义 struct Milk{int price;int milks;}milk[5000]; 2.自定义的比较函数,若返回值为正,qsort 函数判定a>b ;为负,a<b;为0,a==b; int milkcmp(const void *va,c

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学