1、有监督、无监督、泛化能力、过拟合欠拟合(方差和偏差以及各自解决办法)、交叉验证
根据训练数据是否拥有标记信息,学习任务可大致分为两大类:监督学习和无监督学习,分类和回归是监督学习的代表,聚类是无监督学习的代表。
泛化能力:泛化能力(generalization ability)是学的模型适用于新样本的能力。
过拟合:当学习器把训练样本学的太好了的时候,很可能已经把训练样本自身的一些特点当做了所有潜在样本都会具有的一般性质,这样就会导致泛化性能下降,这种现象在机器学习中成为过拟合。
欠拟合:欠拟合是指对训练样本的一般性质尚未学好。是指模型拟合程度不高,数据距离拟合曲线较远,或指模型没有很好地捕捉到数据特征,不能够很好地拟合数据。
交叉验证:先将数据集D划分为k个大小相似的互斥子集,每个子集都尽可能保持数据分布的一致性,即都是从D中通过分层采样得到的,然后每次用k-1个子集的并集作为训练集,剩下的那个子集作为测试集,这样就可获得k组训练集和测试集,从而可以进行k次训练和测试,最终返回的是这k个测试结果的均值。交叉验证法评估结果的稳定性和保真性很大程度上取决于k的取值。一般k取10.
参考书籍:西瓜书
2、线性回归的原理
给定数据集D,视图学到一个线性模型以尽可能准确的预测实值输出标记。即f(xi)=wxi+b,使得f(xi)约等于yi。其中参数w和b的求解过程称为最小二次参数估计。参数估计目标是最小化均方误差,也就是均方误差分别对w和b进行求偏导并且让其结果都等于0,最终求出w和b,确定线性回归的函数。
线性回归损失函数、代价函数、目标函数
目标函数(object function):最终需要优化的函数,等于结构风险+经验风险,也就是coss function +正则化项。
线性回归的损失函数(loss function):也就是最小化的那个函数成为损失函数。定义在单个样本上的样本的误差。
经典的损失函数为均方误差。
主要的分类损失函数有:log loss、focal loss、KL Divergence/Relative Entropy、Exponential loss、hinge loss。回归的损失函数有mean square error、mean absolute error,huber loss、log cosh loss、quantlie loss。
参考链接:https://www.jianshu.com/p/6bdaba8f86f1
代价函数(Cost function):定义在整个训练集上的,是所有样本误差的均值,也就是损失函数的均值
参考链接:https://blog.youkuaiyun.com/as472780551/article/details/81051625
优化方法(梯度下降法、牛顿法、拟牛顿法等)
梯度下降法:梯度下降法是一个最优化算法,通常也称为最速下降法。最速下降法是求解无约束优化问题最简单和最古老的方法之一,虽然现在已经不具有实用性,但是许多有效算法都是以它为基础进行改进和修正而得到的。最速下降法是用负梯度方向为搜索方向的,最速下降法越接近目标值,步长越小,前进越慢。
牛顿法就是求解函数极值的思路是寻找导数为0的点,这就是求解方程
流程是
存在的问题:牛顿法寻找的也是导数为0的点,这不一定是极值点,因此会面临局部极小值和鞍点问题;牛顿法面临的另外一个问题是Hessian矩阵可能不可逆,从而导致这种方法失效。此外,求解Hessian矩阵的逆矩阵或者求解线性方程组计算量大,需要耗费大量的时间。为此,提出了拟牛顿法这种改进方案,在后面会介绍。
拟牛顿法:
牛顿法在每次迭代时需要计算出Hessian矩阵,然后求解一个以该矩阵为系数矩阵的线性方程组,这非常耗时,另外Hessian矩阵可能不可逆。为此提出了一些改进的方法,典型的代表是拟牛顿法(Quasi-Newton)。
拟牛顿法的思想是不计算目标函数的Hessian矩阵然后求逆矩阵,而是通过其他手段得到Hessian矩阵或其逆矩阵的近似矩阵。具体做法是构造一个近似Hessian矩阵或其逆矩阵的正定对称矩阵,用该矩阵进行牛顿法的迭代。将函数在点处进行泰勒展开,忽略二次以上的项,
这个条件称为拟牛顿条件,用来近似代替Hessian矩阵的矩阵需要满足此条件。根据此条件,构造出了多种拟牛顿法,典型的有DFP算法、BFGS算法、L-BFGS算法等
参考网站:
线性回归的评估指标
MAE:平均绝对误差
MSE:均方误差
RMSE(root mean square error):方根误差
MAPE:Mean Absolute Percentage Error
R方:R平方是多元回归中的回归平方和占总平方和的比例,它是度量多元回归方程中拟合程度的一个统计量,反映了在因变量yy的变差中被估计的回归方程所解释的比例。
R平方越接近1,表明回归平方和占总平方和的比例越大,回归线与各观测点越接近,用xx的变化来解释yy值变差的部分就越多,回归的拟合程度就越好。
校正R方:
参考:https://blog.youkuaiyun.com/u013704227/article/details/77604500
sklearn参数详解
Sklearn是python的模块之一,包含了多种机器学习:分类、回归、非监督分类、数据降维Dimensionality reduction,模型选择 model selection,数据预处理 preprocessing
这是sklearn中的选择模型的说明。
导入模块:
From _future_ import print_function
From sklearn import datasets
From sklearn.cross_validation import train_test_split
From sklearn.neighbors import KNeighborsClassifirer
创建数据
加载iris数据,把属性存在x,把类别存在y
Iris=datasets.load_iris()
Iris_x=irir.data
Iris_y=iris.target
数据分为训练集和测试集,test_size=0.3,即测试集占总数据的 30%:
X_train,X_test,y_train,y_test=train_test_aplit(iris_x,iris_y,test_size=0,3)
建立模型-训练和预测
定义模块方式 KNeighborsClassifier(),
用 fit 来训练 training data,这一步就完成了训练的所有步骤,
后面的 knn 就已经是训练好的模型,可以直接用来 predict 测试集的数据,
Knn=kNeighborsClassifier()
Knn.fit(x_train,y_train)