machine-learning - 向量化梯度下降函数
问题描述
我对线性代数相当陌生,目前正在学习 Andrew Ng 的机器学习课程。我很难理解以下两个功能是如何相同的。我正在为线性/逻辑回归向量化梯度下降。
theta = theta - (alpha/m)*(X')*(X*theta - y)
theta = theta - (alpha/m)*sum((X*theta -y)*x(i))
我的想法是这x(i)
是一个向量,为了进行向量乘法,我需要转置它,但是在尝试模拟一个示例时,我没有看到这是多么必要。任何帮助或解释将不胜感激。
解决方案
假设您指的是底部的方程式,第 4 讲,幻灯片 8,那么您的总和是错误的。术语 x (i)意味着在总和内部,而不是在外部。在“向量化”的情况下,您的输入 X 包含所有单独的观察 x (i)作为(可能)列向量(请检查您的代码以确保)。因此正确的等价下表达式应该是:
theta = theta - (alpha/m)*sum((X*theta -y) .* X)
这确实等效于顶部的其他向量化表达式,因为通常,对于任何两个(列)向量 a
和b
,确实a.' * b
等效于sum(a .* b)
推荐阅读
- go - 如何检查一个元素的切片并在值存在或不存在时操作另一个切片
- visual-studio-extensions - 在 VS 扩展中如何在输出窗口中显示一些字符串(包含路径和行号)
- css - 如何修复图像之间的 CSS 间距
- python - 有人来电时获取电话号码
- python - 如何从 BrowserMobProxy 的 har 中解码请求内容?
- php - Yii2 xml文件响应
- javascript - 如果其他输入为空,则防止条带结帐
- laravel - laravel - 按ID和用户ID删除评论不起作用
- php - 我如何在 PHP 上修复 mail() 函数?
- google-apps-script - 我可以根据某个单元格中的数据在谷歌表格中创建多个条件格式吗?