机器学习是一个很庞杂的体系,我们经常听到一些词汇:“人工智能(AI)”、"深度学习(Deep Learning)”、“机器学习”、“神经网络”、“卷积神经网络”、“Tensorflow”、"Pytorch"还有GPU、NPU、TPU等。这些概念铺天盖地,扑面而来,让人迷惑。如果有一个路线图,将能加速我们的入门。当然,这种指南也是铺天盖地,充斥着github和各大技术社区的AI版面。
本文还是继续造一个轮子。但尽量融入自己的理解,不人云亦云。
机器学习主要解决如下几类问题:监督学习(如分类问题、预测问题)、无监督学习(聚类)、半监督学习、关联学习
监督学习(学习器通过对大量有标记的(labeled)训练例进行学习)
分类问题区别于普通预测问题的是分类问题返回的是类别,而普通预测问题是一个数字。
先学习基本的分类算法:决策树、KNN、贝叶斯
再了解业界经典:SVM、神经网络(如ANN,BP神经网络)
感兴趣可以学习一下经典的统计学理论应用:HMM
无监督学习(与监督相反)
如果不仔细抠字眼,就我浅薄的理解,就是聚类,既然是聚类,由易到难,可以分别学习
K-means,最简单最基本的聚类
进一步学习混合高斯模型:GMM
再进一步可以学习Spectral Clustering(谱聚类)
还有层次聚类等,但是上述三个学习了就对聚类理解很深刻了。
半监督(顾名思义,利用大量的未标记示例来辅助对少量有标记示例的学习)
这个是上述两种的进阶,入门可以不考虑。
这个和数据挖掘最相关
理解频繁项集和The Apriori algorithm算法试试感觉好了。
先推荐几个首先映入我脑海的:
SVD
PCA、LDA
SVM
Naive Bayes、决策树
EM算法
GMM
Adaboost
KNN、K-means
建议在python平台下学习:
理由1:平台有学习框架scikit-learn,里面有很多机器学习的包可供调用,做科研当然是matlab方便,但是结合numpy,scipy, panda和matplotlib等库,可以在python环境下搭建一套足够用的分析架子去实验和看效果。
理由2:国外很多论文慢慢都转向用python实现。公司内部资料也多。
理由3:顺带学python不解释。
理由4: 以上说的很多算法在python平台都可以找到源码研读。
结合自己的平时项目中遇到的实际问题去开发一个实际可用的程序。
这个可以结合个人兴趣和实际情况,如我打算将IT爱好者帖子推荐那套逻辑自己做一下。
能解决问题才是最重要的。解决完一个问题对提升信心帮助极大。
本文部分选自网友的建议,后续我会根据个人体会重新整理,不断完善此文。