Machine Learning笔记

Machine Learning :

监督学习(Supervised learning):利用一组已知类别的样本调整分类器参数,使其达到所要求性能的过程

无监督学习(Unsupervised learning):根据类别未知(没有被标记)的训练样本解决模式识别中的各种问题,称之为无监督学习。典型算法:聚簇算法(clustering algorithm)。

模型描述

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zs96UZWY-1604065801736)(C:\Users\chen\Desktop\ry项目文档\屏幕截图 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}\quad\quad (\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函数的意义在于,让其关于参数的关系为一个凸函数,能够找到最低值,而不是局部最低。

过拟合问题:如果选择参数很多但是训练数据过少时,你的模型可能会在训练集上表现很好,但是无法泛化到其它数据上。

欠拟合问题:选择参数过少,模型无法较好的完成任务。

过拟合解决办法

  1. 去掉一些参数(人工,或者模型选择算法来选择保留的参数)

  2. 参数正则化 主要就是为损失函数添加一些惩罚项,来使θ变得很小,得到一个比较平滑的曲线。
    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,这个时候相当于拟合一条直线,变成了欠拟合。(如何去选择正则化系数λ)

上一篇:Python项目实战:使用PySpark对大数据进行分析


下一篇:Using Machine Learning to Analyze Taylor Swift‘s Lyrics