宏观理解
机器学习的模型,可以想像成一个黑盒子,你给它一个输入,它会还给你一个输出。说的深一点,这个黑盒子里面装的就是一系列的模型参数,举个例子:在cost function这篇文章里说的 θ 矩阵,加上你给的输入参数,通过计算返回给你一个计算结果。建模也就是训练这个模型的过程。
微观分析
因为机器学习有很多的子类别,比如分类、回归,所以模型的应用上也相应有做分类的模型和做回归的模型。比如说分类模型有决策树(Decision Tree)、支持向量机(Support Vector Machine)、神经网络(Neural Network)等等;回归模型有线性回归(Linear Regression)、逻辑回归(Logistic Regression)、神经网络(Neural Network)等等。有人注意到为什么分类和回归都有神经网络模型?其实很多模型只需要稍加修改,就可以从分类和回归自如切换,比如这里的神经网络,这涉及到一个激活函数的概念现在先不讨论。当然还有别的例子比如梯度提升树(GBDT)。这些都会在后面详细介绍。
建模过程
在处理一个机器学习问题的时候,按照“惯例”(KDD process)我们需要几个步骤:
-
了解问题(understand the domain of problem):我们要知道这个问题是回归还是分类,这个可以从任务的描述和数据集中得知。
-
模型选择(model selection):我们知道是什么问题了之后,就要思考我们需要哪个模型进行建模。
-
数据预处理(data preprocessing):在工程中我们拿到的数据几乎都是布满了噪声(noise point),也许有空缺数据(missing data),也许还有离群点(outlier)。所以这样的数据直接拿给模型进行训练得到的结果可想而知肯定不尽人意,所以机器学习任务一个可能会占用我们80%时间的,就是数据预处理。数据预处理也包括降维(dimention reduction)、数据集成(data intergration)、数据离散化(data discretization)等等,在这一篇文章里就不赘述了。
-
建模(model construction):也就是拿预处理好的训练数据和我们选择的模型进行拟合了,就像我们有了沙子砖头,有了水泥,调配好比例后终于可以盖房了。
-
模型评价(model evaluation):当我们建好了模型之后,我们并不知道它的能力有多强,所以需要用准备好的测试集进行测试,我们会得到一个准确率或者我们想知道的metric结果。有了这个我们可以了解我们的模型的厉害程度,然后进行调整,以便让它更厉害。这里调整的方法比如改变预处理方法,比如进行超参数选择。
-
使用模型(usage):可以投入工程或者做一些自己的应用了。