精华内容
下载资源
问答
  • 由于“维数灾难”, 非线性系统随着维数增加而使得辨识需要的数据量呈指数速度上升, 因而有必要从数据量趋于无穷、数据量有限系统结构等不同角度来研究非参数线性系统的变量选择问题. 针对上述不同情形, 本文...
  • 以实测数据为依据,采用IBM SPSS Statistics 24.0软件进行Langmuir方程参数线性回归与非线性回归的对比分析。结果表明:线性回归方法不满足相应曲线因变量的残差平方最小,线性回归方法中对变量由无理数到有限小数的...
  • 讨论一类线性不确定系统的鲁棒严格正实分析控制问题, 其中各不确定参数矩阵具有线性分式形式. 分 析了这类系统对所有容许不确定性严格正实的条件, 并综合了使闭环内稳且严格正实的动态输出反馈控制器. 通过...
  • 变量线性回归

    2020-03-05 19:41:30
    我们的目标变量线性回归问题中一样,是要找出使得代价函数最小的一系列参数。 多变量线性回归的批量梯度下降算法为: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-X8w3rqUS-...

    多变量梯度下降

    与单变量线性回归类似,在多变量线性回归中,我们也构建一个代价函数,则这个代价函数是所有建模误差的平方和,即:

    多变量代价函数

    其中:

    多变量函数

    我们的目标和单变量线性回归问题中一样,是要找出使得代价函数最小的一系列参数。 多变量线性回归的批量梯度下降算法为:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-X8w3rqUS-1583408307734)(https://i.loli.net/2020/01/07/r2BYEoxOdN5zbUA.png)]

    我们开始随机选择一系列的参数值,计算所有的预测结果后,再给所有的参数一个新的值,如此循环直到收敛。

    Python 代码示例:

    代码实现公式

    def computeCost(X, y, theta):
        inner = np.power(((X * theta.T) - y), 2)
        return np.sum(inner) / (2 * len(X))
    

    梯度下降法实践1-特征缩放

    在我们面对多维特征问题的时候,我们要保证这些特征都具有相近的尺度,这将帮助梯度下降算法更快地收敛

    以房价问题为例,假设我们使用两个特征,房屋的尺寸和房间的数量,尺寸的值为 0-2000平方英尺,而房间数量的值则是0-5,以两个参数分别为横纵坐标,绘制代价函数的等高线图能,看出图像会显得很扁,梯度下降算法需要非常多次的迭代才能收敛。

    房价问题代价函数等高线

    解决的方法是尝试将所有特征的尺度都尽量缩放到-1到1之间。如图:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BuMPbPG5-1583408307739)(https://i.loli.net/2020/01/09/fI69AhN7Gm1UCWb.png)]

    最简单的方法是令:x_n = (x_n - miu_n) / s_n ,其中miu_n是平均值,s_n是标准差

    梯度下降法实践2—学习率

    梯度下降算法收敛所需要的迭代次数根据模型的不同而不同,我们不能提前预知,我们可以绘制迭代次数和代价函数的图表来观测算法在何时趋于收敛。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KpObXPl5-1583408307741)(https://i.loli.net/2020/01/09/Z5WyIJPivt6VbrK.jpg)]

    也有一些自动测试是否收敛的方法,例如将代价函数的变化值与某个阀值(例如0.001)进行比较,但通常看上面这样的图表更好

    梯度下降算法的每次迭代受到学习率的影响,如果学习率过小,则达到收敛所需的迭代次数会非常高;如果学习率过大,每次迭代可能不会减小代价函数,可能会越过局部最小值导致无法收敛。

    通常可以考虑尝试这些学习率:

    alpha = 0.01, 0.03, 0.1, 0.3, 1, 3, 10

    特征和多项式回归

    对于房价预测问题

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PC3cbTtG-1583408307742)(https://i.loli.net/2020/01/09/ENn8vWd1qXRwZJc.png)]

    其中,x1 = frontage(临街宽度)x2 = depth(纵向深度)x = frontage * depth = area,则:h(x) = theta0 + theta1*x1 + theta2*x2^2

    线性回归并不适用于所有数据,有时我们需要曲线来适应我们的数据,比如一个二次方模型:h(x) = theta0 + theta1*x1 + theta2*x2^2 或者三次方模型:h(x) = theta0 + theta1*x1 + theta2*x2^2 + theta3*x3^3

    曲线模型

    通常我们需要先观察数据然后再决定准备尝试怎样的模型。 另外,我们可以令:x2 = x2^2, x3 = x3^3,从而将模型转化为线性回归模型。

    根据函数图形特性,我们还可以使:

    1

    注:如果我们采用多项式回归模型,在运行梯度下降算法前,特征缩放非常有必要。

    正规方程

    对于某些线性回归问题,正规方程方法是更好的解决方案。如

    正规方程是通过求解下面的方程来找出使得代价函数最小的参数的:

    J_theta求导

    即对J(theta)进行求导。

    假设我们的训练集特征矩阵为X(包含了x0=1),并且我们的训练集结果为向量y,则利用正规方程解出向量

    正规方程求得向量theta

    对于某些不可逆的矩阵(通常是因为特征之间不独立,如同时包含英尺为单位的尺寸和米为单位的尺寸两个特征,也有可能是特征数量大于训练集的数量),则无法使用正规方程方法

    以下表数据为例:

    梯度下降与正规方程的比较:

    梯度下降 正规方程
    需要选择学习率Alpha 不需要
    需要多次迭代 一次运算得出
    当特征数量n大时也能较好适用 需要计算A的逆如果特征数量n较大则运算代价大,因为矩阵逆的计算时间复杂度为O(n^3),通常来说当n小于10000时还是可以接受的
    适用于各种类型的模型 只适用于线性模型,不适合逻辑回归模型等其他模型

    只要特征变量的数目并不大,正规方程是一个很好的计算参数theta的替代方法。具体地说,只要特征变量数量小于一万,通常使用正规方程法,而不使用梯度下降法。

    对于那些更复杂的学习算法,我们将不得不仍然使用梯度下降法。因此,梯度下降法是一个非常有用的算法,可以用在有大量特征变量的线性回归问题。

    但对于这个特定的线性回归模型,标准方程法是一个比梯度下降法更快的替代算法。所以,根据具体的问题,以及你的特征变量的数量,这两种算法都是值得学习的。

    正规方程的Python实现:

    import numpy as np
        
    def normalEqn(X, y):
        theta = np.linalg.inv(X.T@X)@X.T@y 
                        #X.T@X等价于X.T.dot(X)
        return theta
    
    展开全文
  • TensorBoard中的scalar观察标量(损失值)的变化情况如下图: 模型的保存加载可以避免模型在...demo.py(手动实现线性回归,TensorBoard中添加变量的变化显示,模型的保存加载,命令行参数): import tens...


     

    TensorBoard中的scalar观察标量(损失值)的变化情况如下图: 


    模型的保存和加载可以避免模型在训练一半时突然宕机造成训练模型数据的丢失。可以通过加载模型从上次的检测点(checkpoint)的位置继续训练模型。



     

    demo.py(手动实现线性回归,TensorBoard中添加变量的变化显示,模型的保存和加载,命令行参数):

    import tensorflow as tf
    import os
    os.environ['TF_CPP_MIN_LOG_LEVEL']='2'  # 设置警告级别
    
    
    # 定义命令行参数
    # 参数顺序:名字,默认值,说明
    tf.app.flags.DEFINE_integer("max_step", 500, "模型训练的步数")
    tf.app.flags.DEFINE_string("model_dir", " ", "模型文件的加载的路径")
    # 命令行中的运行命令: python demo.py --max_step=500 --model_dir="./ckpt/mymodel"
    
    # 通过下面的FLAGS获取命令行参数
    FLAGS = tf.app.flags.FLAGS  # 取一个简单的别名
    
    
    def myregression():
        """
        手动实现一个线性回归预测
        :return: None
        """
        # 创建变量的作用域,为了让代码看起来更清爽。 TensorBoard中的图根据作用域显示也会更清爽。
        with tf.variable_scope("data"):
            # 1、准备数据,x 特征值 [100, 1]   y 目标值[100]
            x = tf.random_normal([100, 1], mean=1.75, stddev=0.5, name="x_data")
    
            # 模拟真实的目标值。  矩阵相乘必须是二维的
            y_true = tf.matmul(x, [[0.7]]) + 0.8
    
        with tf.variable_scope("model"):
            # 2、建立线性回归模型 1个特征,1个权重, 一个偏置 y = w x + b
            # 随机给一个权重和偏置的值,让他去计算损失,然后再当前状态下优化
            # 用变量定义权重(系数)才能优化(变化)
            # trainable参数:指定这个变量能根据梯度下降进行优化(变化)(默认True)
            weight = tf.Variable(tf.random_normal([1, 1], mean=0.0, stddev=1.0), name="w", trainable=True)  # 初始权重
            bias = tf.Variable(0.0, name="b")  # 初始偏置
    
            y_predict = tf.matmul(x, weight) + bias
    
        with tf.variable_scope("loss"):
            # 3、建立损失函数,均方误差
            loss = tf.reduce_mean(tf.square(y_true - y_predict))
    
        with tf.variable_scope("optimizer"):
            # 4、梯度下降优化损失 leaning_rate: 学习率(步长),一般设置(0,1)之间。学习率并不是一个超参数,它不会影响最终优化的结果。
            train_op = tf.train.GradientDescentOptimizer(0.1).minimize(loss)
    
        # 1、收集tensor
        tf.summary.scalar("losses", loss)  # 标量
        tf.summary.histogram("weights", weight)  # 高纬度的值。 (这里的weight也可以通过标量的形式收集)
    
        # 合并收集的变量的op (合并变量,一次性写入事件文件,通过TensorBoard进行可视化)
        merged = tf.summary.merge_all()
    
        # 定义一个初始化变量的op
        init_op = tf.global_variables_initializer()
    
        # 定义一个保存模型的实例
        saver = tf.train.Saver()
    
        # 通过会话运行程序
        with tf.Session() as sess:
            # 初始化变量
            sess.run(init_op)
    
            # 打印随机最先初始化的权重和偏置
            print("随机初始化的参数权重为:%f, 偏置为:%f" % (weight.eval(), bias.eval()))
    
            # 建立事件文件
            filewriter = tf.summary.FileWriter("./tmp/summary/test/", graph=sess.graph)
    
            # 加载模型,覆盖模型当中随机定义的参数,从上次训练的参数结果开始训练
            if os.path.exists("./tmp/ckpt/checkpoint"):
                saver.restore(sess, FLAGS.model_dir)  # FLAGS获取命令行参数(模型的保存路径和模型名)
    
            # 循环训练(迭代) 运行梯度下降的优化操作
            for i in range(FLAGS.max_step):  # FLAGS获取命令行参数
    
                sess.run(train_op)  # 运行梯度下降的优化操作
    
                # 运行合并变量的op (每次迭代都需运行)
                summary = sess.run(merged)
                filewriter.add_summary(summary, i)  # 将收集的变量写入事件文件,i表示第i次的值。
    
                print("第%d次优化的参数权重为:%f, 偏置为:%f" % (i, weight.eval(), bias.eval()))
    
            # 保存模型(保存模型的系数,变量)。  可以根据i的值控制模型的保存频率。
            saver.save(sess, FLAGS.model_dir)  # 保存的变量属于资源,所以需要会话。 FLAGS获取命令行参数(模型的保存路径和模型名)
            
        return None
    
    
    if __name__ == "__main__":
        myregression()
    

     

     

    展开全文
  • 变量线性

    2018-11-03 11:53:50
    变量线性回归,其实就是多参数,用向量代替单个参数。 特征缩放 本来由于下降梯度的不同会造成向着梯度最小方向进行的时候不是向着最快的收敛方向前进,由于起始点不同会造成收敛速度差别很大,如果特征缩放...

    多变量线性回归,其实就是多参数,用向量代替单个参数。

    在这里插入图片描述

    特征缩放

    在这里插入图片描述
    本来由于下降梯度的不同会造成向着梯度最小方向进行的时候不是向着最快的收敛方向前进,由于起始点不同会造成收敛速度差别很大,如果特征缩放之后使收敛速度和选择的初始点关系变小一些,使回归快一些。将数据归一化,使数据范围在-1 到 1。
    最好还是看收敛曲线,不要自动判断收敛,因为你可以看出来趋势,判断是不是病态的。
    学习率也不宜过大,要防止越过最低点,导致无法收敛,但是太小的话收敛太慢,也不合适。可以尝试多个学习率看一下损失函数曲线,找一个合适的。多元
    线性回归不一定要用线性的,可以用二次三次函数(平方根)。多个特征之间可以相互替代,找到合适的拟合函数(比如面积可以用长宽两个参数来代替)。

    展开全文
  • 变量线性回归

    2020-01-10 19:31:32
    变量线性回归的求解思路基于最小二乘法,假设我们有一批数据M,其中M是包含有一个自变量其对应因变量的一系列数据点,一个数据点可以表示为s(Xi,Yi),则单变量线性回归要求解的公式为找到一条直线Y=AX+B,使得...

    单变量线性回归的求解思路基于最小二乘法,假设我们有一批数据M,其中M是包含有一个自变量和其对应因变量的一系列数据点,一个数据点可以表示为s(Xi,Yi),则单变量线性回归要求解的公式为找到一条直线Y=AX+B,使得:

    \frac{1}{2n}\sum_{i=1}^{n}\left ( Ypred-Ytrue \right )^{2}

    最小,上式也称为线性回归的损失函数。

    拟合的直线通常有两个参数,我们通过最小二乘法写成的损失函数可以通过对参数1和参数2求偏导,根据梯度下降法来对其进行更新。

    \ddot{\theta 1}=\frac{1}{m}\sum_{i=1}^{n}(Ypred-Ytrue)*X

    \ddot{\theta 2}=\frac{1}{m}\sum_{i=1}^{n}(Ypred-Ytrue)

    \theta 1 =\theta 1 -\alpha \ddot{\theta 1}

    \theta 2 =\theta 2 -\alpha \ddot{\theta 2}

    通过对此迭代就可以是损失函数最小的两个参数。

    展开全文
  • 该连锁店已经在各个城市有了卡车,你有了来自城市的利润人口数据。你希望使用此数据来帮助您选择下一步要扩展到哪个城市。文件ex1data1.txt包含用于我们的线性回归问题的数据集。第一列是一个城市的人口第二列是这...
  • 线性插值二次插值The model may turn out to be far too complex if we continuously keep adding more variables. 如果我们不断增加更多的变量,该模型可能会变得过于复杂。 Will fail to simplify as it is ...
  • + 1个参数和????个变量,为了使得公式能够简化一些,引入????0 = 1,则公式转化为:ℎ????(????) = ????0????0 + ????1????1 + ????2????2+…+???????????????? 此时模型中的参数是一个???? + 1维的向量,任何一个...
  • 多元线性回归中多重共线问题的解决方法综述摘要在回归分析中,当自变量之间出现多重共线性现象时,常会严重影响到参数估计,扩大模型误差,并破坏模型的稳健性,因此消除多重共线性成为回归分析中参数估计的一个重要...
  • 简单线性回归(单变量) 自动生成数据 使用make_regression生成回归模型数据。几个关键参数有n_samples(生成样本数), n_features(样本特征数),noise(样本随机噪音)coef(是否返回回归系数)。 import numpy ...
  • 机器学习中的单变量线性回归问题1单变量线性回归问题2代价函数3梯度下降法3.1...我们的目标是找到可以使得模型误差的平方最小的模型参数θ_0θ_1。即使得代价函数J(θ_0,θ_1 )最小。 绘制一个等高线图,三坐标...
  • 给出一些带有标签的数据(即带有“正确答案”的数据),用y=ax+b 的形式去拟合数据(线性,单变量)。 大致过程如下:给出训练集(带有标签的数据),通过学习算法选择不错的参数 theta0, theta1 得到假设函数h(从...
  • 变量线性回归

    2019-03-22 09:28:26
    这个公式中有n+1个参数和n 个 变量,为了使公式简化,这里引入x0x_0x0​=1,则公式为 hθ(x)=θ0x0+θ1x1.......θnxn=θTXh_\theta(x)=\theta_0x_0+\theta_1x_1.......\theta_nx_n=\theta^TXhθ​(x)=θ0​x0​+θ1...
  • 这个公式中有n+1个参数和n个变量,为了使得公式能够简化一些,引入x0=1,则公式转化为: 此时模型中的参数是一个n+1维的向量,任何一个训练实例也都是n+1维的向量,特征矩阵X的维度是m*(n+1)。 因此公式可以简化为...
  • 什么是线性回归(Linear Regression)维基百科:线性回归在统计学中,线性回归是利用称为线性回归方程的最小二乘函数对一个或多个自变量和变量之间关系进行建模的一种回归分析。按照博主自己的理解,线性就是因变量...
  • 只含有一个特征/输入变量,这样的问题叫做单变量线性回归问题。如 接下来是为模型选择合适的参数,如 模型预测的值与训练集中实际的值的插值就是建模误差。 目标是选择出可使得建模误差的平方能够最小的模型参数...
  • 变量线性回归 代价函数(cost function):用来衡量是否找到系统整体性能的函数,一般来说,代价函数越小表示拟合的越好 为了减少极个别极端的数据,我们把误差平方再乘以1/2m. 另外注意h(x)是关于x的函数,...
  • 变量线性回归(Linear Regression with One Value) 模型表示 以房屋价格预测为例,该回归问题中的相关标记如下 常用该表达式,因为只含一个特征/输入变量,被称为单变量线性回归问题。 后期简写为h(x) ...
  • 为了避免Diophantine方程求解矩阵求逆运算,提高广义预测控制算法的实时性,对一类参数未知多变量线性系统提出一种径向基函数神经网络的直接广义预测控制(GPC)算法。该算法将多变量线性系统转换为多变量时变...
  • 二、单变量线性回归

    2019-06-19 11:27:20
    1.模型描述: 之所以是监督学习,是因为每一个例子都有一个“正确的答案” ...如何选择模型参数θ0θ1? 使h(x)最接近样本,要尽量减少假设函数的输出与试剂样本值的差的平方的2m分之一,即...
  • 目录 ​课程回顾 例1:房价面积—预测 例2:乳腺癌良性/恶性尺寸关系 2.分类Classification 3.回归Regression ...4.监督学习Supervised Learning ...参数解释 学习率 学习率过小 学习率过大 9.梯度下

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,921
精华内容 768
关键字:

参数线性和变量线性