机器学习简介

一-机器学的概念
机器学习的定义在这里插入图片描述二、机器学习的分类

  • 机器学习的主要分类
  • 无监督学习
  • 无监督学习应用
  • 监督学习
  • 监督学习应用
    机器学习主要分类
  • 有监督学习:提供数据并对数据对应结果的机器学习过程
  • 无监督学习:提供数据并且不提供数据对应结果的机器学习过程
  • 强化学习:通过与环境交互获取延迟返回进而改进行为的学习过程

无监督学习
●无监督学习(Unsupervised Learning)算法采用一-组仅包含输入的数据,通过寻找数据中的内在结构来进行样本点的分组或聚类。
●算法从没有 被标记或分类的测试数据中学习。
●无监督学习算法不是响应反馈,而是要识别数据中的共性特征;对于-一个新数据,可以通过判断其中是否存在这种特征,来做出相应的反馈。
●无监督学习的核心应用是统计学中的密度估计和聚类分析。

监督学习
●监督学习(Supervised Learning)算法构建了包含输入和所需输出的一组数据的数学模型。这些数据称为训练数据,由一组训练样本组
成。
●监督学习主要包括分类和回归。
●当输出被限制为有限的- -组值(离散数值)时使用分类 算法;当输出可以具有范围内的任何数值(连续数值)时使用回归算法。
●相似度学习是和回归和分类都密切相关的一类监督机器学习,它的目标是使用相似性函数从样本中学习,这个函数可以度量两个对象之间的相似度或关联度。它在排名、推荐系统、视觉识别跟踪、人脸识别等方面有很好的应用场景。

监督学习三要素
●模型(model) :总结数据的内在规律,用数学函数描述的系统
●策略(strategy) :选取最优模型的评价准则
●算法(algorithm) : 选取最优模型的具体方法

监督学习实现步骤
●得到一个有限的训练数据集
●确定包含所有学习模型的集合
●确定模型选择的准则,也就是学习策略
●实现求解最优模型的算法,也就是学习算法
●通过学习算法选择最优模型
●利用得到的最优模型,对新数据进行预测或分析
在这里插入图片描述
模型评估策略
●模型评估
-训练集和测试集
-损失函数和经验风险
-训练误差和测试误差
●模型选择
-过拟合和欠拟合
-正则化和交叉验证

训练集和测试集
●我们将数据输入到模型中训练出了对应模型,但是模型的效果好不好呢?我们需要对模型的好坏进行评估
●我们将用来训练模型的数据称为训练集,将用来测试模型好坏的集合称为测试集。
●训练集:输入到模型中对模型进行训练的数据集合。
●测试集:模型训练完成后测试训练效果的数据集合。
简单来说:训练集就是高考平常做的五年高考三年模拟,测试就是考试测一下你学的东西

损失函数
●损失函数用来衡量模型预测误差的大小。
● 定义:选取模型f为决策函数,对于给定的输入参数X, f(X)为预测结果,Y为真实结果; f(X) 和Y之间可能会有偏差,我们就用一个损失函数(loss function)来度量预测偏差的程度,记作L(Y,f(X))
●损失函数是系数的函数
●损失函数值越小,模型就越好

损失函数
●0- 1损失函数
L(Y,f(X))={[1, Y≠f(X)
{ [0, Y= f(X)
●平方损失函数
L(Y,f(X))=(Y- f(X))2
●绝对损失函数
L(Y,f(X))={Y-. f(X)|
●对数损失函数
L(Y,P(Y|X))=-logP(Y|X)

经验风险
●经验风险
-模型f(X)关于训练数据集的平均损失称为经验风险( empirial risk) , 记作Remp
在这里插入图片描述

●经验风险最小化( Empirical Risk Minimization , ERM)
-这一策略认为 ,经验风险最小的模型就是最优的模型
-样本足够大时, ERM有很好的学习效果,因为有足够多的“经验”
-样本较小时, ERM就会出现一些问题

训练误差和测试误差
●训练误差
-训练误差( training error )是关于训练集的平均损失。
在这里插入图片描述
-训练误差的大小,可以用来判断给定问题是否容易学习,但本质上并不重要
●测试误差
-测试误差( testing error )是关于测试集的平均损失。
在这里插入图片描述
-测试误差真正反映了模型对未知数据的预测能力,这种能力一般被称为泛化能力

在这里插入图片描述欠拟合
●模型没有很好地捕捉到数据特征,特征集过小,导致模型不能很好地
拟合数据,称之为欠拟合(und-erfitting)
●欠拟合的本质是对数据的特征“学习”得不够
●例如,想分辨- -只猫,只给出了四条腿、两只眼、有尾巴这三个特征,
那么由此训练出来的模型根本无法分辨猫
在这里插入图片描述过拟合
●把训练数据学习的太彻底,以至于把噪声数据的特征也学习到了,特征集过
大,这样就会导致在后期测试的时候不能够很好地识别数据,即不能正确的
分类,模型泛化能力太差,称之为过拟合(ove-fiting)。
●例如,想分辨一只猫,给出了四条腿、两只眼、一条尾巴、叫声、颜色,能够捕捉老鼠、喜欢吃鱼、…然后恰好所有的训练数据的猫都是白色,那么这个白色是一个噪声数据,会干扰判断,结果模型把颜色是白色也学习到了,而白 色是局部样本的特征,不是全局特征,就造成了输入一个 黑猫的数
据,判断出不是猫。

在这里插入图片描述模型的选择
●当模型复杂度增大时,训练误差会逐渐减小并趋向于0;而测试误差会先减小,达到最小值之后再增大
●当模型复杂度过大时,就会发生过拟合;所以模型复杂度应适当
在这里插入图片描述正则化**
●结构风险最小化(Structural Risk Minimization, SRM)
-是在ERM基础上,为了防止过拟合而提出来的策略
-在经验风险上加上表示模型复杂度的正则化项(regularizer) ,或者叫惩罚项
-正则化项一般是 模型复杂度的单调递增函数,即模型越复杂,正则化值越大
●结构风险最小化的典型实现是正则化(regularization)
-形式:
在这里插入图片描述
-第一项是经验风险, 第二项J(f)是正则化项,入≥0 e调整两者关系的系数
-正则化项可以取不同的形式,比如,特征向量的L 1范数或L 2范数
简单地说:L1:绝对值之和,L2:平方之和

奥卡姆剃刀
●奥卡姆剃刀(Occam‘s razor)原理:如无必要,
勿增实体
●正则化符合奥卡姆剃刀原理。它的思想是:在
所有可能选择的模型中,我们应该选择能够很
好地解释已知数据并且十分简单的模型
●如果简单的模型已经够用,我们不应该一味地追求更小的训练误差,而把模型变得越来越复杂

#简单说:简单的能解决问题就用简单的,不要一味用复杂的,搞得很复杂

交叉验证 (选取训练集和测试集)
●数据集划分
-如果样本数据充足, -种简单方法是随机将数据集切成三部分:训练集(trainingset) 、验证集(validation set)和测试集(test set)
-训练集用于训练模型, 验证集用于模型选择,测试集用于学习方法评估
●数据不充足时,可以重复地利用数据一-交叉验证(cross validation)
●简单交叉验证
-数据随机分为两部分, 如70%作为训练集,剩下30%作为测试集
-训练集在不同的条件下 (比如参数个数)训练模型,得到不同的模型
-在测试集. 上评价各个模型的测试误差,选出最优模型
●S折交叉验证
-将 数据随机切分为S个互不相交、相同大小的子集; S-1个做训练集,剩下一个做测试集
-重复进行训练集、测试集的选取,有S种可能的选择
●留一交叉验证

分类和回归
●监督学习问题主要可以划分为两类,即分类问题和回归问题
-分类问题预测数据属于哪一类别。- --离散
-回归问题根据数据预测- -个数值。. --连续
●通俗地讲,分类问题就是预测数据属于哪一种类型,就像上面的房屋出售预测,通过大量数据训练模型,然后去预测某个给定房屋能不能出售出去,属于能够出售类型还是不能出售类型。
●回归问题就是预测一-个数值,比如给出房屋-些特征,预测房价
●如果将上面的房屋出售的问题改为预测房屋出售的概率,得到的结果将不再是可以售出(1) 和不能售出(0) ,将会是一个连续的数值,例如0.5, 这就变成了一个回归问题

分类问题
●在监督学习中,当输出变量Y取有限个离散值时,预测问题就成了分类(classification)问题
●监督学习从数据中学习一个分类模型或分类决策函数,称为分类器(classifier) ;分类器对新的输入进行预测,称为分类
●分类问题包括学习和分类两个过程。学习过程中,根据已知的训练数据集利用学习方法学习一个分类器;分类过程中,利用已习得的分类器对新的输入实力进行分类
●分类问题可以用很多学习方法来解决,比如k近邻、决策树、感知机、逻辑斯谛回归、支撑向量机、朴素贝叶斯法、神经网络等

回归问题
●回归问题用于预测输入变量和输出变量之间的关系
●回归模型就是表示从输入变量到输出变量之间映射的函数
●回归问题的学习等价于函数拟合:
选择一条函数曲线,使其很好地拟
合已知数据,并且能够很好地预测
未知数据
● 回归问题的分类
-按照输入变量的个数: -元回归和多元回归
-按照模型类型:线性回归和非线性回归
● 回归学习的损失函数-- 平方损失函数
●如果选取平方损失函数作为损失函数,回归问题可以用著名的最小二乘法(least squares)来求解

补充其他看到知识

评估方法

训练集与测试集
●目标:对于模型/学习器的泛化误差进行评估
●专家样本:训练集+测试集
●训练集:训练误差
●测试集:测试误差
独立同分布&互斥
用测试误差近似表示泛化误差
在这里插入图片描述测试误差与泛化误差

  • 留出法
  • 交叉验证
  • 自助法
    1、留出法
  • 训练集+测试集互斥互补
    ●训练集训练模型,测试集测试模型
    ●合理划分、保持比例
    ●单次留出与多次留出
    ●多次留出法:如对专家样本随机进行100次训练集/测试集划分,评估结果取平均
    2、交叉验证
    ●K折交叉验证:将专家样本等份划分为K个数据集,轮流用K - 1个用于训练,1个用于测试
    ●P次K折交叉验证
    在这里插入图片描述3、自助法
    留出法与交叉验证法的训练集数据少于样本数据
    ●给定m个样本的数据集D,从D中有放回随机取m次数据,形成训练集D’
    ●用D中不包含D’的样本作为测试集
    ●D中某个样本不被抽到的概率:
    在这里插入图片描述
    ●测试集数据量:
    在这里插入图片描述缺点:改变了初始数据集的分布

性能度量

评价方法与评价标准
回归任务的评价标准:均方误差
在这里插入图片描述在这里插入图片描述查准率与查全率
●查准率/准确率(precision) : P = TP/(TP+FP)
●查全率/召回率/灵敏度(ecall) : R = TP/(TP+FN)
●"1”代表正例,“0"代表反例
在这里插入图片描述
●查准率/准确率(precision) : P = TP/(TP+FP)

from sklearn.metrics import precision_score  
from sklearn.metrics import confusion_matrix
from sklearn.metrics import classification_report
y_true = [1, 0, 1, 1, 0]   # 样本实际值
y_pred = [1, 0, 1, 0, 0]   # 模型预测值
res1 = precision_score(y_true, y_pred, average=None)   # 准确率
res2= confusion_matrix(y_true, y_pred)#混淆矩阵
res3 = classification_report(y_true, y_pred)#分类报告
print(res1)
print(res2)
print(res3)

在这里插入图片描述
confusion_matrix混淆矩阵函数的使用
官方文档中给出的用法是
sklearn.metrics.confusion_matrix(y_true, y_pred, labels=None, sample_weight=None)

y_true: 是样本真实分类结果,y_pred: 是样本预测分类结果
labels:是所给出的类别,通过这个可对类别进行选择
sample_weight : 样本权重

sklearn中的classification_report函数用于显示主要分类指标的文本报告.在报告中显示每个类的精确度,召回率,F1值等信息。
主要参数:
y_true:1维数组,或标签指示器数组/稀疏矩阵,目标值。
y_pred:1维数组,或标签指示器数组/稀疏矩阵,分类器返回的估计值。
labels:array,shape = [n_labels],报表中包含的标签索引的可选列表。
target_names:字符串列表,与标签匹配的可选显示名称(相同顺序)。
sample_weight:类似于shape = [n_samples]的数组,可选项,样本权重。
digits:int,输出浮点值的位数.

在这里插入图片描述
F1系数
综合查准率与查全率:
在这里插入图片描述
更一般的形式:
在这里插入图片描述
其中B为正数,度量了查全率对查准率的相对重要性
β=1 :标准的F1系数
β >1 :查全率有更大影响
β <1 :查准率有更大影响
在这里插入图片描述支持向量机验证的sklearn代码实现

from sklearn.model_selection import cross_val_score #导入支持向量机
from sklearn.datasets import load_iris   # 导入鸢尾花数据集
from sklearn.svm import SVC  #导入支持向量机函数
iris = load_iris() #获取鸢尾花数据集
clf = SVC(kernel='linear', C=1)   # 构建支持向量机模型
scores = cross_val_score(clf, iris.data, iris.target, cv=5)
print(scores)

cv=5 :进行五次交叉验证
在这里插入图片描述
更多内容详见: http://scikit-
learn.org/stable/modules/classes.html#module-sklearn

比较检验与偏差方差
测试误差能代表泛化误差吗?
●详见周志华:《机器学习》 2.4比较检验
泛化错误率的构成:偏差+方差+噪声
●偏差:模型输出与真实值的偏离程度, 刻画了算法的拟合能力
●方差:同样大小的训练集的变动导致的学习性能的变化,即数据扰动造成的影响
●噪声:当前学习器所能达到的泛化误差的下限
●偏差大:拟合不足/欠拟合;方差大:过拟合

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值