1. 机器学习的一些概念
(1)监督学习
监督学习(Supervised Learning)是使用已知正确类别的样本来训练网络的。具体来讲,是用已知某种或某些特性的样本(事先标记)作为训练集,通过不断地调整参数而建立一个数学模型,再用已建立的模型来预测未知的输入样本。
(2)无监督学习
无监督学习(Unsupervised Learning)的特点是训练样本没有标签,通过学习模型来推断出数据的一些内在结构。
常用于以下情况:
1)由于缺乏足够的先验知识,因而难以人工标注类别;
2)采用人工方式来标注类别的成本太高。
(3)泛化能力
泛化能力(Generalization Ability)是指机器学习算法对新鲜样本的适应能力。机器学习的基本问题是利用模型对数据进行拟合,学习的目的是学到隐含在数据背后的规律,对具有同一规律的学习集以外的数据,经过训练的网络也能给出合适的输出,该能力称为泛化能力。网络的性能主要用它的泛化能力来衡量。
通常期望经训练样本训练的网络具有较强的泛化能力,也就是对新输入的数据能给出合理响应的能力。应当指出并非训练的次数越多越能得到正确的输入输出映射关系。模型对训练集数据的误差称为经验误差,对测试集数据的误差称为泛化误差。
(4)过拟合与欠拟合
过拟合和欠拟合是导致模型泛化能力不高的两种常见原因,都是模型学习能力与数据复杂度之间失配的结果。
过拟合与欠拟合的区别:欠拟合在训练集和测试集上的性能都较差,而过拟合往往能较好地学习训练集数据的性质,而在测试集上的性能较差。在神经网络训练的过程中,欠拟合主要表现为输出结果的高偏差,而过拟合主要表现为输出结果的高方差。
1)“欠拟合”(Underfitting)常常在模型的学习能力较弱而数据的复杂度较高的情况出现,此时模型由于学习能力的不足,无法学习到数据集中的“一般规律”,因而导致该模型的泛化能力弱。
解决办法:
- 增加新特征,可以考虑加入进特征组合、高次特征,来增大假设空间;
- 添加多项式特征,这个在机器学习算法里面用的很普遍,例如将线性模型通过添加二次项或者三次项使模型泛化能力更强;
- 减少正则化参数,正则化的目的是用来防止过拟合的,但是模型出现了欠拟合,则需要减少正则化参数;
- 使用非线性模型,比如核SVM 、决策树、深度学习等模型;
- 调整模型的容量(capacity),通俗地,模型的容量是指其拟合各种函数的能力;
- 容量低的模型可能很难拟合训练集;使用集成学习方法,如Bagging ,将多个弱学习器Bagging。
2)“过拟合”(Overfitting)常常在模型的学习能力过强的情况中出现,此时模型的学习能力太强,以至于将训练集单个样本自身的特点都能捕捉到,并将其认为是“一般规律”,同样这种情况也会导致模型的泛化能力下降。
解决办法:
- 在神经网络模型中,可使用权值衰减的方法,即每次迭代过程中以某个小因子降低每个权值;
- 选取合适的停止训练标准,使对机器的训练在合适的程度;
- 保留验证数据集,对训练成果进行验证;
- 获取额外数据进行交叉验证;
- 正则化,即在进行目标函数或代价函数优化时,在目标函数或代价函数后面加上一个正则项,一般有L1正则与L2正则等。
(5)方差和偏差
1)偏差
偏差又称为表观误差,是指个别测量值与测量的平均值之差,可以用它来衡量测量结果的精确度高低。
在统计学中,偏差可以用于两个不同的概念,即有偏采样与有偏估计。有偏采样是指对总样本集的非平等采样,而有偏估计则是指高估或低估要估计的量。
在机器学习中,偏差描述的是根据样本拟合出的模型输出结果与真实结果的差距,损失函数就是依据模型偏差的大小进行反向传播的。降低偏差,就需要复杂化模型,增加模型参数,但容易造成过拟合。
2)方差
在概率论和统计中,常用方差来衡量随机变量或一组数据的离散程度。
概率论中的方差用来度量随机变量与其数学期望(即均值)之间的偏离程度。统计中的方差(样本方差)是每个样本值与全体样本值的平均数之差的平方值的平均数。
在机器学习中,方差描述的是样本集上训练出的模型在测试集上的表现,降低方差,要简化模型,减少模型的参数,但容易造成欠拟合。
(6)交叉验证
交叉验证(Cross Validation),有时也称作循环估计(Rotation Estimation),在统计学上是指将数据样本切割成较小子集的实用方法。用交叉验证的目的是为了得到可靠稳定的模型。
交叉验证的基本思想:在某种意义下对原始数据(dataset)进行分组,一部分做为训练集(train set),另一部分做为验证集(validation set or test set),首先用训练集对模型进行训练,再利用验证集来测试训练得到的模型,以此做为评价模型的性能指标。
2. 线性回归的原理
线性回归(Linear Regression)是利用数理统计中的回归分析,来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法。
在统计学中,线性回归是指利用称为线性回归方程的最小平方函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析。如果回归分析中只包括一个自变量和一个因变量,且二者的关系可用一条直线来近似表示,这种回归分析称为一元线性回归分析。如果回归分析中包括两个或两个以上的自变量,且因变量和自变量之间是线性关系,则称之为多元线性回归分析。
3. 线性回归损失函数、代价函数、目标函数
1)损失函数(Loss Function )是定义在单个样本上的,算的是一个样本的误差。
2)代价函数(Cost Function )是定义在整个训练集上的,是所有样本误差的平均,也就是损失函数的平均。
3)目标函数(Object Function)是最终需要优化的函数。在机器学习中,最终目标就是寻找一组参数使目标函数的值最小。目标函数的值越小代表着在训练集下,模型的预测结果和训练集中的标签越接近,结果越准确。
关于目标函数和代价函数的区别还有一种通俗的理解:目标函数是最大化或者最小化,而代价函数是最小化。
4. 优化方法
简单来讲,优化问题就是指在给定的限制条件下来寻找目标函数的极值点。极值可以分为全局极值和局部极值,全局极值即函数的最大/最小值,局部极值就是函数在有限邻域内的最大/最小值。()
机器学习的本质是建立优化模型,通过优化方法,不断迭代参数向量,找到使目标函数最优的参数向量,最终建立模型。常用的优化方法有梯度下降法、牛顿法、拟牛顿法等,这些优化方法的本质就是更新参数。()
(1)梯度下降法
梯度下降法(Gradient Descent)也被称为是“最速下降法”,是一种通过梯度方向和步长来直接求解使目标函数取得最小值时的参数的方法。
梯度下降法的思想是:通过搜索方向和步长来对参数进行更新。其中,搜索方向是使目标函数沿着当前位置的负梯度方向,在这个方向上的梯度下降速度最快;而搜索步长确定了沿着这个搜索方向每一步下降的大小。
梯度下降法的优点:由于只用到了目标函数的一阶导数,故涉及到的计算较为简单;而且梯度下降方法选择的搜索方向可以保证是收敛的。其缺点就是收敛速度非常慢;在越接近最优值时,步长就应该不断减小,否则会在最优值附近来回震荡。
(2)牛顿法
牛顿法(Newton's method)是一种求解函数值为0时对应的自变量取值的方法。牛顿法是一种在实数域和复数域上近似求解方程的方法。
利用牛顿法求解目标函数最小值的思想是:转化成求使目标函数的一阶导为0的参数值,因为函数在极值点处的一阶导数为0。
牛顿法相比梯度下降法的主要优点是收敛速度很快;牛顿法的缺点是需要计算海森( Hesse)矩阵和其逆矩阵,这使得存储和计算的开销相比梯度下降法要大很多。为了解决这个问题,人们提出了所谓的拟牛顿法。
(3)拟牛顿法
拟牛顿法(Quasi-Newton Methods)与牛顿法类似,只是用一个对称正定(Symmetric Positive Definite, SPD)矩阵代替精确的海森矩阵,从而简化了运算的复杂度。
拟牛顿法和梯度下降法一样,只要求在每一步迭代时知道目标函数的梯度。另外,因为拟牛顿法不需要二阶导数的信息,所以有时比牛顿法更为有效。()
(4)共轭梯度法
共轭梯度法(Conjugate Gradient)是介于梯度下降法与牛顿法之间的一种方法,它仅需要利用一阶导数的信息,能够克服梯度下降法收敛慢的缺点,也克服了牛顿法需要存储和计算Hesse矩阵并求逆的缺点。
共轭梯度法不仅是解决大型线性方程组最有用的方法之一,也是解大型非线性最优化最有效的算法之一。共轭梯度法的优点是所需存储量小,具有步收敛性,稳定性高,且不需要任何外来参数。
5、线性回归的评估指标
(1)SSE(和方差、误差平方和):The sum of squares dueto error
该统计参数计算的是拟合数据和原始数据对应点的误差的平方和。SSE的数值越接近0,说明模型的选择和拟合效果越好,数据的预测效果也就越成功。
(2)MSE(均方差、方差):Meansquared error
该统计参数是预测数据和原始数据对应点误差的平方和的均值,也就是SSE/n,和SSE区别不大。
(3)RMSE(均方根、标准差):Root mean squared error
该统计参数也叫做回归系统的拟合标准差,是MSE的平方根。
()
6、sklearn参数详解
scikit-learn简称sklearn,sklearn是Scipy的扩展,建立在NumPy和matplotlib库的基础上。它支持包括分类、回归、降维和聚类四大机器学习算法,还包含了特征提取、数据处理和模型评估三大模块,已经成为Python重要的机器学习库。sklearn拥有着完善的文档,上手容易,具有着丰富的API。sklearn封装了大量的机器学习算法,同时sklearn内置了大量数据集,节省了获取和整理数据集的时间。()
(以下内容参考资料)
sklearn常用函数的参数详解:
(1)KNN
KNneighborsClassifier参数说明:
1)n_neighbors:默认为5,就是kNN中“k”的值,表示选取最近的k个点;
2)weights:默认是uniform,代表采用均等的权重,即邻近点的权重都是相等的;该参数也可以设为distance,代表是不均等的权重,距离近的点比距离远的点的影响大;
3)algorithm:快速k近邻搜索算法,默认参数是auto,即自动确定合适的搜索算法;
4)leaf_size:默认是30,该值代表所构造的kd树和ball树的大小,因而会影响到树构建的速度和搜索速度,同样也影响着存储树所需的内存大小。
5)metric:用于距离度量,默认度量是minkowski,代表p=2时的欧氏距离;
6)p:距离度量公式种类的选择,其默认值为2,表示采用欧式距离公式进行距离的度量;当其值为1时,表示采用曼哈顿距离公式进行距离的度量计算;
7)metric_params:影响距离公式的其它非重要参数,采用默认的None即可;
8)n_jobs:并行处理设置参数,默认值为1,表示临近点搜索并行工作数;如果其值设为-1,则表示CPU的所有cores都用于并行工作。
(2)KMeans