开头奉上云栖社区的礼物:
在过去的一段时间内,我通过不断的深入学习,成长为一名不错的机器学习从业者。为此我接受了一个小时的访谈,以此来总结我学习的历程。学习机器学习主要有两种方法:理论机器学习方法和应用机器学习方法。
理论机器学习
对于学习机器学习的理论方法,下面的课题应该进行深入的研究。
2.微积分 - 基础,Coursera,高级,Coursera。
3.概率和统计 - 麻省理工学院。
接着就是阅读和研究论文,实施研究工作/新算法,发展专业知识,并进一步选择专业化的研究路径。
应用机器学习
应用机器学习需要条件。
1.对上述科目的基础知识(1至4)很好的理解。
2.Python 或R编程语言,根据您的偏好。
3.学习使用所选编程语言中流行的机器学习、数据操作和可视化库。我个人使用Python编程语言,因此我将在下面详细说明。
4.必须知道Python库: numpy, pandas, scikit-learn, matplotlib
5.其他流行的Python库: LightGBM, XGBoost, CatBoost
速成机器学习方法
如果你想了解什么是机器学习和它可能是什么样的。你可以通过这种方式进行实验,快速掌握。
1.了解机器学习概念概述
2.学习Python或R
3.了解并学习使用您选择的语言使用流行的库
Python环境设置
1.Python
2.代码编辑器/ IDE
2.1:Visual Studio代码(搜索并安装Python扩展,选择最下载的一个)
2.2:Notepad+ +
3.安装python包
3.1:使用python的本地工具管理软件包: pip install <package-name>
3.2:用anaconda管理软件包: conda install <package-name>
4.管理Python(本地)虚拟环境(如果需要多个环境)
4.1:创建虚拟环境: python -m venv c:\path\to\env\folder
4.2:命令帮助: python -m venv -h
4.3:切换环境: activate.bat 位于虚拟环境文件夹中的脚本
4.4:Python(本地)虚拟环境 文档
5.管理Anaconda虚拟环境(如果需要多个环境)
5.1:默认conda环境 - root
5.2:列出可用的环境 - conda env list
5.3:创造新的环境 - conda create --name environment_name
5.4:切换到环境 - activate environment_name
5.5:Anaconda虚拟环境文档
机器学习概念概述
机器学习:是一种通过函数f(x)从大量数据中找到模式的方法,该函数有效地推广到看不见的x, 从而在未被看到的数据中找到学习模式,并使机器学习模型得到训练。
数据集:数据被用于应用机器学习,并从中找到模式。对于监督式机器学习应用程序,数据集包含 x (输入/属性/自变量)和 y(目标/标签/因变量)数据。对于无监督的数据,它只是 x,输入和数据的输出是某种学习模式。
Train set(数据集):数据集的一个子集,用于(训练)机器学习算法以学习模式。
评估/验证/交叉验证集:数据集的子集,不在训练集中,用于评估机器学习算法的工作方式。
测试集:数据集检验学习成果。对于监督问题,训练集合测试集不能相同。对于无人监督,训练和测试集可以是相同的。
算法类型:
监督学习:在监督问题中,历史数据包括需要为将来/不可见数据预测的标签。例如,对于房屋价格预测,我们有关于房屋(面积,卧室数量,位置等)和价格的数据。在对具有给定数据(X数据)和价格(Y标签)的机器学习模型进行后续训练之后,将针对新的/不可见数据(X)预测将来的价格(Y)。
无监督学习:在无监督学习中,没有标签或目标属性。一个典型的例子是基于学习模式的数据聚类。对于房屋细节(面积,位置,价格,卧室数量,建成日期等)的数据集,算法需要查找是否有任何隐藏的模式。例如,一些房屋非常昂贵,而另外一些则是平常的价格。一些房子很大,而一些房子的大小一般。有了这些模式,记录/数据被聚集成一组,如豪宅,非豪宅,Bunglows,公寓等。
强化:在强化学习中,“代理”在“环境”中起作用,并收到正面或负面的反馈。正面的反馈告诉一个代理,它做得很好,代理进行类似的计划/行动。负面反馈告诉代理商,它做了一些错误的事情,应该改变它的行动方式。代理和环境是软件/编程实现。强化学习的核心是建立一个能够成功完成一个环境中的特定任务的代理。
常用算法:线性回归,Logistic回归,支持向量机,K-最近邻居,决策树,随机森林,梯度提升。
预处理:在现实世界的场景中,机器学习算法可以直接应用的状态下,数据很少干净整洁。预处理是一个清理数据的过程,供给机器学习算法。一些常见的预处理步骤是:
1.缺失值:当某些值丢失时,通常通过添加中值/平均值或删除相应的行,或使用前一行的值等来处理。有很多方法可以做到这一点。究竟需要做什么取决于数据的种类。
2.分类变量:离散有限的一组值,像“车型”,“部门”等,这些值被转换成数字或向量。转换为矢量被称为单热编码。在Python中有很多方法。一些机器学习算法/库本身通过内部编码来处理分类列。一种编码方式是 在scikit-learn中使用 sklearn.preprocessing.OneHotEncoder。
3.比例缩放:按比例将列中的值缩减为常用比例,如0到1.在所有列中的值在一个共同的范围内可以在一定程度上提高准确性和训练速度。
4.异常值:异常值需要根据问题和商业案例逐个处理。
数据转换:当数据集中的列/属性没有固有的模式时,它会被转换成log(values),sqrt(values)等等。
特征工程:特征工程是从现有数据中获取隐藏洞察的过程。考虑一个房屋价格预测数据集,其中有“房屋宽度”,“房屋长度”,“卧室数量”和“价格”两列。在这里,我们看到房子的一个关键属性区域缺失,但可以根据“绘图宽度”和“绘图长度”进行计算。所以一个计算列,“面积”被添加到数据集。这被称为特征工程。
训练:这是机器学习算法对给定数据进行训练以找出应用于未知数据的一般化模式的主要步骤。
降维: Dimentionality减少的目的在于找到所有功能中最重要的功能,旨在减少 维度 的数据。您可以在这里找到更多关于降维的信息。
评估度量标准:评估度量标准是用于评估其正确性预测的度量标准。机器学习算法在训练时使用评估度量来评估,计算成本并优化成本凸函数。尽管每个算法都有一个默认评估指标,但建议根据业务案例/问题指定确切的评估指标。
参数调整:尽管当今最先进的算法大部分都具有合理的参数默认值,但通过调整参数来控制模型的准确性并改善总体预测,总是有帮助的。参数调整可以通过反复改变和评估准确性来反复试验。或者,可以提供一组参数值来尝试所有这些参数的不同排列,并找到最佳的参数组合。这可以在scikit-learn中使用称为超参数优化器的一些辅助函数完成 。
过度拟合:过度拟合是机器学习模型几乎记忆所有训练数据并且几乎准确地预测已经在训练集中的数据的状态。这是一个模型未能概括和预测未被看见的数据的状态。可以使用正则化来处理过度拟合,如果配置不当,则调整超参数,从而阻止部分数据集使用正确的交叉验证(1)(2)策略。
欠拟合(差异):欠拟合是即使在预测训练集中的数据时,机器学习模型的预测也不会很好。这也被称为具有高方差的模型。欠拟合可以处理添加更多数据,添加/删除特征,尝试不同的机器学习算法等。
正则化:在模型试图进一步学习(减少错误,倾向于过度拟合)的某个时刻,正则化有助于对付过度拟合效应。正则化通常是在成本/误差计算过程中添加的参数。机器学习算法可能不是明确地提供正则化参数。在这种情况下,通常还有其他一些参数可以调整,以在必要的范围内引入正规化。
预测:为了用训练的机器学习模型进行预测,通过提供测试数据集作为参数来调用模型的预测方法。测试数据集应该按照训练数据集的方式进行预处理。换句话说,在用于训练的机器学习模型的相同格式的训练数据中。
其他术语:
模型堆叠:当单个学习算法不好时,多个机器学习算法被用来进行预测,并且预测以不同的方式组合在一起。最简单的是加权预测。有时,其他机器学习模型(元模型)被用在第一级模型的预测之上。这可能会达到任何复杂程度,并可能有不同的管道。
深度学习
有趣的是,今天解决的所有机器学习问题中的大部分(我猜测超过90%)都是使用随机森林,梯度增强决策树,SVM,KNN,线性回归,Logistic回归来解决的。
但是,有一些问题不能用上述技术来解决。类似图像分类,图像识别,自然语言处理,音频处理等问题,但可以使用称为深度学习的技术来解决。在开始深入学习之前,我相信首先要掌握所有上述概念。
良好的深度学习资源:
1.Fast.ai - Pranay Tiwari!
2.neuralnetworksanddeplearning.com - 一本在线书籍,强调理论和基础
4.deeplearningbook.org - 一本在线书籍
如果你知道深度学习的概念,一些流行的深度学习库是:Keras,CNTK,Tensorflow,tflearn,pytorch,Theano。
实践:
练习是最重要的,没有提及练习机器学习,这个指南是不完整的。要进一步练习和掌握你的技能,下面是你可以做的事情:
从各种在线数据源获取数据集。一个这样流行的数据源是 UCI机器学习库。
另外,您可以 搜索“机器学习数据集”。
参加在线机器学习/数据科学比赛。一些流行的是- Kaggle,HackerEarth等等。如果你最终从非常困难的事情开始,试着坚持一下。如果还觉得困难,把它停在一边,找到其他的。没有必要失望。通常在线比赛的问题有一定的难度,可能并不适合初学者。写下来你所学到的东西!这将有助于巩固你对这个问题的理解和想法。PS:可以在云栖社区发表!
关注数据科学,关于Quora的机器学习主题,很多伟大的建议和问题/答案。
最后的想法:
如果您正在认真从事机器学习/数据科学领域,或者您正在考虑改变职业生涯,请考虑您的动机以及您为什么愿意这样做。
如果你确定,我有一个建议给你。 永远不要放弃。这绝对是值得的,我可以说,从过去18个月以来,我走过了这条路......几乎每一天,每个周末和每个闲暇的时间(除了我旅行时,或者完全被我的日常工作所淹没)。掌握数据科学的道路并不容易。正如他们所说: “罗马不是一天建成的!”。你需要学习很多科目,兼顾不同的学习重点。即使学了很多东西,你仍然会发现以前从来没有想过或听说过的新东西。你不断发现的新概念/新技术可能会让你觉得你还是不了解很多东西,还有更多的理由要报道。这很常见。只要坚持下去。设定大目标,计划小任务,只关注手头的任务。
本文由阿里云云栖社区组织翻译。
文章原标题《getting-started-machine-learning-one-hour》,
作者:Abhijit Annaldas是一位软件工程师,也是一位贪婪的学习者,自学获得了机器学习方面的知识和专业知识。译者:虎说八道,审阅:
文章为简译,更为详细的内容,请查看原文