选课类别:计划内与自由选修 | 教学类型:理论实验课 |
课程类别:本科计划内课程 | 开课单位:人工智能与数据科学学院 |
课程层次:专业核心 | 学分:4.0 |
《机器学习概论》课程覆盖广泛,包括西瓜书1到11章及13、14章的内容。涉及的一些主题如线性回归、支持向量机、K-Means等在其它课程中也有讲解。部分学生提到课程内容多且难,特别是到概率图模型时课程进度显得仓促。课程实验包括LR、SVM、XGBoost、K-Means和LDA,对部分同学而言难度较大,但内容总体实用。
连德富老师讲课风格被部分学生认可,认为他在讲解复杂内容时逻辑清晰。但也有学生反映,这门课程的理论和实践之间存在较大差距。一些学生不喜欢只在PPT上推导复杂数学公式的授课方式,希望更多的板书推导。教师在课堂上讲解的重点与考试内容或有脱节。
课程作业包括每章节的两道习题,有的学生认为较难,但也提到可以通过网上资源找到解答思路。实验方面,包括五个主要实验,部分实验与算法基础课程重复。对部分同学而言,最后一个实验(Lab 5)特别困难,其中出现了训练数据和标签不一致的情况,导致分类模型的准确率仅接近随机猜测的水平(25%左右)。对于这次Lab 5,不少同学表达了不满,认为数据集存在问题,且助教在处理这个问题时不够及时。
期中考试为开卷,包括6道题,允许查阅手机和电脑;期末考试为闭卷,也包括6道题,难度较大且两级分化严重,考察内容广泛,包括LR、决策树、SVM、PCA、高斯混合模型、EM算法和变分推断等。部分学生觉得考题更像数学考试,复习难度较大,但整体题型较为合理。
尽管课程内容和考试难度较大,但连德富老师在最后给分方面比较慷慨。不少同学表示总评拿到不错的分数,这让他们对课程的整体体验增加了好感。
助教们的表现不一。一些學生表扬了个别助教的认真和负责,但整体来说,助教在答疑、作业批改及实验指导方面存在问题。特别是Lab 5的实验,导致实验环节受到不少批评。
这门课程我中途退课了,所以不评价,打分也是当前评课社区的平均分。
这条评课只是揭露以下 ML lab5 的数据来源(简简单单开个盒),以及为什么只能训练到 25% 的正确率。
我不太熟悉 pandas 的 API,因此本文得到了 ChatGPT 的大力支持,在此表示感谢。那么,让我们开始吧。
首先保留两个文件: train_feature.csv 和 train_label.csv。
这是原训练数据集及标签。我做了一些预处理,删除了值为无理数的特征(真实数据集很难出现)。
下面这样处理数据:
import pandas as pd
# 读取 csv 文件。
data = pd.read_csv('Dataset/train_feature.csv')
# 计算每一列的中位数和标准差
medians = data.median()
stds = data.std()
# 对大于 1000 的替换为中位数
for col in data.columns:
data.loc[data[col] > 1000, col] = medians[col]
# 计算相关矩阵
corr_matrix = data.corr()
# 根据每一行中绝对值大于 0.7 的元素个数排序,打印前面十项
sort_order = corr_matrix.abs().gt(0.7).sum(axis=1).sort_values(ascending=False)
for i in sort_order.index[:10]:
print("Index: ", i, ", Count: ", sort_order[i])
输出结果:
Index: feature_73 , Count: 4
Index: feature_69 , Count: 4
Index: feature_5 , Count: 4
Index: feature_92 , Count: 4
Index: feature_89 , Count: 2
Index: feature_50 , Count: 2
Index: feature_83 , Count: 1
Index: feature_88 , Count: 1
Index: feature_87 , Count: 1
Index: feature_84 , Count: 1
好,我们来猜猜这些数据是什么吧。
掺杂的极端数据去除效果较好。可以发现数据间出现了比较强的相关性。观察这些特征:
因此应该是人体相关的数据,继续观察:
基本可以断定是关于人体数据的数据集了,下面开始搜索吧。
搜索技巧:永远搜索最冷门的关键词。在 kaggle 上搜索 forward bend(体前屈),第一条结果:
https://www.kaggle.com/code/d4rklucif3r/body-performance-count-luciferml-eda-models
75.24 是一个两位小数,看上去不太会轻易重复。我们就在训练集里搜索这个数据吧。会发现出现在 7836 行,且这一行的 feature_92 恰好是 172.3。到这里我们就可以断定,这就是实验的原始数据集了。
这一行在原数据集对应 C,在助教提供的数据集对应 2。
再看看别的数据吧。
6931 行(体重 78.46)在原数据集对应 D,在助教提供的数据集对应 3。
4401 行(体重 84.18)在原数据集对应 A,在助教提供的数据集对应 3。
显然标签的打乱和样本的打乱并不是一致的!这如果能预测出什么东西,那确实是个奇迹了。
可能这个实验的本意是让大家感受到炼丹的奥妙吧。
补充:实验出错本身不是什么大事,可以理解助教出实验的辛苦。但是当大家普遍反馈这样一个四分类问题预测正确率只有 25% 时,甚至有的同学已经开始质疑数据集的时候还不去检查更正实验,那只能说这种糊弄的态度让人无法理解。
原始数据集能超过 60% 但是「精心设计」过的数据集 30% 都达不到,到底是机器学习算法有问题还是「精心设计」过的数据集有问题?
课程内容:西瓜书1~11,13,14章;
课程作业:每章2道习题,虽然后面几章的作业都极难,但总是有大佬写的出来,如果是课后题网上也会有人分享解题思路,所以不是那么煎熬;
课程实验:一共五个:LR, SVM, XG-Boost, K-Means, LDA。其中LR和SVM和K-Means都是人工智能基础写过的实验,再做一边就会很简单,XG-Boost等于说是决策树加一堆循环,不是特别难,但最后写LDA的时候真的是难受死了,看了好长好长的几个网页才算弄懂了LDA,Gibbs采样,然而真正写代码的时候发现预处理远比现成的傻瓜式算法麻烦的多,不过总体感受来说还是挺好的。
课程考试:期中开卷,6道题,甚至可以查手机电脑,现在想想其实除了最后一道题其他的并不难,但是当时太急了所以没复习完也犯了很多没必要的错误;期末闭卷,也是6道题,难度两级分化比较严重,第一题考LR的损失函数和求导相关的证明,是考察记忆性的东西;第二题是决策树算法的一种不同理解,很简单;第三题考SVM的对偶问题相关的题,更像是运筹学的考试题;第五题考PCA的数学推导,考试的时候感觉有些无从下手,这学期上了大数据算法课才明白如何用SVD分解的方式严格地推导;第四题考高斯混合模型和EM算法,但可惜的是我真的没记住除了大致概念以外的东西;第六题考变分推断,也是除了联合概率其他的都不会了。总之两级分化确实严重,考察的要么是大家已经熟悉但是还没有深入的知识,要么是根本就不熟悉的知识,但题型的设置还是挺合理的。
给分:这么难的课程和期中期末考试真的全靠老师奶,可能是我考试写的没那么烂,每次实验也都按时交了,而且写的都还不错,总评92,老师真是大好人了。
建议:
1)首先对大数据学院的同学:机器学习可以说是最为关键的基础入门课程了,所以好好学还是非常有必要的,但机器学习难就难在对数学基础要求很高,以科大的线代和概统教学来看是完全达不到学好这门课的要求的(当然我也学得一塌糊涂)。建议学的时候找几本数学专业的线代或者矩阵论的课本看看,里面有些东西可能会很有用,像生成子空间,补空间这些概念其实会很帮助理解,一些矩阵求导的公式如果能记住是会在推导和考试中很有用的;概率论的知识多复习复习,数理统计最好也多看看,概率图模型和贝叶斯学习中会涉及到很多贝叶斯统计的知识,尤其是话题模型(LDA),是需要以很多贝叶斯统计先验后验分布的知识为基础才能更好的理解的,老师要在每周短短的三节课上详细讲这么多东西显然是不可能的,所以只能依靠自己下去一点一点弄懂。
机器学习这个学科和许多课的关系联系都太过于密切,除去线代和概统的基础,运筹学的对偶原理和梯度下降算法一类的知识也都是机器学习中一些算法推导的数学依据,另外,像熵和KL散度(KL距离)这些概念会在信息论课程中更详细的讲解,这门课真的是越学越让我发现数学和计算机算法之间那种令人着迷的联系,但也让我越发意识到自己的数学基础是多么的差(科大引以为傲的数理基础其实大部分都是对工科学生一点用也没有的大物实验基础吧)。
2)对于其他院的同学:大三的其他院的同学还是不要来选这门课了,毕竟很难,想学好也很花时间;信院AI班的同学在课程设置上来讲似乎是可以学这门课的,但是不是已经有王杰老师的预定折磨了,为什么要提前受一遍折磨呢?
但如果您是大四的同学,并且没有拿优秀的雄心壮志只想摸摸鱼划划水混4个学分并且稍微学一些东西,那么欢迎您为大数据学院的大三同学贡献优秀名额,不胜感激。
3)对于老师和助教:老师可以说是很用心在准备这堂课了,但是西瓜书上的东西实在是太多了,其实应该建议大数据学院教秘把人工智能基础和机器学习的课程设置改一下,或者是直接把刘淇老师的数据科学导论(现在似乎叫数据分析与实践)和人工智能基础和机器学习三门课整合一下,我认为一个合理的学习方式应该是:两学分的课来讲传统的人工智能算法(A*搜索一类的),3.5~4学分的课来讲一些概念上和推导上较为简单的机器学习算法(LR, SVM, K-Means),4学分的课来讲比较复杂的机器学习算法(EM算法,LDA话题模型等)。或者直接把所有的所有的机器学习算法都放在一门6学分的课上来讲,一周上六个课时,像物院的量子力学一样,这才是比较合理的,而且教材其实采用李航老师的《统计学习方法》和西瓜书结合会比较好一点,西瓜书上完全没有给出HMM模型的三个问题以及解决的算法,《统计学习方法》上面对此有很详细的讲解。正如计算机视觉课程的曹洋老师所讲,西瓜书作为初学者的教材实在是太不友好了,它更像是了解了很多知识之后进行回顾和遐想的一个提纲,但是这学期的课程上下来总的来说还是让我受益匪浅,也明白自己学得并不透彻,之后也会有很多复习和回味的必要。
助教的话可能有点力不从心的样子?毕竟在这个很多人都忙着改模型,调参数的时代,真正去细致的学习机器学习算法背后的数学的人可能并不多?但至少每次作业都有答案发在群里面,期中的答案也有,实验虽然看得比较晚,但出总评之前应该是详细检查过了,不像操作系统的助教看都不看就直接只给个及格分。总的来说助教还是比较负责认真的,只是这门课程实在太难了,如果能有道行高深的助教上一些习题课提纲挈领地把老师讲得知识再理一遍那就更好了。
最后感谢老师,这门课让我在被迫与计科的众多大佬狂卷的同时还能够认清自己最初转到大数据方向的初心是什么,也认清楚自己喜欢的是更数学,更基础的东西,而不是一些虚无缥缈的东西,即使不像大佬那样能够水论文依然心安理得,并且还能有一个挺好的总评。
首先是不推荐计科的同学来选修,这门课需要理解的数学概念非常的多,可能涉及到一些泛函的知识。
其次是这门课程的实验和理论的差距是非常大的,理论没有办法得到很好的实践。
其次最想要吐槽的是使用的课本,西瓜书就是**********,建议大家去看PRML。
连老师挺好的,但是感觉不太喜欢那种推导全都在PPT上的老师,有上过许老板的课的人都知道许老板的图论都是一步步推的。连老师有些slides似乎根本没想让你看懂。
最后是2022年的传世经典25实验。对于这个**实验的话,我不多做评价,感觉是感谢世界杯,让我做这个实验的时间比较短,也就是省了我很多时间。让我们说,谢谢世界杯!
评论区之前有50胜率大哥,人家直接删除评论了,懂的都懂。
这里的大哥按照 CF 那边的语义理解哈,背背背起了行囊~~
刚刚发现自己把准确率打成胜率了,不过蛮好玩的,就留下来吧
lab5,10000个sample,120个feature,4分类问题。其中有十多个是真实特征,一百多个是助教生成的假特征,想考我们怎么降维or特征选择。
然而学生里没一个能做出良好的特征选择。4分类问题,我们得到的accuracy只能稍微超过25%,最高的也不超过30%。
负责lab5的助教竟然认为这很合理。没一个学生问这个数据集是不是有问题,qq群里的其它几个助教和连老师也知道这情况,他们也啥都没说。
lab5结束后有个issue请求助教公开原始数据集,负责lab5的助教拒绝把原始数据集公开,理由是下一个学年还要用。
就冲这一个事,这课只能打1分。这个lab5的影响太恶劣了。4分类准确率25%那不就是瞎猜吗?助教竟然说这很正常。
——2023-03-21——
实名了,没什么可匿名的。
还是给到6分,毕竟连老师确实教了我们很多知识。
回忆版期末试卷 ml_final.docx
还没出分,懒得等了,关于实验,lab5应该是数据给错了,跟原始数据集匹配程度只有24%,所以50%的可以歇歇了,难怪不给开源数据集。
关于考试:纯数学,概统、线代不行的慎选。
关于平衡计科和数院:为什么要平衡?不是自己选的课吗?
哦忘了拷打某助教:习题课敷衍、一道题答案网上轮着抄各种各样的、期末拖了半天不改作业,🐮
希望这门课助教多提升一下自己机器学习需要的数学基础,认真对待作业答案讲解,不要对着网上答案人云亦云。西瓜书网上答案质量参差不齐,大部分都是抄来抄去。
学生投票闭卷我真的笑嘻了,选闭卷是要多卷啊,一些学院保研已经紧张到这个程度了吗?
(没有对其他学院的恶意,单纯吐槽讽刺半开卷的那个货
两星观望,感谢助教趁着快过年了给出的教学事故级别的lab。
后续考完试出总评后会取消匿名并追加正常点评。
虽然之前有人猜到是我了,不过先实名回来,点评会在后续更新。这门课总体而言还是值得一个9分来拉拉的,毕竟个人觉得主要的锅应该是部分助教去背)
某摆了一学期的原生生物突然想起还有一个机器学习概论的点评没写完……
在写了在写了(逃
说实话,这门课阴间的地方其他评论已经叙述得挺详细了,而对数学人而言,一个有些而让人不适的地方是它「数学但又不太数学」,在前期具有充分的理论推导的时候,实践仍然是非常割裂的、经验性质的操作。这点在学了深度学习后感受尤甚,会在深度学习导论的评论区提一提。(不过由于那门课有暑假ddl,至今还未出分,点评会在出分后写)
不过,个人是挺喜欢连老师的风格的,无论是ppt还是课堂,对容量如此大的一门课来说都是难能可贵的优秀级别。只能说希望老师这学期再多抓抓实验设计,以及考试中增添一些不那么数学的内容,来让这门课更适合作为机器学习的入门课程。
(另:给分个人觉得不错
开学初抱着旁听学学的心态加了课程群 潜水一学期,课程群看到最后 只能说幸好这学期没选机器学习
俺也一样
不过要说教材还是不错的……虽然我就看了一小半。
因为没上这个课,所以给的都是平均数。
听说他们最后一个实验设计分类器,一共有4个类,听说最好的做到了正确率29%还是30%来着,感觉挺离谱的。我还有个朋友只有24%,这也真是没谁了。
课程:感觉连老师讲课还是不错的,只是因为课程的难度导致很多东西听不懂也看不懂。课程的内容是有点多,感觉18周的时间上的也很匆忙,很多东西都需要耗费很多时间理解
助教:我真的不知道这门课的助教到底做了哪些任务?使用gitlab的issue进行答疑且不允许私聊答疑更是前所未闻,不想当助教可以不当~(除了gyw助教,感觉其它助教都不会看gitlab😅😅😅)
作业与考试:作业和考试是一个东西吗?既然考试都考概率论和线性代数,为什么作业不留这些内容?留了一堆西瓜书的文科题,还不如多出点计算题。而且考试的内容和机器学习的算法大多数无关,考了EM和变分推断,说句实话这些内容本来就比较难,如果出的是作业那题感觉还能做,结果考试又出了个概率无向图的变分推断(又是没见过的题型)根本无从下手,只能硬着头皮写出个我认为正确的式子
实验:关于lab5,我认为出这个实验的本意是好的,完成一次完整的实验过程,包括数据预处理,特征选取,模型选取,调参之类的,以及最后实验报告要进行检验,整体设计感觉还不错,但是你这答辩数据集是什么意思?
给分:考试和实验得分都是不透明的,但好在最后总评给的不错,符合预期,应该是调了不少
这个班有很多数院和计科的,因此会很卷,慎选,个人觉得这门课的收获还是很大的,至少它能强迫让你学习不少东西,而且很多知识点都是非常有用的,所以还是推荐选的
给连老师拉一下分数,(考试内容必须得扣分,数院人不是降维打击嘛)
————————————————————————————
还没考试,还没出分,老师10分,助教0分
课程内容与往年一致,但是由于西瓜书写得十分难懂,建议学习时参考不同的教材,关于ML的网上资源应该很多,多找找总有适合自己的。
作业多是西瓜书后的题目和老师留的思考题,难度很大,不过不会做也不用太焦虑。
今年的实验是LR,SVM,DPC聚类,降维和一个综合实验,综合实验是一个二分类问题,难点在于数据预处理,不过对于大数据学院的同学们来说应该很熟练了,总得来说实验没什么难度(也没什么意义)。
课程考试更像是数学考试,而且题目和老师的研究方向有一定关系,比如RecSys和Diffusion models,不过不知道这些也不影响做题。从老师在群里与同学们的交流来看,老师有想要改进考试内容的想法,不过这学期做出的改进似乎还不够,课程最后应该有不少同学提了建议,希望这门课以后会更好。
关于给分:应该说是很奶了,不过从这门课的评价来看充分印证了“给分社区”的本质。这门课作为大数据的专业核心课程还是有不少需要改进的地方,给个八分鼓励一下。
这门课每年都考变分推断(最后一题),甚至是老师考试前一天晚上强调的唯一必考内容,并且这部分内容是在最后两次课上讲的(这时候已经没什么人来上课了),很多同学在复习时对着西瓜书和PPT上的逆天推导过程看半天看不懂,在这里建议大家参考下面这篇论文第2~3页的推导过程:
Understanding Diffusion Models.pdf
顺便了解一下diffusion models(
根据往年的经验,把ELBO的推导过程背下来至少能让你做到最后一题的第二问
最后提一嘴,这门课目前的实验还是太简单了,从数据集到模型、到学习任务都太友好了,如果想提高自己的实践能力,还是得去参加些比赛。同时,不要沉浸在这些过时的东西中沾沾自喜,都大三了,该看点前沿的东西了。
lab5 好难调,炼出来的全部都是废丹,孩子哭了
数院生答一波
首先连老师课讲的真的好好,感觉从各个机器学习模型中学到了很多,但可能是课时安排问题,最后讲到概率图模型时有点仓促。
助教:感觉除了顾助教,其他助教好像参与感不高,习题课也相对简单,很多只是讲了习题,没有讲拓展的一些东西,另外,作业判的有点慢。。
考试:期末考试出题感觉有点小问题,感觉不像是机器学习的考试,更像是数理统计的考试,甚至那道后验分布是数理统计原题,只不过问法不同,虽然机器学习和概率统计这些密切相关,也可能是模型本身不好用来作为期末考察手段,但还是感觉怪怪的
实验:难度跨度有点大,对于数院中等生不太友好,本身选这门课是想增强编程能力加上学习一些基本的机器学习理论,但实验难度有点劝退(也可能是我自己的问题,哭了)
唯心地,我认真对待这门课,也掌握了一定的机器学习能力,可是为什么考试时什么都不会呢?
冲着助教布置的最后一个恶心实验也要劝大家:快逃!
考完试了,只能说,学了一个学期但是根本不会做题目,甚至连概率论的知识也记不清了。计科人真的不建议算唉。
出分了,谢谢连老师,加两分
来吹一波水
首先机器学习真的很难,不管是连老师的还是隔壁王杰老师的,基本就是让非数的同学来学各种数学算法(当然学数学的也不见得轻松),作业只是西瓜书原题,代码是一些经典算法或者会议论文复现,只要能理解上课内容+一定的代码能力不是特别难完成
要注意的是上课和考试的gap,上课仅仅是把各种算法讲一遍,数学内容只是各种参数怎么优化,怎么计算。但是到了考试,就是真的把学习过的算法思想应用到实际问题,或者应用一些算法(优化)技巧。如果能把上课内容全部吃透,卷子拿到8成以上的分数应该不成问题。
但是连老师给的实在是太多了...
一周一章不带停的,bayes 那一章甚至在PRML里面花了三章来讲,连老师硬是三节课讲完了。所以很多数学推导只能去记(然后忘),课后花大量的时间去理解。一个很有意思的事情就是你可能花一晚上也不能理解这个算法的思想,甚至可能因为你上课走神然后翻遍ppt也没找到某个变量是如何定义的(对不起连老师),所以上课专注的学习虽然困难,但对于这门课还是必需的,不然就得花大量时间去补。但同样的,如果能全部吃透,那之后无论是考试还是面试,这一块绝对是乱杀了
机器学习确实是需要花时间去理解的,同时也要利用好手头上的资源,老师讲的可能是他认为最能让大家听懂的,不一定是最适合的,b站大学上会有很多不同视角的解释,希望能帮到大家
强烈建议同时修读凸优化/运筹学/最优化+回归分析/多元分析
bd:半开卷,未划重点,声明期中已考内容不考
期末
1.PCA算法,对给定二维样本求协方差矩阵,求降维后的坐标
2.BP算法,作业题原题
3.交替最小二乘法伪代码,分析算法复杂度
4.softmax函数的负对数似然函数,证明其为凸,写出多分类牛顿法伪代码
5.概率计算题
6.变分推断
复习建议:抄原题做原题,重点算法推导过程熟练度要求高
ps:突击此课真的牛至痛,希望后来人平时注意好好学习
给分很好,老师是我叠
毫不夸张的说,助教是sb。
——————————————
出分后更新:虽然助教令人很不满意,但是这并不影响连老师博爱的光辉照耀我们。连门🙏🙏
期末考试就会一道,紫砂了
还没考试,lab5先扣两昏
课程内容&作业:这门课确实挺难,覆盖的内容挺多,基本上就是西瓜书除了12,15,16章以外的全部内容,不过作业较少(4次书面作业,每次6-7题),实验原先准备安排6次,后来因为没时间了所以改成5次(LR, SVM, XGBoost, k-means, topic model),最后一次实验由于延期考试+确实很难,DDL也改到了年后,这一点挺好的
考试&给分:期中全开卷(可以带电子设备查资料),期末闭卷,两次考试都很难,导致很多人表示某些题复习到了也不知道怎么做,我在考完当天下午复习下一门的时候发现有一道题想错了,瞬间感觉要凉了,不过老师给分巨大奶,真的感谢老师
p.s.个人认为这门课应该在8分左右,但考虑到第一次开课+给分超好,还是给了10分
课程很难,内容也比较杂,上课PPT基本上会把整个内容过一遍,重点不明晰,考试内容和上课重点有些许脱节
但是老师很奶,ldf是我爹
被期末狠狠创飞了,我真不该选这课的。