线性回归算法梳理
1.机器学习的一些概念
有监督:训练及测试数据样本有对应标签,则该算法模型成为有监督学习。
无监督:训练及测试数据样本没有对应标签,则该算法模型成为无监督学习。
泛化能力:算法模型在训练数据之外的其他数据集上的表现能力。即算法对新鲜样本的适应能力。
过拟合:算法模型为了得到一致性假设而使假设变得过度严格。一般表现为,一个假设在训练数据上能获得比其他假设更好的拟合,但在训练数据集外但其他数据集上却不能很好地拟合数据,认为该假设出现过拟合。
A.常见原因:
1. 建模样本选取有误,如样本数量太少,选样方法错误,样本标签错误等,导致选取的样本数据不足以代表预定的分类规则;
2. 样本噪音干扰过大,使得机器将部分噪音认为是特征从而扰乱了预设的分类规则;
3. 假设的模型无法合理存在,或者说是假设成立的条件实际并不成立;
4. 参数太多,模型复杂度过高;
5. 对于决策树模型,如果我们对于其生长没有合理的限制,其*生长有可能使节点只包含单纯的事件数据(event)或非事件数据(no event),使其虽然可以完美匹配(拟合)训练数据,但是无法适应其他数据集。
6. 对于神经网络模型:a)对样本数据可能存在分类决策面不唯一,随着学习的进行,,BP算法使权值可能收敛过于复杂的决策面;b)权值学习迭代次数足够多(Overtraining),拟合了训练数据中的噪声和训练样例中没有代表性的特征。
B.解决方法:
1. 在神经网络模型中,可使用权值衰减的方法,即每次迭代过程中以某个小因子降低每个权值。
2. 选取合适的停止训练标准,使对机器的训练在合适的程度;
3. 保留验证数据集,对训练成果进行验证;
4. 获取额外数据进行交叉验证;
5. 正则化,即在进行目标函数或代价函数优化时,在目标函数或代价函数后面加上一个正则项,一般有L1正则与L2正则等。
欠拟合:算法模型拟合程度不高,数据距离拟合曲线很远,模型没有找到数据特征,不能很好的拟合数据。
A. 解决方法:
1. 增加新特征,可以考虑加入进特征组合、高次特征,来增大假设空间;
2. 添加多项式特征,这个在机器学习算法里面用的很普遍,例如将线性模型通过添加二次项或者三次项使模型泛化能力更强;
3. 减少正则化参数,正则化的目的是用来防止过拟合的,但是模型出现了欠拟合,则需要减少正则化参数;
4. 使用非线性模型,比如核SVM 、决策树、深度学习等模型;
5. 调整模型的容量(capacity),通俗地,模型的容量是指其拟合各种函数的能力。
6. 容量低的模型可能很难拟合训练集;使用集成学习方法,如Bagging ,将多个弱学习器Bagging。
B. 方差:衡量随机变量或一组数据的离散程度。机器学习中一般指样本上训练出的模型在测试集上的表现。
降低方差,要简化模型,减少模型的参数,但容易造成欠拟合。方差大的根本原因是,我们总是希望用有限的训练样本去估计无限的真实数据。
C. 偏差:即表观误差,是个别测定值与测定的平均值之差,用来衡量测定结果的精密度高低。描述的是根据样本拟合出的模型输出结果与真实结果的差距,损失函数就是依据模型偏差的大小进行反向传播的。
降低偏差,就需要复杂化模型,增加模型参数,但容易造成过拟合。
交叉验证:在给定的建模样本中,拿出大部分样本建模型,留小部分样本用刚建立的模型进行预测,并求这小部分样本的预测误差,记录它们的平方加和。
2.线性回归的原理
学习一个线性模型,使得模型计算结果尽可能符合实际输出:
3.线性回归损失函数、代价函数、目标函数
A. 损失函数-最小二乘法:给定一些定点,计算一条可以拟合这些线的定点。先假设线的方程,把数据点带入方程得到预测值,求实际值与预测值相减的平方最小的参数(偏导)。损失函数是计算一个样本的误差。
模型拟合越好,损失应该越小。
B. 代价函数:按损失函数理解,计算整个样本集的平均误差。
C. 目标函数:优化的目标。可以是“损失函数”或者“损失函数+正则项”
经验风险最小化(损失函数,训练样本的平均损失)
结构风险最小化(正则化,定义了一个函数J(f),范数,衡量模型复杂度,太复杂容易过拟合)。
4.优化方法(梯度下降法、牛顿法、拟牛顿法等)
线性模型的目的是:求解出使得代价函数最小的参数W。
矩阵满秩可求解时(求导等于0)
A. 矩阵不满秩时(梯度下降法)
1. 梯度下降算法是一种求局部最优解的方法,对于F(x),在a点的梯度是F(x)增长最快的方向,那么它的相反方向则是该点下降最快的方向。
2. 原理:将函数比作一座山,我们站在某个山坡上,往四周看,从哪个方向向下走一小步,能够下降的最快;
3. 注意:当变量之间大小相差很大时,应该先将他们做处理,使得他们的值在同一个范围,这样比较准确。1)首先对θ赋值,这个值可以是随机的,也可以让θ是一个全零的向量。2)改变θ的值,使得J(θ)按梯度下降的方向进行减少。
B. 牛顿法:在最优化的问题中,线性最优化至少可以使用单纯行法求解,但对于非线性优化问题,牛顿法提供了一种求解的办法。假设任务是优化一个目标函数f,求函数f的极大极小问题,可以转化为求解函数f的导数f’=0的问题,这样求可以把优化问题看成方程求解问题(f’=0)。
特性:
1. 牛顿法收敛速度为二阶,对于正定二次函数一步迭代即达最优解。
2. 牛顿法是局部收敛的,当初始点选择不当时,往往导致不收敛。
3. 牛顿法不是下降算法,当二阶海塞矩阵非正定时,不能保证产生方向是下降方向。
4. 二阶海塞矩阵必须可逆,否则算法进行困难。
5. 对函数要求苛刻(二阶连续可微,海塞矩阵可逆),而且运算量大。
改进:
C. 拟牛顿法
特性:
1. 只需用到函数的一阶梯度;(Newton法用到二阶Hesse阵)
2. 下降算法,故全局收敛;
3. 不需求矩阵逆;(计算量小)
4. 一般可达到超线性收敛;(速度快)
5. 有二次终结性。
方法: 1. DFP法 2. BFGS法
5.线性回归的评估指标
A. MSE
B. RMSE
C. MAE
D. R方
6.sklearn参数详解
1. LinearRegression(fit_intercept=True,normalize=False,copy_X=True,n_jobs=1)
2. fit_intercept:是否有截据,如果没有则直线过原点。
3. normalize:是否将数据归一化。
4. copy_X:默认为True,当为True时,X会被copied,否则X将会被覆写。(这一参数的具体作用没明白,求大神指教了)
5. n_jobs:默认值为1。计算时使用的核数。
参考
1. https://baike.baidu.com/item/%E8%BF%87%E6%8B%9F%E5%90%88
2. https://baike.baidu.com/item/%E6%AC%A0%E6%8B%9F%E5%90%88
3. https://baike.baidu.com/item/%E4%BA%A4%E5%8F%89%E9%AA%8C%E8%AF%81
4. https://blog.csdn.net/a819825294/article/details/52172463
5. https://blog.csdn.net/qq_30986521/article/details/83515186
6. https://www.jianshu.com/p/d2aec3724fd7
7. https://www.cnblogs.com/zzzzy/p/8490662.html
8. https://blog.csdn.net/li980828298/article/details/51273385