栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

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

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

欢迎来到
魔术之家!!

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

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

【机器学习】向量化计算 ---机器学习路上必经路
  • 一、求解矩阵
  • 二、例一
  • 三、例二
  • 四、写在最后

一、求解矩阵

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

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

二、例一

例如 求公式:

h ( x ) = ∑ i = 1 n θ i ∗ x i h(x) = sum_{i=1}^ntheta_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循环要好用得多,这在机器学习中是非常常见的,一定要掌握

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/993701.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号