机器学习简介

1. 什么是机器学习?

顾名思义,机器学习是研究如何使用机器来模拟人类学习活动的一门学科,是对能通过经验和数据自动改进计算机算法的研究。

机器学习的算法从大量历史数据中挖掘出其中隐含的规律,用于预测或者分类,更具体的说,机器学习可以看作是寻找一个函数,输入是样本数据,输出是期望的结果,只是这个函数过于复杂,以至于不太方便形式化表达。需要注意的是,机器学习的目标是使学到的函数很好地适用于“新样本”,而不仅仅是在训练样本上表现很好。学到的函数适用于新样本的能力,称为泛化(Generalization)能力。

以下是机器学习常用英文定义

A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P, if its performance at tasks in T, as measured by P, improves with experience E.

机器学习可类比人类学习

假设一个场景:父母教三岁大的孩子认识什么是西瓜。首先父母要给孩子看西瓜,然后告诉孩子这个是西瓜。这个过程抽象成下面这张流程图:

孩子的学习过程是通过一些观察,然后加上自我总结,就逐渐拥有了识别什么是西瓜的技能。
与之相类似,机器学习就是通过对数据的“学习”,从而拥有某些特定技能的过程。

2. 机器学习步骤

通常学习一个好的函数,分为以下三步:
1、选择一个合适的模型,这通常需要依据实际问题而定,针对不同的问题和任务需要选取恰当的模型,模型就是一组函数的集合。
2、判断一个函数的好坏,这需要确定一个衡量标准,也就是我们通常说的损失函数(Loss Function),损失函数的确定也需要依据具体问题而定,如回归问题一般采用欧式距离,分类问题一般采用交叉熵代价函数。
3、找出“最好”的函数,如何从众多函数中最快的找出“最好”的那一个,这一步是最大的难点,做到又快又准往往不是一件容易的事情。常用的方法有梯度下降算法,最小二乘法等和其他一些技巧(tricks)。

学习得到“最好”的函数后,需要在新样本上进行测试,只有在新样本上表现很好,才算是一个“好”的函数。

3. train、validation、test 数据集介绍

在有监督(supervise)的机器学习中,数据集常被分成2~3个即:

训练集(train set):用于训练模型,找出最佳的w和b。
验证集(validation set) :用以确定模型超参数,选出最优模型。
测试集(test set:仅用于对训练好的最优函数进行性能评估。

一般需要将样本分成独立的三部分训练集(train set),验证集(validation set)和测试集(test set)。一个典型的划分是训练集占总样本的50%,而其它各占25%,三部分都是从样本中随机抽取。

样本少的时候,上面的划分就不合适了。常用的是留少部分做测试集。然后对其余N个样本采用K折交叉验证法。就是将样本打乱,然后均匀分成K份,轮流选择其中K-1份训练,剩余的一份做验证,计算预测误差平方和,最后把K次的预测误差平方和再做平均作为选择最优模型结构的依据。特别的K取N,就是留一法(leave one out)。

training set是用来训练模型或确定模型参数的,如ANN中权值等; validation set是用来做模型选择(model selection),即做模型的最终优化及确定的,如ANN的结构;而 test set则纯粹是为了测试已经训练好的模型的推广能力。当然,test set这并不能保证模型的正确性,他只是说相似的数据用此模型会得出相似的结果。但实际应用中,一般只将数据集分成两类,即training set 和test set,大多数文章并不涉及validation set。

3.1 train

训练数据。拟合模型,用这部分数据来建立模型。

是一些我们已经知道输入和输出的数据集训练机器去学习,通过拟合去寻找模型的初始参数。例如在神经网络(Neural Networks)中, 我们用训练数据集和反向传播算法(Backpropagation)去每个神经元找到最优的比重(Weights)。

3.2 validation

验证数据。train建了一个模型,但是模型的效果仅体现了训练数据,但不一定适合同类的其他数据,所以建模前数据分成两部分,一部分为训练数据,一部分为验证数据(两部分数据的比例大致为7:3,这取决于你验证的方法)。另外,你也可能训练多个模型,但不知哪个模型性能更佳,这时可以将验证数据输入不同模型进行比较。

是一些我们已经知道输入和输出的数据集,通过让机器学习去优化调整模型的参数,在神经网络中, 我们用验证数据集去寻找最优的网络深度(number of hidden layers),或者决定反向传播算法的停止点;在普通的机器学习中常用的交叉验证(Cross Validation) 就是把训练数据集本身再细分成不同的验证数据集去训练模型。

3.3 test

测试数据。跟前两者的最大区别在于:train和validation数据均是同一对象的数据,但是测试,我们就需要用跨对象的数据来验证模型的稳定性。

用户测试模型表现的数据集,根据误差(一般为预测输出与实际输出的不同)来判断一个模型的好坏。

为什么验证数据集和测试数据集两者都需要?

因为验证数据集(Validation Set)用来调整模型参数从而选择最优模型,模型本身已经同时知道了输入和输出,所以从验证数据集上得出的误差(Error)会有偏差(Bias)。

但是我们只用测试数据集(Test Set) 去评估模型的表现,并不会去调整优化模型。

在传统的机器学习中,这三者一般的比例为training/validation/test = 50/25/25, 但是有些时候如果模型不需要很多调整只要拟合就可时,或者training本身就是training+validation (比如cross validation)时,也可以training/test =7/3.

但是在深度学习中,由于数据量本身很大,而且训练神经网络需要的数据很多,可以把更多的数据分给training,而相应减少validation和test。

4. 任务(Task)

机器学习主要有两类经典任务

1、监督学习(Supervised)
对事物未知表现的预测,一般包括分类(Classification)+回归

分类-对所在类别进行预测。类别是已知离散+确定数量的
回归预测的目标一般是连续的。

2、无监督学习(Unsupervised Learning)
对事物本身特性的分析,常用技术数据降维(DimensionalityReduction)+聚类(Clustering)

数据降维对事物的特征进行压缩和筛选
聚类依赖数据的相似性,把相似数据样本划分为一个镞.

5. 性能(Performance)

评价所完成任务的质量指标。

在机器学习中,我们用训练数据集去训练(学习)一个model(模型-根据数据建立一定的数据计算方法和数据指标),通常的做法是定义一个Loss function(误差函数),通过将这个Loss(或者叫error)的最小化过程,来提高模型的性能(performance)。

评价学习模型的完成质量,需要使用 具备相同特征的数据集(testing set) 用模型预测结果同相对应的正确答案进行对比。

随着训练过程的进行,模型学到了许多具体的,只针对我们使用的训练集的信息,导致模型在很多其他的数据集上无法获得很好的效果,即overfitting(过学习)。使用数据集validationset用到诸如early stopping以及regularization等方法来避免过学习的发生

注意:要保证出现在测试集中的数据样本不能被用于模型训练的训练集中

性能—常用的预测误差

常用的预测误差:

二分类问题中评估指标
Accuracy=TP+TN/(TP+FP+TN+FN) //准确度
Precision = TP/(TP+FP) //精确度也称查准率
Recall = TP/(TP+FN) //召回率又称查全率

F1Score兼顾考虑了Precision 和 Recall
的调和平均数的评估指标
在这里插入图片描述
在这里插入图片描述
Accuracy=79+11/(79+11+13+8)=0.81
Precision=11/(11+8)=0.57 //预测B
Recall=11/(11+13)=0.46 //B为Positive

在这里插入图片描述

在这里插入图片描述

**AUC(Area under the Curve of ROC)**是ROC曲线下方的面积,是判断二分类预测模型优劣的标准
ROC曲线的横坐标是伪阳性率(也叫假正类率,False Positive Rate),纵坐标是真阳性率(真正类率,True Positive Rate),相应的还有真阴性率(真负类率,True Negative Rate)和伪阴性率(假负类率,False Negative Rate)

参考文章(侵删):
1、https://www.imooc.com/article/38070
2、https://blog.csdn.net/hohaizx/article/details/80584307
3、https://baike.baidu.com/item/机器学习/217599?fr=aladdin
4、https://blog.csdn.net/zwqjoy/article/details/78788924

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值