研究生期间,我从机械专业转为工业大数据+机器学习。当时的我完全没有学过Python,对机器学习了解甚少,从一脸懵,到后来逐渐入门Python机器学习,积累了一些学习经验。现在简要分享一下~
入门Python机器学习,我认为可以分成两部分:机器学习的基本概念和Python机器学习实战。在掌握了基本概念之后,就要去通过项目和代码去学习,多看代码。并且,在实践和解决实际问题的过程中,我们也会对所学的知识印象更深刻。
机器学习的基本概念
机器学习(Machine Learning)指的是一类让计算机能从数据中学习,找到数据规律,并预测未知的方法。其中,用于给计算机学习规律的数据称为“训练集”,用于检验机器学习效果的数据称为“测试集”。机器学习模型在未知数据或测试数据上的表现称为“泛化能力”。
按照机器学习解决问题的类型,可以分成监督学习、无监督学习、半监督学习。
监督学习(Supervised Learning):指训练数据有标注,按照预测的结果类型,可以进一步分成分类(预测类别)和回归(预测数值)
- 举个例子:给定一个瓜的色泽、敲声等数据,判断这个瓜是好瓜还是坏瓜,这个是分类问题;根据瓜的色泽、敲声,预测瓜的含糖量,这个是回归问题。
无监督学习(Unsupervised Learning):指的训练数据中没有标注。主要用于聚类。
- 比如,给定一群瓜的色泽、敲声、根蒂状态等数据,来给一群瓜聚成不同的类别,这样可以给不同的瓜类定不同的价格。注意,这里数据没有标注,我们不清楚具体的类别是哪些,需要根据聚类后的群详细探查数据,找到数据的共性(例如本地有籽瓜、本地无籽瓜、外地有籽瓜、外地无籽瓜等)。
半监督学习(Semi-supervised Learning):介于监督学习和无监督学习之间,训练数据只有部分有标注,模型需要利用有标注和无标注的数据一起训练。存在半监督学习的原因是,数据人工标注成本高昂。
- 举个例子,瓜农有100个瓜,由于时间成本原因,他单独抽样了10个瓜,根据色泽、敲声标注为好瓜/坏瓜,将40个无标注的数据并入训练集训练;最后预测剩下50个瓜的类别。
机器学习的基本步骤如下:
数据预处理:对数据进行清洗、异常值处理;同时将不同大小的数据规范化成0-1之间,减少不同范围的的数据对结果的影响。
特征提取/选择:对高维数据进行降维,选择或者构造对结果影响最大的数据特征
前两步在机器学习实践中比较重要,选取好的数据特征,比选取好模型带来的效果常常更显著。
模型选择:根据数据类型和需要解决的问题,选择合适的机器学习模型。常见的机器学习模型有:
- 监督学习:逻辑回归(Logistic Regression)、支持向量机(Support Vector Machine)、随机森林(Random Forest)、多层感知器(Multi-Layer Perceptron)等
- 无监督学习:K均值聚类、主成分分析(Principal Component Analysis)、层次聚类(Hierarchical Clustering)等
- 半监督学习:自训练(Self-Training)、半监督支持向量机(Semi-Supervised SVM)、标签传播(Label Propagation)、生成式半监督学习(Generative Semi-Supervised Learning)等方法
机器学习模型的详细原理,可以参考周志华的《机器学习》。
结果验证:在测试集上进行模型效果验证,选择最优的模型。回归问题通常计算测试集实际值与预测值的均方误差;而对于分类问题,常计算模型的精度,查全率,召回率等参数。
项目实践
实践之前,可以先配置好Python本地环境,还需要了解Python常用的机器学习库:
- Numpy(用于矩阵向量计算)
- Pandas(用于数据分析任务)
- matplotlib(方便的绘图工具库)
- Scikit-learn(几乎集成了所有常见的机器学习算法)
- Keras/Tensorflow/Pytorch(主要用于深度学习)
对于初学者来说,多看代码是比较重要的,这里有两种方式接触到机器学习项目的代码。
1.可以去Kaggle(著名的在线数据科学竞赛平台和社区,它提供了真实的数据集和各类问题)的Competitions模块,找一些简单的数据和问题,比如泰坦尼克号存活预测问题,可以看到其它人上传的Code。
2.去Github(全球最大的代码开源社区之一)找一些Machine Learning为关键词的项目,直接看代码。以上代码,最好能在本地或者线上编译器运行一遍。
刚刚入门时,在看代码的过程中,我常常会遇到一些看不懂的地方,需要去各种地方查阅资料,一研究就是大半天。
而现在,大模型可以帮我们解读代码。比如我对上述从Kaggle中找到的数据预处理代码进行提问:
利用大模型帮助我们解读代码,阅读代码的效率可以大大提升。同时大模型还可以帮助我们写代码、给代码debug等等,能提高我们的工作效率。
项目实践方法
可以用一到两周的时间,找一些基础的项目(包括分类、回归等不同的问题类型),只看别人的代码,多多理解学习,然后运行,体验下编译出结果的快乐。
接下来,我们要开始自己实战了。仍然是用之前找的项目,尝试不看其他人的逻辑,自己应用其他机器学习算法跑一遍整个数据预处理、特征选择、模型选择、结果验证的流程;
遇到不会的地方,可以自己查阅Python官方文档,或者向AI大模型工具进行提问。
这样,你就基本入门了几个机器学习项目。
之后,你可以在Kaggle找一些难度更高、数据量更大的项目,用同样的流程学习:
用一两周先看别人的代码,再用一两周自己尝试实现。
当你积累得足够多的时候,之后可以参加一些实时的竞赛,竞赛中是看不到别人的代码的,整个项目完全由自己实现。
以上是机器学习入门的相关介绍。Linus大佬说过:"Talk is cheap, show me your code"。机器学习是一门实践驱动的领域,真正的理解和掌握需要不断地动手实践,加油吧