机器学习综述
机器学习分类
1.监督学习
监督学习是指利用一组已知类别的样本调整分类器的参数,使其达到所要求的性能过程,也称为监督训练或有教师学习。在监督学习的过程中会提供对错指示,通过不断地重复训练,使其找到给定的训练数据集中的某种模式或规律,当新的数据到来时,可以根据这个函数预测结果。监督学习的训练集要求包括输入和输出,主要应用于分类和预测。
2.非监督学习
与监督学习不同,在非监督学习中,无须对数据集进行标记,即没有输出。其需要从数据集中发现隐含的某种结构,从而获得样本数据的结构特征,判断哪些数据比较相似。因此,非监督学习目标不是告诉计算机怎么做,而是让它去学习怎样做事情。
3.半监督学习
半监督学习是监督学习和非监督学习的结合,其在训练阶段使用的是未标记的数据和已标记的数据,不仅要学习属性之间的结构关系,也要输出分类模型进行预测。
4.强化学习
强化学习(Reinforcement Learning, RL),又称再励学习、评价学习或增强学习,是机器学习的范式和方法论之一,用于描述和解决智能体(agent)在与环境的交互过程中通过学习策略以达成回报最大化或实现特定目标的问题.
机器学习模型
机器学习 = 数据(data)+ 模型(model) +优化方法(optimal strategy)
常见的机器学习算法
-
Linear Algorithms
1.Linear Regression
2.Lasso Regression
3.Ridge Regression
4.Logistic Regression -
Decision Tree
1.ID3
2.C4.5
3.CART -
SVM
SVM简介 -
Naive Bayes Algorithms
1.Naive Bayes
2.Gaussian Naive Bayes
3.Multinomial Naive Bayes
4.Bayesian Belief Network (BBN)
5.Bayesian Network (BN) -
KNN
KNN简述 -
Clustering Algorithms
1.k-Means
2.k-Medians
3.Expectation Maximisation (EM)
4.Hierarchical Clustering -
K-Means
K-Means简介 -
Random Forest
Random Forest -
Dimensionality Reduction Algorithms
-
Gradient Boosting algorithms
1.GBM
2.XGBoost
3.LightGBM
4.CatBoost -
Deep Learning Algorithms
1.Convolutional Neural Network (CNN)
2.Recurrent Neural Networks (RNNs)
3.Long Short-Term Memory Networks (LSTMs)
4.Stacked Auto-Encoders
5.Deep Boltzmann Machine (DBM)
6.Deep Boltzmann Machine (DBM)
机器学习损失函数
- 0-1损失函数
L ( y , f ( x ) ) = { 0 , y = f(x) 1 , y ≠ f(x) L(y,f(x)) = \begin{cases} 0, & \text{y = f(x)} \\ 1, & \text{y $\neq$ f(x)} \end{cases} L(y,f(x))={0,1,y = f(x)y = f(x) - 绝对值损失函数
L ( y , f ( x ) ) = ∣ y − f ( x ) ∣ L(y,f(x))=|y-f(x)| L(y,f(x))=∣y−f(x)∣ - 平方损失函数
L ( y , f ( x ) ) = ( y − f ( x ) ) 2 L(y,f(x))=(y-f(x))^2 L(y,f(x))=(y−f(x))2 - log对数损失函数
L ( y , f ( x ) ) = l o g ( 1 + e − y f ( x ) ) L(y,f(x))=log(1+e^{-yf(x)}) L(y,f(x))=log(1+e−yf(x)) - 指数损失函数
L ( y , f ( x ) ) = e x p ( − y f ( x ) ) L(y,f(x))=exp(-yf(x)) L(y,f(x))=exp(−yf(x)) - Hinge损失函数
L ( w , b ) = m a x { 0 , 1 − y f ( x ) } L(w,b)=max\{0,1-yf(x)\} L(w,b)=max{0,1−yf(x)}
机器学习优化方法
梯度下降是最常用的优化方法之一,它使用梯度的反方向 ∇ θ J ( θ ) \nabla_\theta J(\theta) ∇θJ(θ)更新参数 θ \theta θ,使得目标函数 J ( θ ) J(\theta) J(θ)达到最小化的一种优化方法,这种方法我们叫做梯度更新.
- (全量)梯度下降
θ = θ − η ∇ θ J ( θ ) \theta=\theta-\eta\nabla_\theta J(\theta) θ=θ−η∇θJ(θ) - 随机梯度下降
θ = θ − η ∇ θ J ( θ ; x ( i ) , y ( i ) ) \theta=\theta-\eta\nabla_\theta J(\theta;x^{(i)},y^{(i)}) θ=θ−η∇θJ(θ;x(i),y(i)) - 小批量梯度下降
θ = θ − η ∇ θ J ( θ ; x ( i : i + n ) , y ( i : i + n ) ) \theta=\theta-\eta\nabla_\theta J(\theta;x^{(i:i+n)},y^{(i:i+n)}) θ=θ−η∇θJ(θ;x(i:i+n),y(i:i+n)) - 引入动量的梯度下降
{ v t = γ v t − 1 + η ∇ θ J ( θ ) θ = θ − v t \begin{cases} v_t=\gamma v_{t-1}+\eta \nabla_\theta J(\theta) \\ \theta=\theta-v_t \end{cases} {vt=γvt−1+η∇θJ(θ)θ=θ−vt - 自适应学习率的Adagrad算法
{ g t = ∇ θ J ( θ ) θ t + 1 = θ t , i − η G t + ε ⋅ g t \begin{cases} g_t= \nabla_\theta J(\theta) \\ \theta_{t+1}=\theta_{t,i}-\frac{\eta}{\sqrt{G_t+\varepsilon}} \cdot g_t \end{cases} {gt=∇θJ(θ)θt+1=θt,i−Gt+εη⋅gt - 牛顿法
θ t + 1 = θ t − H − 1 ∇ θ J ( θ t ) \theta_{t+1}=\theta_t-H^{-1}\nabla_\theta J(\theta_t) θt+1=θt−H−1∇θJ(θt)
其中:
t t t: 迭代的轮数
η \eta η: 学习率
G t G_t Gt: 前t次迭代的梯度和
ε : \varepsilon: ε:很小的数,防止除0错误
H H H: 损失函数相当于 θ \theta θ的Hession矩阵在 θ t \theta_t θt处的估计
机器学习的评价指标
- MSE(Mean Squared Error)
M S E ( y , f ( x ) ) = 1 N ∑ i = 1 N ( y − f ( x ) ) 2 MSE(y,f(x))=\frac{1}{N}\sum_{i=1}^{N}(y-f(x))^2 MSE(y,f(x))=N1i=1∑N(y−f(x))2 - MAE(Mean Absolute Error)
M S E ( y , f ( x ) ) = 1 N ∑ i = 1 N ∣ y − f ( x ) ∣ MSE(y,f(x))=\frac{1}{N}\sum_{i=1}^{N}|y-f(x)| MSE(y,f(x))=N1i=1∑N∣y−f(x)∣ - RMSE(Root Mean Squard Error)
R M S E ( y , f ( x ) ) = 1 1 + M S E ( y , f ( x ) ) RMSE(y,f(x))=\frac{1}{1+MSE(y,f(x))} RMSE(y,f(x))=1+MSE(y,f(x))1 - Top-k准确率
T o p k ( y , p r e y ) = { 1 , y ∈ p r e y 0 , y ∉ p r e y Top_k(y,pre_y)=\begin{cases} 1, {y \in pre_y} \\ 0, {y \notin pre_y} \end{cases} Topk(y,prey)={1,y∈prey0,y∈/prey - 混淆矩阵
混淆矩阵 | Predicted as Positive | Predicted as Negative |
---|---|---|
Labeled as Positive | True Positive(TP) | False Negative(FN) |
Labeled as Negative | False Positive(FP) | True Negative(TN) |
-
真正例(True Positive, TP):真实类别为正例, 预测类别为正例
-
假负例(False Negative, FN): 真实类别为正例, 预测类别为负例
-
假正例(False Positive, FP): 真实类别为负例, 预测类别为正例
-
真负例(True Negative, TN): 真实类别为负例, 预测类别为负例
-
真正率(True Positive Rate, TPR): 被预测为正的正样本数 / 正样本实际数
T P R = T P T P + F N TPR=\frac{TP}{TP+FN} TPR=TP+FNTP -
假负率(False Negative Rate, FNR): 被预测为负的正样本数/正样本实际数
F N R = F N T P + F N FNR=\frac{FN}{TP+FN} FNR=TP+FNFN -
假正率(False Positive Rate, FPR): 被预测为正的负样本数/负样本实际数,
F P R = F P F P + T N FPR=\frac{FP}{FP+TN} FPR=FP+TNFP -
真负率(True Negative Rate, TNR): 被预测为负的负样本数/负样本实际数,
T N R = T N F P + T N TNR=\frac{TN}{FP+TN} TNR=FP+TNTN -
准确率(Accuracy)
A C C = T P + T N T P + F N + F P + T N ACC=\frac{TP+TN}{TP+FN+FP+TN} ACC=TP+FN+FP+TNTP+TN -
精准率
P = T P T P + F P P=\frac{TP}{TP+FP} P=TP+FPTP -
召回率
R = T P T P + F N R=\frac{TP}{TP+FN} R=TP+FNTP -
F1-Score
2 F 1 = 1 P + 1 R \frac{2}{F_1}=\frac{1}{P}+\frac{1}{R} F12=P1+R1 -
ROC
ROC曲线的横轴为“假正例率”,纵轴为“真正例率”. 以FPR为横坐标,TPR为纵坐标,那么ROC曲线就是改变各种阈值后得到的所有坐标点 (FPR,TPR) 的连线,画出来如下。红线是随机乱猜情况下的ROC,曲线越靠左上角,分类器越佳.
- AUC(Area Under Curve)
AUC就是ROC曲线下的面积. 真实情况下,由于数据是一个一个的,阈值被离散化,呈现的曲线便是锯齿状的,当然数据越多,阈值分的越细,”曲线”越光滑.
![](https://gss3.bdstatic.com/-Po3dSag_xI4khGkpoWK1HF6hhy/baike/c0%3Dbaike80%2C5%2C5%2C80%2C26/sign=b9cb389a68d0f703f2bf9d8e69933a58/f11f3a292df5e0feaafde78c566034a85fdf7251.jpg)
用AUC判断分类器(预测模型)优劣的标准:
- AUC = 1 是完美分类器,采用这个预测模型时,存在至少一个阈值能得出完美预测。绝大多数预测的场合,不存在完美分类器.
- 0.5 < AUC < 1,优于随机猜测。这个分类器(模型)妥善设定阈值的话,能有预测价值.
- AUC < 0.5,比随机猜测还差;但只要总是反预测而行,就优于随机猜测.
机器学习模型选择
- 交叉验证
所有数据分为三部分:训练集、交叉验证集和测试集。交叉验证集不仅在选择模型时有用,在超参数选择、正则项参数 [公式] 和评价模型中也很有用。
- k-折叠交叉验证
- 假设训练集为S ,将训练集等分为k份: { S 1 , S 2 , . . . , S k } \{S_1, S_2, ..., S_k\} {S1,S2,...,Sk}.
- 然后每次从集合中拿出k-1份进行训练
- 利用集合中剩下的那一份来进行测试并计算损失值
- 最后得到k次测试得到的损失值,并选择平均损失值最小的模型
- Bias与Variance,欠拟合与过拟合
欠拟合一般表示模型对数据的表现能力不足,通常是模型的复杂度不够,并且Bias高,训练集的损失值高,测试集的损失值也高.
过拟合一般表示模型对数据的表现能力过好,通常是模型的复杂度过高,并且Variance高,训练集的损失值低,测试集的损失值高.
![](https://i-blog.csdnimg.cn/blog_migrate/23ceed6153110d3d84b94ab83f5da845.png)
![](https://i-blog.csdnimg.cn/blog_migrate/e6f170c0f83aa8a5305a90f1e855bc8f.png)
- 解决方法
- 增加训练样本: 解决高Variance情况
- 减少特征维数: 解决高Variance情况
- 增加特征维数: 解决高Bias情况
- 增加模型复杂度: 解决高Bias情况
- 减小模型复杂度: 解决高Variance情况
机器学习参数调优
- 网格搜索
一种调参手段;穷举搜索:在所有候选的参数选择中,通过循环遍历,尝试每一种可能性,表现最好的参数就是最终的结果
- 随机搜索
与网格搜索相比,随机搜索并未尝试所有参数值,而是从指定的分布中采样固定数量的参数设置。它的理论依据是,如果随即样本点集足够大,那么也可以找到全局的最大或最小值,或它们的近似值。通过对搜索范围的随机取样,随机搜索一般会比网格搜索要快一些。
- 贝叶斯优化算法
贝叶斯优化用于机器学习调参由J. Snoek(2012)提出,主要思想是,给定优化的目标函数(广义的函数,只需指定输入和输出即可,无需知道内部结构以及数学性质),通过不断地添加样本点来更新目标函数的后验分布(高斯过程,直到后验分布基本贴合于真实分布。简单的说,就是考虑了上一次参数的信息,从而更好的调整当前的参数。
参考文献
- https://www.jianshu.com/p/a95d33fea777
- https://baike.baidu.com/item/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/217599?fr=aladdin
- https://blog.csdn.net/gongxifacai_believe/article/details/91355237
- https://baike.baidu.com/item/%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0/2971075?fr=aladdin
- https://www.analyticsvidhya.com/blog/2017/09/common-machine-learning-algorithms/
- https://machinelearningmastery.com/a-tour-of-machine-learning-algorithms/
- https://www.kaggle.com/getting-started/83518
- https://www.cnblogs.com/lliuye/p/9549881.html
- https://blog.csdn.net/fisherming/article/details/80209182
- https://www.jianshu.com/p/b0f56b7d7ee8
- https://blog.csdn.net/qq_20011607/article/details/81712811
- https://baike.baidu.com/item/AUC/19282953?fr=aladdin
- https://zhuanlan.zhihu.com/p/30844838
- https://www.jianshu.com/p/55b9f2ea283b
- https://www.jianshu.com/p/5378ef009cae
- https://www.jianshu.com/p/5378ef009cae