数据拟合

模型优化评估

≡放荡痞女 提交于 2019-12-06 08:20:01
Basis Expansion 这个咋翻译呢, 线性扩充基? 无所谓其实, 这里主是用它来处理 因变量 和 自变量 的非线性关系的 Basis Expansion 是指通过对数据进行转换来扩充或替换数据集的的特征. 我最初的数据分析工具是R语言嘛, 当时没有接触ML这些什么 正则 的概念, 就统计学理论. 在做线性模型的时候, 拟合的不是很好, 我当时真的就凭感觉, 给方程加上一些高阶项 然后就拟合得可以了. 不过呢,后来还是放弃了, 因为很难解释, 尤其是经管方面, 模型的参数的解释尤为重要 这点跟ML不太同, 当然,更不会用神经网络, 我感觉我的水平,怕是解释不清楚里面是怎么工作的. 这里的 Basis Expansion, 举个栗子, 给定输入特征X, Basis Expansion 可以将X 扩充到多个特征, 如 1, X, X^2 等. 这种映射允许各类学习算法来 捕捉数据中的非线性趋势, 同时仍然使用线性模型来分析这些转换后的特征 . 比如增加一些非线性的高阶项等, 线性而言, 其中有一个比较耳熟的名称 多项式回归 case1 线性回归 进行一个升维(多项式项)的变换 \(\phi(x) = [1,x, x^2]\) 即之前是对一个特征求参数, 现在变为了3个特征了. \(w_0 + w_1x + w_2x^2 = \phi(x).[w_0, w_1, w_2 ]\)

最小二乘法

夙愿已清 提交于 2019-12-06 06:48:19
最小二乘法(又称最小平方法)是一种数学优化技术。它通过最小化误差的平方和寻找数据的最佳函数匹配。利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小。最小二乘法还可用于曲线拟合。其他一些优化问题也可通过最小化能量或最大化熵用最小二乘法来表达。 背景:我们有一系列的点(x,y),如下图所示,实际上这就是一个y=10*x的一元一次曲线,再加上一个随机误差得到的数据。 我们想用一个线性方程来拟合它y=a*x+b 为了达到最好的拟合效果,我们应该让 最小。(y是原始值)。 对上式求导 对上式稍微整理以下,使用克莱姆法则,得 矩阵的表达形式 如果我们推广到更一般的情况,假如有更多的模型变量x^1, x^2,…, x^n(注意:x^1是指一个样本,x_1是指样本里的一个模型相关的变量),可以用线性函数表示如下: 对于n个样本来说,可以用如下线性方程组表示: 注意事项 经典的最小二乘法使用起来够简单粗暴,计算过程也不复杂。但是一个致命的问题就是其对噪声的容忍度很低。试想一下,如果前面我们得到的总采样数据为100个,但是里面有几个误差比较大的数据,这就是噪声了。如果不采取一些手段对这几个噪声样本进行处理,最后拟合的效果肯定不是很好。 对于噪声的处理,比如有加权最小二乘等方法,后续有时间跟大家再讲讲 我们加入更大一点的噪声,发现这时候拟合的效果就不是很好

matlab练习程序(螺线拟合)

╄→尐↘猪︶ㄣ 提交于 2019-12-06 04:51:42
这里待拟合的螺线我们选择阿基米德螺线,对数螺线类似。 螺线的笛卡尔坐标系方程为: 螺线从笛卡尔坐标转为极坐标方程为: 阿基米德螺线在极坐标系下极径r和极角theta为线性关系,方程为: 计算步骤如下: 1.通常我们首先得到螺线在笛卡尔坐标下的一些点x,y。 2.然后根据x,y计算出r和theta。 3.最后拟合的目标就是计算出a和b,这一步可以用最小二乘。 拟合结果: 下图蓝色线为原始线(这里可能看不到),红色线为拟合线,红色点为测量点。 放大看一下: 不过有时候拟合也会失败(这时候就可以祭出ransac大法了): matlab代码如下: clear all; close all; clc; %%生成阿基米德螺线 a=6.34; b=4.23; theta=0:0.01:5*pi; r = a+b*theta; x = r.*cos(theta); y = r.*sin(theta); plot(x,y,'b') %%生成待拟合数据 ind = randperm(length(x),50); dat=[x(ind)' y(ind)'] + rand(50,2)/5; hold on; plot(dat(:,1),dat(:,2),'r.'); T = atan(dat(:,2)./dat(:,1)); R = sqrt(dat(:,1).^2+dat(:,2).^2); %

拟合方法求直线方程系数

我与影子孤独终老i 提交于 2019-12-05 17:01:27
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/MarsJohn/article/details/54911788 在数据的统计分析中,数据之间即变量x与Y之间的相关性研究非常重要,通过在直角坐标系中做散点图的方式我们会发现很多统计数据近似一条直线,它们之间或者正相关或者负相关。虽然这些数据是离散的,不是连续的,我们无法得到一个确定的描述这种相关性的函数方程,但既然在直角坐标系中数据分布接近一条直线,那么我们就可以通过画直线的方式得到一个近似的描述这种关系的直线方程。当然,从前面的描述中不难看出,所有数据都分布在一条直线附近,因此这样的直线可以画出很多条,而我们希望找出其中的一条,能够最好地反映变量之间的关系。换言之,我们要找出一条直线,使这条直线“最贴近”已知的数据点,设此直线方程为: 这里的是为了区分Y的实际值y(这里的实际值就是统计数据的真实值,我们称之为观察值),当x取值(i=1,2,3……n)时,Y的观察值为,近似值为(或者说对应的纵坐标是)。 其中式叫做Y对x的回归直线方程,b叫做回归系数。要想确定回归直线方程,我们只需确定a与回归系数b即可。 设x,Y的一组观察值为: i = 1,2,3……n 其回归直线方程为: 当x取值(i=1,2,3……n)时

Andrew Ng机器学习 五:Regularized Linear Regression and Bias v.s. Variance

丶灬走出姿态 提交于 2019-12-05 14:22:25
背景:实现一个线性回归模型,根据这个模型去预测一个水库的水位变化而流出的水量。 加载数据集ex5.data1后,数据集分为三部分: 1,训练集(training set)X与y; 2,交叉验证集(cross validation)Xval, yval; 3,测试集(test set): Xtest, ytest。 一: 正则化线性回归 (Regularized Linear Regression) 1,可视化训练集,如下图所示: 通过可视化数据,接下来我们使用线性回归去拟合这些数据集。 2,正则化线性回归代价函数: $J(\theta)=\frac{1}{2m}(\sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})^2)+\frac{\lambda }{2m}\sum_{j=1}^{n}\theta_{j}^{2}$,忽略偏差项$\theta_0$的正则化 3,正则化线性回归梯度: $\frac{\partial J(\theta)}{\partial \theta_0}=\frac{1}{m}\sum_{i=1}^{m}[(h_\theta(x^{(i)})-y^{(i)})x^{(i)}_j]$ for $j=0$ $\frac{\partial J(\theta)}{\partial \theta_j}=(\frac{1}{m}\sum_{i

python matplotlib拟合直线

霸气de小男生 提交于 2019-12-04 22:03:02
import numpy as np import matplotlib.pyplot as plt plt.rcParams['font.family'] = ['sans-serif'] plt.rcParams['font.sans-serif'] = ['SimHei'] def linear_regression(x, y): N = len(x) sumx = sum(x) sumy = sum(y) sumx2 = sum(x ** 2) sumxy = sum(x * y) A = np.mat([[N, sumx], [sumx, sumx2]]) b = np.array([sumy, sumxy]) return np.linalg.solve(A, b) #单臂 #修改数据1: X1=np.array([0,20,40,60,80,100,120,140,160,180,200]) Y1=np.array([0,0.02,0.06,0.1,0.13,0.16,0.19,0.22,0.245,0.278,0.3]) #半桥 #修改数据2: X2=np.array([0,20,40,60,80,100,120,140,160,180,200]) Y2=np.array([0,0.057,0.118,0.185,0.245,0.308,0.376,0.425,0

投影矩阵和最小二乘

不问归期 提交于 2019-12-04 16:09:02
转载: https://www.cnblogs.com/bigmonkey/p/9897047.html 一维空间的投影矩阵   先来看一维空间内向量的投影:   向量p是b在a上的投影,也称为b在a上的分量,可以用b乘以a方向的单位向量来计算,现在,我们打算尝试用更“贴近”线性代数的方式表达。   因为p趴在a上,所以p实际上是a的一个子空间,可以将它看作a放缩x倍,因此向量p可以用p = xa来表示,只要找出x就可以了。因为a⊥e,所以二者的点积为0:   我们希望化简这个式子从而得出x:   x是一个实数,进一步得到x:   a T b和a T a都是点积运算,最后将得到一个标量数字。这里需要抑制住消去a T 的冲动,向量是不能简单消去的,a和b都是2×1矩阵,矩阵的运算不满足乘法交换律,a T 无法先和1/a T 计算。   现在可以写出向量p的表达式,这里的x是个标量:   这就是b在a上的投影了,它表明,当b放缩时,p也放缩相同的倍数;a放缩时,p保持不变。   由于向量点积a T a是一个数字,p可以进一步写成:   在一维空间中,分子是一个2×2矩阵,这说明向量b的在a上的投影p是一个矩阵作用在b上得到的,这个矩阵就叫做投影矩阵(Projection Matrix),用大写的P表达:   推广到n维空间,a是n维向量,投影矩阵就是n×n的方阵。观察投影矩阵会法发现

RANSAC拟合算法

纵然是瞬间 提交于 2019-12-04 08:53:16
最小二乘法只适合与误差较小的情况。试想一下这种情况,假使需要从一个噪音较大的数据集中提取模型(比方说只有20%的数据时符合模型的)时,最小二乘法就显得力不从心了。 算法简介 随机抽样一致算法(RANdom SAmple Consensus,RANSAC)。它是一种迭代的方法,用来在一组包含离群的被观测数据中估算出数学模型的参数。 RANSAC是一个非确定性算法,在某种意义上说,它会产生一个在一定概率下合理的结果,其允许使用更多次的迭代来使其概率增加。此RANSAC算法在1981年由Fischler和Bolles首次提出。 RANSAC的基本假设是 “内群”数据可以通过几组模型参数来叙述其数据分布,而“离群”数据则是不适合模型化的数据。 数据会受噪声影响,噪声指的是离群,例如从极端的噪声或错误解释有关数据的测量或不正确的假设。 RANSAC假定,给定一组(通常很小)的内群,存在一个程序,这个程序可以估算最佳解释或最适用于这一数据模型的参数。 一、范例 这里用一个简单的例子来说明,在一组数据点中找到一条最适合的线。 假设,此有一组集合包含了内群以及离群,其中内群为可以被拟合到线段上的点,而离群则是无法被拟合的点。 如果我们用简单的最小平方法来找此线,我们将无法得到一条适合于内群的线,因为最小平方法会受离群影响而影响其结果。 而RANSAC,可以只由内群来计算出模型,而且概率还够高。

最小二乘法推导

天涯浪子 提交于 2019-12-04 07:18:15
最小二乘法 最小二乘法可以更广泛地应用于非线性方程中,我们可以使用一些已知的离散的点,拟合出一条与这些离散点最为接近的曲线,从而可以分析出这些离散点的走向趋势。 设x和y之间的函数关系由直线方程:   y=ax+b 公式中有两个待定参数,b代表截距,a代表斜率。问题在于,如何找到“最合适”的a和b使得尽可能多的数据落在或者更加靠近这条拟合出来的直线上; 我们关心的是方程中的a和b,也就是说,在这个待定的方程中,a和b才是所求的变量,它们可以描述出x和y的关系。 所以我们接下来的任务就是找到一组最好的a和b。 我们对a和b的要求就是,使得所有x和y相对拟合直线的误差总和最小。也就是说,我们要考虑的是,要使这些数据点距离拟合直线的和最小,距离最短,这样就可以使得尽可能多的数据成为有效点。 最小二乘法的推导过程 一.是我们要将误差最小化 二.是我们将误差最小化的方法是使误差的平方和最小化。(用误差平方和最小化来约束误差的原因是要规避负数对计算的影响) 来源: https://www.cnblogs.com/-wenli/p/11846285.html

机器学习之欠拟合和过拟合(一)

让人想犯罪 __ 提交于 2019-12-04 02:01:34
1.欠拟合(underfitting)与过拟合(overfitting) 在机器学习中,我们的主要思想是通过对数据集的学习来生成我们的假设模型。在对数据集进行拟合的过程中,我们可能会遇到欠拟合和过拟合的问题。以身高预测的例子为例,这里给出7-18岁男生的身高标准(数据来源: 7 岁~18 岁儿童青少年身高发育等级评价 ),如图1: 将中位数随年龄的变化绘制成散点图,如图2: 由图2中的散点可知,先开始身高随年龄几乎成一条直线关系,后来增长率逐渐下降。如果我们采用线性函数取拟合,这显然是不合理的(线性函数的增长率不会发生变化)。如果我们用一个多项式函数去拟合,虽然这个多项式可能会很复杂,但是我们总可能找到一个多项式函数使得该函数完美经过图中的散点,如图3: 现在,我们来看一下线性拟合(图3红线):年龄大于18岁以后,按照散点图的趋势,身高应该逐渐趋于稳定,但是线性拟合的结果是身高随年龄增长依旧保持很高的增长率。显然这并不是一种很好的拟合方式,对于这种情况,我们称之为欠拟合,即高偏差(high bias)。 接下来,我们来看一下“完美的多项式拟合”(图3蓝线):蓝线的损失函数为0,在回归问题中,我们求解参数矩阵的方法就是尽可能地让损失函数的值最小化。这是否意味着当损失函数为0时,这时我们的学习模型最好呢?并不是这样子的。在”完美的多项式拟合“当中,我们的假设函数通常情况下会非常复杂