首页 > 其他分享 >【机器学习】多变量线性回归

【机器学习】多变量线性回归

时间:2023-07-31 11:14:52浏览次数:27  
标签:mathbf 变量 column mu 线性 机器 sigma

Liner Regression with Multiple Variable

用向量实现的代码,单变量和多变量可以共用

多变量线性回归相当于是单变量的扩展,主要还是按照模型假设、构造代价函数和研究代价函数的最小值这样的思路展开。

与单变量线性回归不同的是,多变量线性回归还可能涉及到特征缩放的问题,主要原因是存在着不同尺度的特征变量,为了使得梯度下降能够快速地收敛,需要将这些特征变量统一尺度(类似于归一化的思想)

相比于单变量线性回归,多变量线性回归在求解代价函数的特征方程时,除了可以使用梯度下降法,还可以使用正则方程。根据特征变量的多少,灵活地选择这两种方法。

线性回归模型

数学表达式

\[f_{\vec{w}, b}(\vec{x}) = w_1x_1+…+w_nx_n+b \]

or

\[ f_{\mathbf{w},b}(\mathbf{x}) = \mathbf{w} \cdot \mathbf{x} + b \]

\[\mathbf{X} = \begin{pmatrix} x^{(0)}_0 & x^{(0)}_1 & \cdots & x^{(0)}_{n-1} \\ x^{(1)}_0 & x^{(1)}_1 & \cdots & x^{(1)}_{n-1} \\ \cdots \\ x^{(m-1)}_0 & x^{(m-1)}_1 & \cdots & x^{(m-1)}_{n-1} \end{pmatrix} \]

\[\mathbf{w} = \begin{pmatrix} w_0 \\ w_1 \\ \cdots \\ w_{n-1} \end{pmatrix} \]

Feature scaling

当参数的差距在几个数量级时或参数导致模型溢出时,需要缩放特征,以提高梯度下降的速度

数学表达式

Feature scaling Mean normalization Z-score normalization
\(x_{j, scaled} = \frac{x_j} {max},x_j \in [0,1]\) \(x_{j} = \frac{x_j - \mu_j}{max - min},x_j \in [-1, 1]\) \(x_j = \frac{x_j - \mu_j}{\sigma_j},x_j \in [-3,3]\)

代码

def zscore_normalize_features(X):
    """
    computes  X, zcore normalized by column
    
    Args:
      X (ndarray): Shape (m,n) input data, m examples, n features
      
    Returns:
      X_norm (ndarray): Shape (m,n)  input normalized by column
      mu (ndarray):     Shape (n,)   mean of each feature
      sigma (ndarray):  Shape (n,)   standard deviation of each feature
    """
    # find the mean of each column/feature
    mu     = np.mean(X, axis=0)                 # mu will have shape (n,)
    # find the standard deviation of each column/feature
    sigma  = np.std(X, axis=0)                  # sigma will have shape (n,)
    # element-wise, subtract mu for that column from each example, divide by std for that column
    X_norm = (X - mu) / sigma      

    return (X_norm, mu, sigma)

Cost Function

数学表达式

\[J(w_1,…,w_n,b) \]

Gradient Descent

数学表达式

\[\begin{align*} \text{repeat}&\text{ until convergence:} \; \lbrace \newline\; & w_j = w_j - \alpha \frac{\partial J(\mathbf{w},b)}{\partial w_j} & \text{for j = 0..n-1}\newline &b\ \ = b - \alpha \frac{\partial J(\mathbf{w},b)}{\partial b} \newline \rbrace \end{align*} \]

Normal equation

仅适用于线性回归 && 求解时不迭代

标签:mathbf,变量,column,mu,线性,机器,sigma
From: https://www.cnblogs.com/MrFeng2997/p/17592014.html

相关文章

  • 编程语言中代码块中的变量
    usingnamespacestd; intmax10=10; inti=0; //放入内存中 intlength[10]; for(i=0;i<max10;i++) { cout<<i+1<<endl; //把相加的结果放入寄存器中具体看汇编代码,这样不应影响内存中的值 length[i]=i; }汇编代码:usingnamespacestd; int......
  • vue + vite 在index.html中使用环境变量
    npminstallvite-plugin-html-Dvite.config.jsimport{createHtmlPluginasuseHtmlLoader}from'vite-plugin-html'useHtmlLoader({inject:{data:{title:VITE_APP_BASE_URL,},},}),index.html可以使用啦!!!<pclass=&quo......
  • Maven implicit Properties(隐含变量)
    http://www.sonatype.com/books/mvnref-book/reference/resource-filtering-sect-properties.htmlMaven:TheCompleteReference9.2. MavenPropertiesPrev:9.1. IntroductionTOCNext:9.3. ResourceFiltering9.2. MavenPropertiesYoucanuseMavenproper......
  • python调用其他py文件的变量
    Python调用其他py文件的变量在Python中,我们常常需要调用其他Python文件中定义的变量。这样可以避免在不同的文件之间重复定义和初始化变量,提高代码的复用性和可维护性。本文将介绍几种常见的方法来实现Python文件之间的变量调用。方法一:导入模块在Python中,我们可以将变量定义在......
  • 工业机器人坐标系详解(基于六轴串联机器人和SCARA机器人)
    工业机器人的坐标系机器人的坐标系是重中之重,它是理解机器人运动的基础。机器人所有运动的点位都是建立在坐标系的基础之上,所以如果坐标系不理解,那么就很难真实了解机器人是如何运动的。什么是坐标系?我们需要移动机器人来工作,但是如何让机器人移动?当然我们可以单独控制机器人的......
  • 【机器学习】单变量线性回归
    MLintroduction机器学习:从数据中学习,而不依赖于规则下编程的一种算法Goal:\(min_{w,b}(J(w,b))\)-提供一种衡量一组特定参数与训练数据拟合程度的方法SupervisedLearningrightanswer&&x->ylabelcategoriesRegressionClassificationUnsupervisedLearnin......
  • Java学习6-面向对象基础 成员变量、成员方法、构造方法、this关键字、静态字段、静态
    一、面向对象概述面向过程开发,其实就是面向着具体的每一个步骤和过程,把每一个步骤和过程完成,然后由这些功能方法相互调用,完成需求。面向过程的代表语言:C语言当需求单一,或者简单时,我们一步一步去操作没问题,并且效率也挺高。可随着需求的更改,功能的增多,发现需要面对每一个步骤很麻......
  • 2023 年 7 月 23 日机器学习发生了什么:OpenAI 的突破性变化、更好的关注和……
    保留网络:大型语言模型转换器的继承者他们引入了一种非常有前途的注意力变体。基本上,他们:抛弃软最大值让每个令牌只关注一个状态向量,而不是所有以前的令牌在每个头上分别做层规范相对于序列维度呈指数衰减注意力,每个头部具有不同的衰减系数这使他们能够有效地在......
  • [Robot]FANUC发那科机器人零点标定
    FANUC的机械原点校准是通过零点标定来进行,具体操作步骤如下。首先,需要设定变量$MASTER_ENB的值为1,具体步骤为。1.MENU-下一页-变量。2.ITEM-输入313-变量$MASTER_ENB的值设为1。(注:不一定是313,可以通过shift+上/下键进行快速翻页查找)。接下来,通过MENU-下一页-系统-零点标定/......
  • 1.变量&&输入输出
    1.变量&&输入输出变量概念:变量,本质上是一个装东西的盒子,并且只能存放一个值。1.变量的命名规则变量的名字由:数字,字母,下划线组成,并且不能以数字开头,且区分大小写。变量的定义格式:变量名=值注意:赋值符号(从左往右读),==等于。a=1b=1.1c='hnfkujg'3.变量的类型int整型,f......