数据建模的实现方式
1:搭建数据模型
2:去网上下载代码,用C++和C语言编写的算法包居多
3:通过python编写数据模型调用下载的算法包
4:收集训练集数据
5:在训练集上训练模型的参数
6:通过交叉验证法初步验证模型的有效性
7:通过有刁难性的测试集或者一组未训练过的测试集测试模型的有效性
8:检验模型的时间复杂度和空间复杂度
9:让运行结果可视化
10:通过交互性软件设计,把算法结合到一个应用模块里。
11:给一线员工试用,得到反馈后,再调整。
数据模型的二阶段上线方式
1:先根据当前的数据(可能由于各个一线员工的熟练程度的不均衡,导致提供的训练集有一定的误差),和搭建的数据模型,先做出一个试用版。
2:根据试用期的反馈,再调整。
决策树的很大的优点
可以处理现实问题中训练数据格式多样,缺省值较多的情形。其复杂度主要有树的层数来体现。可以处理现实问题中训练数据格式多样,缺省值较多的情形。其复杂度主要有树的层数来体现。决策树对于数据的要求非常低,也不需要无量纲化处理,但是,对于线性回归问题,是必须先经过无量纲化处理后,才去训练模型参数的,否则就会出问题。
它有两个强化途径
1:用集成化方法做成随机森林,理论证明,只有每颗决策树的预测正确率大于50%,超过一定数量的决策树组成的随机森林的预测正确率能超过85%。该方法是可以并行的。
2:逐步提升法,将上一个决策树搞错的测试例子,作为下一个决策树的测试例子。以这种方式不断进行。此种方式只能串行编程。
神经网络算法
神经网络算法非常消耗计算资源。虽然AlphaGo强大,大概是157层的神经网络,但是只有google能跑起来。一般的企业根本不做到。神经网络算法虽然可以并行,但是由于一般的企业计算资源不足,速度很慢。这也会使得一旦发现模型不正确,已经过去好几天了,算法的测试和调整周期长。不建议使用。
卷积神经网络算法主要是处理图像、视频、和音频。
我们总是假设以上对象是连续的、光滑的。所以你总是可以用一个均值向量代替相互靠近的数据点所在的那个数据块的数据。
通常卷积神经网络不是在CPU上实现的,而是在GPU上实现的。GPU是显卡。
一般的典型数据建模算法都有“过拟合”的风险,要通过一定的技术来克服。如“二次拟合”通过加正则项来克服,随机森林通过增加决策树的数量来克服,决策树模型通过“逆向剪枝”来克服等等。
强化学习
1:通过训练集训练模型参数
2:通过计算输出和测试样本“答案”的差异来反馈给模型,再对模型的结构和参数调整。
3:通过试用期不断产生的数据不断对模型进行训练,一段时间后,模型就稳定了,性能也会慢慢变好。
连续优化近况
连续优化算法基本都是对于光滑的连续函数使用类梯度下降方法。对于不一样的问题,你所用的下降方向也不一样。但是各色各样的下降方向归根结底是对梯度方向的“加工”。如果找到了目标函数的某种特性,针对性地设计下降方向,往往会得到非常好的效果。对于比较复杂的函数,比如零范数这种非凸不连续的东西,或者别的一些比较难搞的非凸函数。往往是走完一步下降步后,在对该步迭代解做一定的修正。把这两小步作为一大步来看,不断迭代下去,直到算法收敛到一个稳定解。
用所有数据样本行成的大矩阵计算出来的下降方向是通常的做法,但是每一步迭代光计算一个梯度方向都费好大计算成本。为了降低单步迭代的梯度方向的计算成本,也为了在线计算的需求,随机梯度方法应运而生。你可以这么理解,用所有样本来计算的梯度方向是让单前点想所有样本点的“答案”走进了一步,这是我们的目标。用单个样本计算出来的梯度方向,是让当前点学习得当前样本的信息,他只拟合了这一个样本点。用脚趾头想想也知道,随机梯度的步长肯定不能太大,它比通常的梯度方向算法的步长一般是更短的,原因是生活中的样本点都是带随机噪声的,我们是要让模型更加好地逼近当前的样本点,但不能过于相信这一个点。也很容易想到随机梯度方法的一个直接的改进版本,就是选取若干个样本来构造梯度方向。但是这么抽取这若干个样本,抽取几个,都是问题。
数据建模偏数据,主要用于预测。计算机编程基础主要是C,C++,Python。一些最基本的算法包都是用C或者C++实现的,经研究人员反应,C语言编出来的程序跑得最快。通过Python搭建数据模型,导入训练集后,调用对应的模型算法包即可计算出模型参数。Matlab虽然功能强大,但是你核心的算法包都是要收费的。
数学建模偏工程,可以解决更一般化的实际问题,往往涉及到一些离散化的知识,如图论。用的也主要是离散算法,在一定的图结构中,抓住关键结构,直接在可行解之间跳转,寻找最优解。由其写成的带整数变量的数据模型,大多数都属于“观赏性”的,不太可能直接去解其整数规划问题。最有可能的求解该类问题的方法是先松弛为一个连续的问题,通过连续优化找到一个“近似解”,再对该“近似解”进行加工,得到一个离散问题的可行解。之后,便将该可行解做出离散优化算法的初始点,一定的迭代计算后,最终得到一个“满意解”。该类问题的编程基础为C,C++,而且需要调用CPLEX以及GROUBI这两个求解器来求解模型。