数算实习课机器学习算法总结(Naive Bayes, K-means)
我的实现
本学期数算实习课程两个大作业都是机器学习基本算法。
因为写大作业的时候还没有学习python,C/C++代码和冗长而且要交作业需要保密所以不贴了。
大作业1:句子贴标签(Naive Bayes)
题意:给出训练集,有监督学习。
Naive Bayes Classifier以贝叶斯定理为基础,是比较基础的有监督机器学习算法。
理论依据
p(y=ck|x)=∏Mi=1p(xi|y=ck)p(y=ck)∑kp(y=ck)∏Mi=1P(xi|y=ck)
当然实际实现比较容易,只需要注意两个问题:
1.决定标签时候只需要计算概率相对大小,不需要计算分母。
2.考虑概率下溢出到0,而不需要计算分母,只需要取对数相加即可。
3.如果效果很差,多调试输出中间结果。
4.为了防止出现概率为0情况,使用拉普拉斯平滑。
5.后来在队友帮助下调库加了切词提取词干之类算法,效果上升。
(测试效果差,正确率只有20%-30%,其他使用这个算法的组大同小异)
大作业2:图像聚类(K-Means)
题意:给出图像向量,分类,无监督。
K-Means理论上比较容易直观,但是依赖于初始值选取,而且维度过大需要PCA降维等优化。还需要白平衡。
本题实现很容易,效果很差,因为数据量太小而且我没写降维所以效果很差,只算简单实现过了一遍K-Means算法+朴素白平衡。
大作业3:魔塔
没做,但是最后一个样例挺好玩的,最后一关有难度,觉得是搜索+剪枝吧。
具体数据和要求可以参考北京大学2016年秋数据结构与算法实习大作业资料