Machine Learning :
监督学习(Supervised learning):利用一组已知类别的样本调整分类器的参数,使其达到所要求性能的过程
无监督学习(Unsupervised learning):根据类别未知(没有被标记)的训练样本解决模式识别中的各种问题,称之为无监督学习。典型算法:聚簇算法(clustering algorithm)。
模型描述:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zs96UZWY-1604065801736)(C:UserschenDesktopry项目文档屏幕截图 2020-10-26 160109.png)]
由训练集,进入模型,模型给出‘预测函数’预测y值
代价函数(cost function)|损失函数(loss function):如何把最有可能的直线和我们的数据相拟合
通过使损失函数最小化来使函数值接近真实值,损失函数一般形态:
m
i
n
θ
J
(
θ
,
X
)
=
m
i
n
θ
1
2
m
∑
1
m
(
h
θ
(
x
(
i
)
)
?
y
(
i
)
)
2
梯
度
下
降
:
min_theta J(theta,X)= min_theta frac{1}{2m} sum_{1}^{m}{(h_theta(x^{(i)})-y^{(i)})^2}梯度下降:
minθ?J(θ,X)=minθ?2m1?1∑m?(hθ?(x(i))?y(i))2梯度下降:
梯度下降:
θ
j
=
θ
j
?
α
?
J
(
θ
,
X
)
?
θ
j
(
α
代
表
一
步
的
步
长
l
e
a
r
n
i
n
g
r
a
t
e
)
theta_j=theta_j- alpha frac{partial J(theta,X)}{partial theta_j}(alpha代表一步的步长 quad learning quad rate)
θj?=θj??α?θj??J(θ,X)?(α代表一步的步长learningrate)
同步更新(simultaneous update):
即
先
计
算
?
J
(
θ
,
X
)
?
θ
j
的
部
分
,
然
后
再
同
时
更
新
θ
j
(
j
=
1
,
2
,
3
,
4....
)
即先计算frac{partial J(theta,X)}{partial theta_j}的部分,然后再同时更新theta_j(j=1,2,3,4....)
即先计算?θj??J(θ,X)?的部分,然后再同时更新θj?(j=1,2,3,4....)
多元函数梯度下降:
h
θ
(
X
)
=
θ
T
X
h_{theta}(X)=theta^TX
hθ?(X)=θTX
θ = [ θ 0 , θ 1 , θ 2 , . . . . ] X = [ x 0 , x 1 , x 2 , x 3 , . . . ] ( x 0 = 1 ) theta=[theta_0,theta_1,theta_2,....] quad X=[{x_0,x_1,x_2,x_3,...}](x_0=1) θ=[θ0?,θ1?,θ2?,....]X=[x0?,x1?,x2?,x3?,...](x0?=1)
θ j = θ j ? α ? J ( θ , X ) ? θ j theta_j=theta_j- alpha frac{partial J(theta,X)}{partial theta_j} θj?=θj??α?θj??J(θ,X)?
θ 0 = θ 0 ? 1 m ∑ 1 m ( h θ ( x ( i ) ) ? y ( i ) ) x 0 theta_0=theta_0- frac{1}{m} sum_{1}^{m} (h_theta(x^{(i)})-y^{(i)})x_0 θ0?=θ0??m1?1∑m?(hθ?(x(i))?y(i))x0?
特征缩放:如果你的特征取值范围相近,你的梯度下降会更快,迭代次数会减少。
一般来说通过梯度下降法求解的模型需要进行特征缩放。
-
均值归一化:将数值范围缩放到 [-1, 1] 区间里,且数据的均值变为0
x ′ = x ? a v e r a g e ( x ) m a x ( x ) ? m i n ( x ) x^{'} = frac {x-average(x)}{max(x)-min(x)} x′=max(x)?min(x)x?average(x)? -
最大最小值归一化(min-max normalization):将数值范围缩放到 [0, 1] 区间里
x ′ = x ? m i n ( x ) m a x ( x ) ? m i n ( x ) x^{'} = frac {x-min(x)}{max(x)-min(x)} x′=max(x)?min(x)x?min(x)? -
标准化 / z值归一化(standardization / z-score normalization):将数值缩放到0附近,且数据的分布变为均值为0,标准差为1的标准正态分布(先减去均值来对特征进行 中心化 mean centering 处理,再除以标准差进行缩放)
x ′ = x ? x  ̄ σ ( σ = ∑ i = 1 n ( x i ? x  ̄ ) 2 n ) x^{'} = frac {x-overline{x}}{sigma}quadquad (sigma=sqrt{frac{sum_{i=1}^{n}(x_i-overline{x})^2}{n}}) x′=σx?x?(σ=n∑i=1n?(xi??x)2? ?)
**学习率(learning rate):**如果学习率太大的话,损失函数可能不会下降,或者呈现周期性,学习率太小的话会导致下降速度过小 --尝试一系列alpha 值画出迭代次数和损失函数的关系
正规方程:
θ
=
(
X
T
X
)
?
1
X
T
y
theta=(X^TX)^-1 X^Ty
θ=(XTX)?1XTy
θ为参数向量,y为输出,X为输入向量组成的矩阵。当特征比较少时,特征方程的计算还可以接受。
不推荐使用线性回归来预测分类:
-
通常来说对数据集使用线性回归,预测结果不理想
-
以0,1分类来说,线性回归输出的值会远大于1,或者小于0
Logistic回归
损失函数:
J
(
θ
,
X
)
=
1
m
∑
1
m
C
o
s
t
(
h
θ
(
x
)
,
y
)
J(theta,X)=frac {1}{m} sum^{m}_{1}{Cost(h_theta(x),y)}
J(θ,X)=m1?1∑m?Cost(hθ?(x),y)
h θ ( x ) = 1 1 + e ? θ T X h_theta(x)=frac{1}{1+e^{-{theta^TX}}} hθ?(x)=1+e?θTX1?
C o s t ( h θ ( x ) , y ) = ? ( y ( l o g ( h θ ( x ) ) ) + ( 1 ? y ) l o g ( 1 ? h θ ( x ) ) ) Cost(h_theta(x),y)=-(y(log(h_theta(x)))+(1-y)log(1-h_theta(x))) Cost(hθ?(x),y)=?(y(log(hθ?(x)))+(1?y)log(1?hθ?(x)))
梯度下降:
θ
j
:
=
θ
j
?
α
?
?
θ
j
J
(
θ
)
theta_j:=theta_j-alpha frac{partial}{partial theta_j}J(theta)
θj?:=θj??α?θj???J(θ)
θ j : = θ j ? α ∑ 1 m ( h θ ( x ( i ) ) ? y ( i ) ) x j ( i ) theta_j:=theta_j-alpha sum^{m}_{1}(h_theta(x^{(i)})-y^{(i)})x_j^{(i)} θj?:=θj??α1∑m?(hθ?(x(i))?y(i))xj(i)?
h θ ( x ) = 1 1 + e ? θ T X h_theta(x)=frac{1}{1+e^{-{theta^TX}}} hθ?(x)=1+e?θTX1?
仍需要手动选择学习率,如果使用其它高级的优化算法计算损失函数(例L-BFGS),可以不用选择学习率。cost函数的意义在于,让其关于参数的关系为一个凸函数,能够找到最低值,而不是局部最低。
过拟合问题:如果选择参数很多但是训练数据过少时,你的模型可能会在训练集上表现很好,但是无法泛化到其它数据上。
欠拟合问题:选择参数过少,模型无法较好的完成任务。
过拟合解决办法:
-
去掉一些参数(人工,或者模型选择算法来选择保留的参数)
-
参数正则化 主要就是为损失函数添加一些惩罚项,来使θ变得很小,得到一个比较平滑的曲线。
J ( θ , X ) = 1 m ∑ 1 m C o s t ( h θ ( x ) , y ) + λ 2 m ∑ j = 1 n θ j J(theta,X)=frac {1}{m}sum^{m}_{1}{Cost(h_theta(x),y)}+frac{lambda}{2m}sum_{j=1}^{n}theta_j J(θ,X)=m1?1∑m?Cost(hθ?(x),y)+2mλ?j=1∑n?θj?
如果系数λ过大的话,θ会趋近与0,这个时候相当于拟合一条直线,变成了欠拟合。(如何去选择正则化系数λ)
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!