初级算法day1

有监督(获取的数据集有标签)
无监督(获取的数据集无标签)
泛化能力:学得模型适用于新样本的能力
过拟合:当学习器把训练样本学得“太好”了的时候,很可能已经把训练样本自身的一些特点当做了所有潜在样本都会具有的一般性质,这样就会导致泛化性能下降
欠拟合:指对训练样本的一般性质尚未学好欠拟合通常是由于学习能力低下造成的,通过增加训练轮数等手段比较容易克服欠拟合。
在机器学习中过拟合是一个比较麻烦,难解决的问题。而且过拟合是无法彻底解决的,只能采取一定的措施来缓解过拟合。
偏差和方差:偏差和方差是对模型期望泛化错误率的分解。 根据上面的公式可知,模型的泛化错误率可被分解为偏差、方差和噪声。其中,偏差度量了学习算法的期望预测与真实预测的偏离程度;方差是度量同样大小的训练集的变动所导致的学习性能的变化,即刻画了数据扰动所造成的影响;噪声则表达了在当前任务上任何学习算法所能达到的期望泛化误差的下限,即刻画了学习问题本身的难度。
交叉验证法:先将数据集划分为k个大小相似的互斥子集,保证每个子集的分布一致,每次拿出k-1个子集作为训练集,剩下的一个子集作为测试集线性
回归原理:线性回归是试图通过特征向量的线性组合函数来近似真实的函数 对于线性回归方程的参数,使用最小二乘法进行估计。
公式如下所示:
在这里插入图片描述
最小二乘估计的基本思想就是使得线性回归方程的均方误差最小。从图形上来说,是使得所有点到拟合直线上的距离最小,从而达到比较好的拟合效果。
求解的具体过程如下所示,对期望均方误差求偏导就可以得到参数的最优解。
在这里插入图片描述
在这里插入图片描述

线性回归损失函数、代价函数、目标函数
损失函数:计算的是一个样本的误差
代价函数:是整个训练集上所有样本误差的平均
目标函数:代价函数 + 正则化项
可以利用R2或者调整R2来评估线性回归模型的拟合效果
梯度下降法:随机选取一个点,以一定的步伐沿着下降速度最快的方向走,直至趋于收敛,不再改变。
牛顿法是通过求解代价函数的近似函数来实现参数求解,使用泰勒展开式作为原函数的近似函数
拟牛顿法是对于牛顿法的一种改进,使用正定矩阵来近似牛顿法中Hessian矩阵的逆线性回归参数
sklearn.linear_model.LogisticRegression(penalty=‘l2’, dual=False, ‍tol=0.0001, C=1.0, fit_intercept=True, intercept_scaling=1, class_weight=None, random_state=None, solver=‘liblinear’, max_iter=100, multi_class=‘ovr’, verbose=0, warm_start=False, n_jobs=1)
penalty:正则化选择参数,参数可选值为l1和l2,分别对应l1正则化和l2正则化,默认是l2正则化。调整该参数的目的主要是为了防止过拟合,一般penalty选择l2正则化就够啦,但是如果选择l2正则化发现依然过拟合,即预测效果还是很差的时候,就可以考虑l1正则化。如果模型的特征非常多,我们希望做一些特征选择(即把一些不重要的特征过滤掉),这个时候也可以考虑用l1正则化。
penalty参数的选择会影响我们损失函数优化算法的选择,即参数solver的选择,如果是l2正则化,可选的优化算法 {‘newton-cg’, ‘lbfgs’, ‘liblinear’, ‘sag’}都可以选择。但是如果penalty是L1正则化的话,就只能选择‘liblinear’了。这是因为L1正则化的损失函数不是连续可导的,而{‘newton-cg’, ‘lbfgs’,‘sag’}这三种优化算法时都需要损失函数的一阶或者二阶连续导数。而‘liblinear’并没有这个依赖。这几个优化方法在solver参数环节进行讲述。dual:用来指明是否将原问题改成他的对偶问题,对偶问题可以理解成相反问题,比如原问题是求解最大值的线性规划,那么他的对偶问题就是转化为求解最小值的线性规划,适用于样本较小的数据集,因样本小时,计算复杂度较低。tol:残差收敛条件,默认是0.0001,也就是只需要收敛的时候两步只差<0.0001就停止,可以设置更大或更小。(逻辑回归模型的损失函数是残差平方和)C:正则化系数,正则化强度的导数,必须是一个正数,值越小,正则化强度越大,即防止过拟合的程度更大。fit_intercept:是否将截距/方差加入到决策模型中,默认为True。class_weight:class_weight是很重要的一个参数,是用来调节正负样本比例的,默认是值为None,也就是正负样本的权重是一样的,你可以以dict的形式给模型传入任意你认为合适的权重比,也可以直接指定一个值“balanced”,模型会根据正负样本的绝对数量比来设定模型最后结果的权重比。比如,有一数据集的正负样本绝对数量比为4:6,如果你给参数class_weight赋予balanced值,那么最后模型结果中,正负样本的权重比就会变成6:4。random_state:随机种子的设置,默认是None,如果设置了随机种子,那么每次使用的训练集和测试集都是一样的,这样不管你运行多少次,最后的准确率都是一样的;如果没有设置,那么每次都是不同的训练集和测试集,最后得出的准确率也是不一样的。solver:用来指明损失函数的优化方法,默认是‘liblinear’方法newton-cg, lbfgs和sag这三种优化算法时都需要损失函数的一阶或者二阶连续导数,因此不能用于没有连续导数的L1正则化,只能用于L2正则化。而liblinear对L1正则化和L2正则化都适用。同时,因sag每次仅仅使用了部分样本进行梯度迭代,所以当数据量较少时不宜选用,而当数据量很大时,为了速度,sag是第一选择。max_iter:算法收敛的最大迭代次数,即求取损失函数最小值的迭代次数,默认是100, multi_class:分类方法参数选择,‘ovr’和‘multinomial’两个值可以选择,默认值为‘ovr’,如果分类问题是二分类问题,那么这两个参数的效果是一样的,主要体现在多分类问题上。对于多分类问题,"ovr"分类方法是:针对每一类别进行判断时,都会把这个分类问题简化为是/非两类问题;而‘multinomial’是从众多类别中选出两个类别,对这两个类别进行判断,待判断完成后,再从剩下的类别中再选出两类进行判断,直至最后判断完成。verbose:英文意思是”冗余“,就是会输出一些模型运算过程中的东西(任务进程),默认是False,也就是不需要输出一些不重要的计算过程。warm_start:是否使用上次的模型结果作为初始化,默认是False,表示不使用。n_jobs:并行运算数量(核的数量),默认为1,如果设置为-1,则表示将电脑的cpu全部用上。

猜你喜欢

转载自blog.csdn.net/weixin_43891494/article/details/88896120