0


【机器学习】向量化计算 -- 机器学习路上必经路

👋👋欢迎来到👋👋
🎩魔术之家!!🎩

该文章收录专栏
✨— 机器学习 —✨

专栏内容
✨— 【机器学习】浅谈正规方程法&梯度下降 —✨
✨— 【机器学习】梯度下降之数据标准化 —✨
✨— 【机器学习】logistic分类回归算法—✨
✨— 第十届“泰迪杯“感谢学习总结—✨

【机器学习】向量化计算 ---机器学习路上必经路

一、求解矩阵

在求解矩阵中,往往有很多很好的,经过高度优化的线性代数库,如octave,matlib,python numpy, c++,java.
我们使用这些线性代数库,可以短短几行实现 所要的效果。

阅读本文内容(需要一点点线性代数的知识)

二、例一

例如 求公式:

    h
   
   
    (
   
   
    x
   
   
    )
   
   
    =
   
   
    
     ∑
    
    
     
      i
     
     
      =
     
     
      1
     
    
    
     n
    
   
   
    
     θ
    
    
     i
    
   
   
    ∗
   
   
    
     x
    
    
     i
    
   
  
  
   h(x) = \sum_{i=1}^n\theta_i*x_i
  
 
h(x)=∑i=1n​θi​∗xi​

我们可以通过循环每一个值来求 每一个

    i
   
  
  
   i
  
 
i所对应的结果,但此时循环的时间复杂度为

 
  
   
    O
   
   
    (
   
   
    n
   
   
    )
   
  
  
   O(n)
  
 
O(n) , 我们可以把 

 
  
   
    
     θ
    
    
     i
    
   
   
    (
   
   
    i
   
   
    =
   
   
    1
   
   
    ,
   
   
    2
   
   
    ,
   
   
    3...
   
   
    n
   
   
    )
   
  
  
   \theta_i(i=1,2,3...n)
  
 
θi​(i=1,2,3...n) 看为

 
  
   
    n
   
  
  
   n
  
 
n维的列向量,

 
  
   
    
     x
    
    
     i
    
   
  
  
   x_i
  
 
xi​作为 

 
  
   
    n
   
  
  
   n
  
 
n维的列向量,则原公式即为求两个向量的内积 

 
  
   
    
     θ
    
    
     T
    
   
   
    ∗
   
   
    
     x
    
    
     i
    
   
  
  
   \theta^T*x_i
  
 
θT∗xi​ 来求得方程,这样在numpy中仅仅需要一行代码。如下图(演示代码为
octave(matlib开源版)


在这里插入图片描述
c++实现
在这里插入图片描述

三、例二

  • 再看一个复杂一点的例子:

(对梯度下降还不了解建议先食用文章:机器学习】浅谈正规方程法&梯度下降)
在梯度下降(Gradient descent)同步更新参数

     θ
    
    
     i
    
   
   
    (
   
   
    i
   
   
    =
   
   
    1
   
   
    ,
   
   
    2
   
   
    ,
   
   
    3...
   
   
    m
   
   
    )
   
   
    中
   
  
  
   \theta_i(i=1,2,3...m)中
  
 
θi​(i=1,2,3...m)中


我们可以通过循环

    i
   
  
  
   i
  
 
i得到每个参数更新,但我们是否能用例子一的方法 简化呢,

如图:
在这里插入图片描述

我们将所求式子变为 向量之间的运行,

    θ
   
   
    =
   
   
    θ
   
   
    −
   
   
    α
   
   
    ∗
   
   
    δ
   
  
  
   \theta = \theta - \alpha * δ
  
 
θ=θ−α∗δ

(其中:

    δ
   
  
  
   δ
  
 
δ = 

 
  
   
    
     ∑
    
    
     
      x
     
     
      =
     
     
      1
     
    
    
     n
    
   
   
    
     
      (
     
     
      
       h
      
      
       θ
      
     
     
      (
     
     
      x
     
     
      )
     
     
      −
     
     
      
       y
      
      
       i
      
     
     
      
       )
      
      
       2
      
     
    
    
     n
    
   
   
    ∗
   
   
    
     x
    
    
     i
    
   
  
  
   \sum_{x=1}^n \frac{(h_\theta(x) - y_i)^2}{ n }*x_i
  
 
∑x=1n​n(hθ​(x)−yi​)2​∗xi​,

 
  
   
    
     h
    
    
     θ
    
   
   
    (
   
   
    x
   
   
    )
   
   
    −
   
   
    
     y
    
    
     i
    
   
  
  
   h_\theta(x) - y_i
  
 
hθ​(x)−yi​ 是一个实数,

 
  
   
    
     x
    
    
     i
    
   
  
  
   x_i
  
 
xi​是特征维度的列向量)

在这里插入图片描述

此时参数

     θ
    
    
     i
    
   
  
  
   \theta_i
  
 
θi​也能同步更新,符合要求

四、写在最后

在面对,数据为百万级别,千万级别,或者特征为百万级别,特征级别,向量化计算对提高运算效率非常高效,比

for

循环要好用得多,这在机器学习中是非常常见的,一定要掌握


本文转载自: https://blog.csdn.net/weixin_66526635/article/details/125285568
版权归原作者 计算机魔术师 所有, 如有侵权,请联系我们删除。

“【机器学习】向量化计算 -- 机器学习路上必经路”的评论:

还没有评论