机器学习总体流程图
机器学习 四个阶段
1.数据预处理阶段:
特征提取:将原始数据转化为特征数据,从而能够有效的对原始数据所涵盖的信息进行表达(raw data→feature);
特征选择:有时会从原始数据提取很多的特征,我们选择出一部分特征来以适应当前的场景,同时简化数据;
降维、幅度缩减:当进行特征选择后数据的维度仍然过高,或者适用当前场景的模型相对简单,为了解决计算成本以及防止过拟合,通常对数据再进行降维操作;主要采用主成分分析法(PCA);
采样:采集样本集;过采样:;欠采样:;
2.模型学习:
根据经验以及对当前场景的理解选择适合的机器学习模型,并对数据进行训练,从而学习到数据所含的内在规律。由信息论知识可知,对于给定的数据,其所含的信息就已经确定了,我们所做的数据预处理即是尽可能的提取其中所涵盖的有用信息并剔除噪声数据,即是数据是根本,其本身决定了模型效果的上限;而我们选择不同的算法则是使我们的模型效果无线趋近于其上限,简而言之:算法越合适,效果越好;机器学习常用算法如下图所示:
3.模型评估:
什么是好的模型?答:高精度与泛化能力的折中,而我们要想评估我们的模型,则需要训练数据集以外的数据集----验证集
常用的验证集生成方法主要有以下三种:
①hold out (留出法)
- 要尽量保持数据分布的一致性,如分层采样;
- 多次随机重复划分;
- 测试集不能太大,也不能太小:
②k折交叉检验(cross validation)
③自助法(bootstrap)
即当样本数量较多时,我们能够按照自助法把原有数据集随机分割成约7:3的两个子数据集
D
1
D_1
D1和
D
2
D_2
D2,我们用
D
1
D_1
D1来做训练集生成模型,
D
2
D_2
D2来做测试集并选择模型性能的度量来判别模型的好坏。
模型的常用性能度量标准
回归问题(Regression)
以下用 y y y代表真实值, y ∗ y^* y∗代表预测值, y ˉ \bar y yˉ代表真实值的均值:
- 平均绝对误差MAE(mean absolute error)
M A E = 1 n ∑ i = 1 n ∣ y i − y i ∗ ∣ MAE=\frac{1}{n} \sum\limits_{i=1}^{n} \begin{vmatrix} y_i-y^*_i\end{vmatrix} MAE=n1i=1∑n∣∣yi−yi∗∣∣ - 平均平方误差MSE (mean square error) M S E = 1 n ∑ i = 1 n ( y i − y i ∗ ) 2 MSE=\frac{1}{n}\sum\limits_{i=1}^{n}(y_i-y^*_i)^2 MSE=n1i=1∑n(yi−yi∗)2
- 方均根误差RMSE(root mean square error) R M S E = 1 n ∑ i = 1 n ( y i − y i ∗ ) 2 RMSE=\sqrt{\frac{1}{n}\sum\limits_{i=1}^{n}(y_i-y^*_i)^2} RMSE=n1i=1∑n(yi−yi∗)2
- 残差平方和 S S r e s i d u a l = ∑ i = 1 n ( y i − y i ∗ ) 2 SS_{residual}=\sum\limits_{i=1}^{n}(y_i-y^*_i)^2 SSresidual=i=1∑n(yi−yi∗)2
- 回归平方和 S S r e g r e s s i o n = ∑ i = 1 n ( y i ∗ − y ˉ ) 2 SS_{regression}=\sum\limits_{i=1}^{n}(y^*_i-\bar y)^2 SSregression=i=1∑n(yi∗−yˉ)2
- 总离差平方和 S S t o t a l = ∑ i = 1 n ( y i − y ˉ ) 2 SS_{total}=\sum\limits_{i=1}^{n}(y_i-\bar y)^2 SStotal=i=1∑n(yi−yˉ)2
- 线性回归决定系数 R 2 R^2 R2 :反应了 y y y的波动有多少百分比能被 x x x的波动所描述,即表征依变数 y y y的变异中有多少百分比,可由控制的自变数 x x x来解释 S S t o t a l = S S r e s i d u a l + S S r e g r e s s i o n SS_{total}=SS_{residual}+SS_{regression} SStotal=SSresidual+SSregression R 2 = 1 − S S r e g r e s s i o n S S t o t a l = S S r e s i d u a l S S t o t a l R^2=1-\frac{SS_{regression}}{SS_{total}}=\frac{SS_{residual}}{SS_{total}} R2=1−SStotalSSregression=SStotalSSresidual
分类问题(Classification)
- 错误率 E r r = 1 m ∑ i = 1 m I ( y i ≠ y i ∗ ) Err=\frac{1}{m}\sum\limits_{i=1}^{m}\mathbb{I}(y_i\neq y^*_i) Err=m1i=1∑mI(yi̸=yi∗)
- 精度 A c c = 1 m ∑ i = 1 m I ( y i = y i ∗ ) Acc=\frac{1}{m}\sum\limits_{i=1}^{m}\mathbb{I}(y_i=y^*_i) Acc=m1i=1∑mI(yi=yi∗)
- 混淆矩阵(confusin matrix)
预测结果 (positive) | 预测结果(negetive) | |
---|---|---|
真实值(positive) | TP | FN |
真实值(negetive) | FP | 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
在不同的场景我们需要选择准确率或者召回率,如在对样本的精度有较高要求的时候应该选择准确率,而在某些特定对样本的准确性(宁可错杀一千也不放过一个)有较高要求的时候应该选择召回率;
F
1
F_1
F1-Score:是统计学中用来衡量二分类模型精确度的一种指标。它同时兼顾了分类模型的准确率和召回率,可以看做是准确率和召回率的一种加权平均
1
F
1
=
1
P
+
1
R
\frac{1}{F_1}=\frac{1}{P}+\frac{1}{R}
F11=P1+R1
在此基础上可以对其加一个影响因子
β
\beta
β
F
β
=
(
1
+
β
2
)
∗
P
∗
R
(
β
2
∗
P
)
+
R
F_\beta=\frac{(1+{\beta} ^2)*P*R}{(\beta ^2 *P)+R}
Fβ=(β2∗P)+R(1+β2)∗P∗R
当
β
>
1
\beta>1
β>1时召回率有更大影响,当
β
<
1
\beta<1
β<1时准确率有更大影响
- AUC (Area Under ROC Curve)