原文引用https://www.dazhuanlan.com/2019/08/26/5d62fe3eea881/
定义 :
Octave for Microsoft Windows
- 主要用于数值分析的软件,在初学机器学习很好用
- 下载地址 : Octave 官方网站
- 下载地址
- 下载 installer 后不断
next
就能安装完成了
P.S.下载任何版本都可以,但不要下载 Octave 4.0.0
,此版本有重大的 bug
Supervised learing ( 监督式学习 )
- 定义 : 机器去学习事先标记过的训练范例 ( 输入和预期输出 ) 后,去预测这个函数对任何可能出现的输入的输出
-
函数的输出可以分为两类 :
- 回归分析 ( Regression ) : 输出连续的值,例如 : 房价
- 分类 ( Classification ) : 输出一个分类的标签,例如 : 有或没有
Unsupervised learing ( 非监督式学习 )
- 定义 : 没有给定事先标记过的训练范例,自动对输入的数据进行分类或分群
-
常用于分群,有两类应用 :
- 聚类 ( Clustering ) : 将数据集中的样本划分为若干个通常是不相交的子集,例如 : 分类成不同类的新闻
- 非聚类 ( Non-clustering ) : 例如 : 鸡尾酒会算法,从带有噪音的数据中找到有效数据,可用于语音辨识
线性回归算法 ( Linear Regression )
-
hθ(x) = θ₀ + θ₁x₁
: 线性回归算式 -
m
: 数据量 -
x⁽ⁱ⁾
: i 代表第 i 笔数据
代价函数 ( Cost Function )
- 算出代价函数
1 |
function J = costFunctionJ(X, y, theta) |
- 在 Octave 上的代价函数函数
- 找出代价函数的最小值,来找出 θ₀、θ₁
使用梯度下降 ( Gradient descent ) 将函数 J 最小化
- 初始化 θ₀、θ₁ ( θ₀=0, θ₁=0 也可以是其他值)
- 不断改变 θ₀、θ₁ 直到找到最小值,或许是局部最小值
- 梯度下降公式,不断运算直到收敛,θ₀、θ₁ 必须同时更新
- α 后的公式其实就是导数 ( 一点上的切线斜率 )
- α 是 learning rate
- 正确的算法
- 错误的算法,没有同步更新
1 |
function [theta, J_history] = gradientDescent(X, y, theta, alpha, num_iters) |
- 在 Octave 上的梯度下降函数
Learning Rate α
- α 是 learning rate,控制以多大幅度更新 θ₀、θ₁
- 决定 α 最好的方式是随着绝对值的导数更新,绝对值的导数越大,α 越大
- α 可以从 0.001 开始 ( 每次 3 倍 )
- α 太小 : 收敛会很缓慢
- α 太大 : 可能造成代价函数无法下降,甚至无法收敛
结合梯度下降与代价函数
- 将代价函数带入梯度下降公式
- 以所有样本带入梯度下降公式不断寻找 θ₀、θ₁,在机器学习里称作批量梯度下降 ( batch gradient descent )
多特征线性回归 ( Linear Regression with multiple variables)
-
hθ(x) = θ₀x₀ + θ₁x₁ + θ₂x₂ + ... + θₙxₙ
: 多特征线性回归算式,x₀ = 1 -
n
: 特征量
使用梯度下降解多特征线性回归
- 相较于一元线性回归,只是多出最后的 xⱼ
- 拆开后
特征缩放 ( Feature Scaling ) 与均值归一化 ( Mean Normalization )
- 目的 : 加快梯度下降,因为特征值范围相差过大会导致梯度下降缓慢
-
sᵢ
: 特征缩放,通常使用数值范围 -
μᵢ
: 均值归一化,通常使用数值的平均
1 |
function [X_norm, mu, sigma] = featureNormalize(X) |
- 在 Octave 上的特征缩放与均值归一化函数
多项式回归 ( Polynomial Regression )
- 我们可以结合多种有关的特征,产生一个新的特征,例如 : 房子长、宽结合成房子面积
- 假如线性的 ( 直线 ) 函数无法很好的符合数据,我们也可以使用二次、三次或平方根函数 ( 或其他任何的形式 )
正规方程 ( Normal Equation )
X = 各特征值
y = 各结果
- 算式 :
(XᵀX)⁻¹Xᵀy
- Octave :
pinv(X'*X)*X'*y
1 |
function [theta] = normalEqn(X, y) |
- 在 Octave 上的正规方程函数
在 Octave 里我们通常用 pinv
而不是 inv
,因为使用 pinv
就算 XᵀX
为不可逆,还是会给予 θ 的值
-
XᵀX
不可逆的原因 :- 多余且无关的特征值
- 特征值过多 ( m<=n ),删除一些或正规化
梯度下降 vs 正规方程
-
梯度下降
-
优点 :
- 特征量大时,可以正常运行
- O(kn²)
-
缺点 :
- 需要选择 α
- 需要不断迭代
-
-
正规方程
-
优点 :
- 不需要选择 α
- 不用迭代
-
缺点 :
- 需运算 (XᵀX)⁻¹,所以当特征量大时,会耗费很多运算时间 ( n > 10000 )
- O(n³)
-