统计学习方法
2021-04-03 13:03:24 1 举报
AI智能生成
统计学习理论 机器学习入门必学
作者其他创作
大纲/内容
概论
统计学习
特点
计算机基于数据构建概率统计模型并运用模型对数据进行预测和分析的一门学科
对象
数据
目的
对数据进行预测和分析
方法
监督学习
非监督学习
半监督学习
强化学习
三要素
模型
模型的假设空间:假设要学习的模型是某个函数的集合
策略
模型选择的准则:从假设空间中选择一个最优的模型
算法
模型学习的算法:最优模型的选取由算法实现
监督学习
基本概念
输入、输出和特征空间
输入空间
输入所有可能取值的集合
输出空间
输出所有可能取值的集合
特征空间
模型实际上是定义在特征空间上的。特征空间的每一维对应一个特征,每一个输入是一个实例,通常由特征向量表示
输入变量与输出变量
输入空间和输出空间的随机变量的取值
监督学习
学习一个模型,根据指定的输入给出相应的输出
联合概率分布
监督学习假设输入和输出的随机变量遵从联合概率分布
训练数据和测试数据被看作是依联合概率分布P(X,Y)独立同分布产生的
监督学习关于数据的基本假设
假设空间
输入空间到输出空间的映射的集合
模型
概率模型
P(Y|X)
参数向量决定的条件概率分布族
非概率模型
Y=f(X)
参数向量决定的决策函数族
问题形式化
通过训练集学习一个模型,再用模型对测试样本集进行预测
统计学习三要素 监督学习中
模型
条件概率分布或者决策函数
策略
损失函数和风险函数
损失函数
0-1损失函数
预测对了为0,错了为1
hinge损失函数
SVM
当t×y大于1时,不做任何惩罚。其在t×y=1处不可导,不能用梯度下降法进行优化,而是用次梯度下降法
logistic损失函数
LR
平方损失函数
(Y-f(X))^2
绝对损失函数
对数损失函数
-logP(Y|X)
度量一次预测的好坏 L(y,f(x))
如果是无监督的损失函数
需要根据假设设置损失函数,使得训练沿着假设方向进行
风险函数
f(X)关于联合分布P(X.Y)的平均意义下的损失叫做风险函数或者期望损失
f(X)关于训练数据集的平均损失称为经验风险或者经验损失
大数定律:用经验风险估计期望风险
度量平均意义下的模型预测好坏
经验风险最小化和结构风险最小化
经验风险最小化 ERM
经验风险最小的模型就是最优的模型 min 1/nΣL(y,f(x))
需要样本量足够大
当模型是条件概率分布,损失函数是对数损失函数时,经验风险最小化就是极大似然估计
结构风险最小化 SRM
防止过拟合
ERM+正则项 min 1/nΣL(y,f(x))+lambdaJ(f)
当模型时条件概率分布、损失函数是对数损失函数、模型复杂度由模型的先验概率表示时,结构风险最小化就是最大后验概率
算法
学习模型的具体方法
最优化问题
显式解析解
所选模型复杂度比真模型高,预测能力差
预测误差与模型复杂度
数值计算方法求全局最优解
梯度下降/牛顿法/拟牛顿法
Momentum/Adagrad/RMSprop/Adam
模型评估与模型选择
训练误差与测试误差
泛化能力
学习方法对未知数据的预测能力
过拟合与模型选择
过拟合
正则化与交叉验证
正则化
奥卡姆剃刀原理
能很好的解释数据并且十分简单才是最好的模型
模型选择的典型方法
交叉验证
概念
重复的使用数据,把给定的数据进行切分,将切分的数据集组合为训练集和测试集
模型选择的常用方法
分类
简单交叉验证
随机将数据分为两部分,一部分作为训练集一部分作为测试集
S折交叉验证
随机将数据分成S个互不相交的大小相同的子集,利用S-1个子集训练数据,余下的子集测试数据,重复S次,选出平均测试误差最小的模型
留一交叉验证
S折交叉验证中S=N
泛化能力
泛化误差
学到的模型的期望风险 E[L(Y,f(X))]
越小越好
概念
由该方法学习到的模型对未知数据的预测能力
泛化误差上界
训练误差小的模型泛化误差也会小
R(f)<= R(f) hat+ e(d,N,xita)
生成模型与判别模型
生成方法
概念
由数据学习联合概率分布P(X,Y),然后求出条件概率分布P(Y|X)作为预测模型
P(Y|X) = P(X,Y)/P(X)
表示了给定输入X产生输出Y的生成关系
例子
朴素贝叶斯,隐马尔科夫
特点
还原联合概率分布
P(X,Y)
收敛速度更块
存在隐变量时也可以用这种方法,但是判别方法不行
判别方法
概念
直接学习决策函数或者条件概率分布P(Y|X)
对于给定的输入X,应预测什么样的输出Y
例子
k近邻、感知机、决策树、logistic回归、最大熵模型、SVM、提升方法和条件随机场
特点
准确率更高
直接学习模型,可以对数据进行各种程度上的抽象、定义特征并使用特征,简化学习问题
分类问题
评价分类器的指标
分类准确率
分类器正确分类的样本数与总样本数之比
二分类
精确率
查准率
召回率
查全率
标注问题
概念
输入一个观测序列,输出一个标记序列
评价指标
标注准确率、精确率、召回率
常用统计学习方法
隐马尔科夫模型
条件随机场
主题
信息抽取和自然语言处理
回归问题
概念
表示从输入变量到输出变量的映射函数
分类
多元回归和一元回归
线性回归和非线性回归
损失函数
平方损失函数
算法
最小二乘
课后习题
1.1 策略
极大似然估计
为什么用对数损失--求导好算
伯努利 对数损失 求导
模型已定,参数未知,参数是固定的,只是还不知道
贝叶斯估计
伯努利 对数损失 求导 正则项
通过观察到的现象对概率分布中的主观认定不断进行修正
1.2
经验风险最小化=极大似然估计的证明
模型是条件概率分布
损失函数是对数损失函数
感知机
概述
二类分类的线性分类模型
输入为实例的特征向量
输出为实例的类别
旨在求出将训练数据进行线性划分的分离超平面
神经网络与支持向量机的基础
感知机模型
假设空间
所有定义在特征空间中的线性分类模型
f(x)=sign(w*x+b)
感知机学习策略
数据集的线性可分性
一个线性超平面可以把所有正负实例分开
感知机学习策略
分析思路
感知机的学习目标是找一个可以把所有正实例和负实例完全区分开的分离超平面,关键要确定W和b的参数值,需要一个学习策略,定义经验损失函数并将损失函数极小化
损失函数
误分类点到超平面的总距离
L(w,b)=-Σy(w*x+b)
这个损失函数就是感知机学习的经验风险函数
非负,无误分类点为0
描述:在假设空间中找到可以使得损失函数式最小的参数模型
感知机学习算法
损失函数式的最优化问题
随机梯度下降法
极小化过程中并不一次使得所有M中的误分类点的梯度下降,而是一次随机选取一个误分类点使其梯度下降
损失函数的梯度
求导
公式
解释
当一个实例点被误分类,则调整w,b的值,使得分离超平面向该误分类点的一侧移动,以减少该误分类点和超平面间的距离,直到超平面越过该误分类点使其被正确分类
不同的初值或不同误分类点会得到不同的解
算法收敛性
当训练集线性可分时
感知机学习算法收敛
存在多个解
当训练集线性不可分时
感知机学习算法不收敛
感知机学习算法的对偶形式
k近邻法
基本概念
输入:实例的特征向量,对应于特征空间的点
输出: 实例类别
原理:
给定一个训练数据集,其中的实例类别已定,分类时对新的实例,根据其k个最近邻的训练实例的类别,通过多数表决等方式进行预测
k近邻的三要素
k值的选择
距离度量
分类决策规则
K近邻模型
所有训练实例完成对特征空间的一个划分
距离度量
Lp距离
欧式距离
曼哈顿距离
p=oo
K值的选择
k变小意味着整体模型变复杂,容易过拟合
一般取较小的值
采用交叉验证方法确定
分类决策规则
多数表决规则
误分类率最小
经验风险最小
K近邻法的实现-kd树
朴素贝叶斯
概念
基于贝叶斯定理和特征条件独立假设的分类方法
首先基于特征条件独立假设学习输入输出的联合概率分布
然后基于此模型,对于给定的输入x利用贝叶斯定理求出后验概率最大的输出y
利用学习到的联合概率模型和贝叶斯定理进行分类预测
朴素贝叶斯法的学习与分类
基本方法
先学习到输入(特征向量)输出(类标签)的联合概率分布
通过先验和条件概率分布
认为用于分类的特征在类确定的条件下都是条件独立的
选择后验概率最大的类最为x的类
用贝叶斯公式
贝叶斯分类的基本公式
y=argmaxP(y=ck)连乘P(X=xj|Y=ck)
后验概率最大化的含义
期望风险最小化(选择0-1损失函数)
朴素贝叶斯法的参数估计
极大似然估计
先验概率和条件概率可以通过极大似然估计得到
也就是数数
每个类别占总数的比例
每个类中某个特征出现的概率
频率学派
认为参数固定未知,可通过数据求出
无先验
极大斯然估计
贝叶斯估计
避免估计的概率值为0的情况
分子分母都加上lambda
贝叶斯学派
认为参数服从一个分布,需要考虑所有参数取值情况
有先验
极大化后验概率
要用到贝叶斯公式
决策树
概述
通常包括特征选择、决策树生成、决策树修剪
一种描述对实例进行分类的树形结构
内部节点表示属性
叶节点表示类
决策树的模型与学习
决策树可以看作一个if-then规则的集合
决策树还表示给定特征条件下类的条件概率分布
本质是从训练数据中归纳出一组分类规则
决策树可能有多个
模型是条件概率模型
策略损失函数极小化(正则化的极大似然函数)
算法是一个递归地选择最优特征,并根据该特征对训练数据进行分割,使得各子数据集有一个最好的分类的过程
特征选择
特征选择问题
准则是信息增益或者信息增益比
是决定用哪个特征来划分特征空间
信息增益
熵
表示随机变量不确定性的度量
H(X)=-Σplogp
只依赖于x的分布,与x的取值无关
熵越大,随机变量不确定性越大
p=0或者1时熵最小为0
条件熵
随机变量x已知的条件下随机变量y的不确定性
H(Y|X)=ΣpH(Y|X=x)
p=P(X=x)
经验熵和经验条件熵
当熵和条件熵的估计由极大似然估计得到
信息增益
得知特征X的信息而使得类Y的信息的不确定性减少的程度
特征A对于数据集D的信息增益g(D,A)
集合D的经验熵H(D)和特征A给定条件下D的经验条件熵H(D|A)之差
熵H(Y)与条件熵H(Y|X)之差称为互信息
对训练数据集D 计算每个特征的信息增益 选择信息增益最大的特征
H(D)
数据集中属于各个类的数量
H(D|A)
按该特征分出的各个子集的数量占比
各个子集中某个特征取值分布
信息增益比
信息增益g(D|A)与训练数据集D的经验熵H(D)之比
一般会是小于1的数值
gr(D,A) = g(D,A)/H(D) = H(D)-H(D|A)/H(D) = 1- H(D|A)/H(D)
决策树生成
ID3算法
核心
在决策树各个节点应用信息增益准则选择特征,递归地构建决策树
相当于极大似然法进行概率模型选择
只有树的生成算法,容易过拟合
C4.5生成算法
核心
使用信息增益比来选择特征
决策树剪枝
概念
在决策树学习中,将已生成的树进行简化的过程
往往通过极小化决策树整体损失函数或者代价函数来实现
正则化的极大似然估计
所有叶节点的熵+正则项
算法
计算每个节点的经验熵,递归地从叶节点向上回缩
只需考虑两个树的损失函数的差,计算可以在局部进行,可以使用动态规划进行
CART算法
概念
给定输入随机变量X条件下输出随机变量Y的条件概率分布的学习方法
假设决策树是二叉树
组成
决策树生成+决策树剪枝
CART生成
递归地构建二叉决策树的过程,对回归树用平方误差最小准则,对分类树用基尼指数最小化准则,进行特征选择,生成二叉树
回归树的生成
分类树的生成
用基尼指数选择最优特征,同时决定该特征的最有二值切分点
基尼指数
概率分布的基尼指数为Gini(p) = Σp(1-p)=1-Σp^2
对于给定的样本集合D,基尼指数
Gini(D) = 1-Σ(Dk/D)^2
在特征A的条件下,基尼指数定义为
Gini(D,A)=D1/DGini(D1)+D2/DGini(D2)
基尼指数越大,样本集合不确定性越大
与熵类似
CART剪枝
两步
从生成算法产生的决策树T0底端开始不断剪枝,直到T0根节点,形成一个子树序列
对应不同a
通过交叉验证法在独立的验证数据集上面对子树序列进行测试,从中选择最优子树
logistic回归和最大熵模型
logistic回归模型
logistic分布
S形曲线,关于(u,1/2)对称
属于指数分布
二项logistic回归模型
随机变量X取值为实数,Y取值为1或者0
比较两个条件概率值的大小,将实例分到概率值较大的那类
P(Y=1|X) = exp(wx+b)/1+ exp(wx+b)
P(Y=0|X) =1/1+ exp(wx+b)
事件的几率
该事件发生的概率与该事件不发生的概率的比值
事件的对数几率或者logit函数
logit(p)=log(p/1-p)
带入logistic回归模型
logp/1-p = wx
Y=1的对数几率是由输入x的线性函数表示的
模型参数估计
极大似然估计
对数似然函数
L(w)=Σ[ylogpi(x) + (1-y)log1-pi(x)]=Σ[y(wx)-log(1+exp(wx)]
求解方法
梯度下降
拟牛顿法
多项logistic回归模型
最大熵模型
最大熵原理
概率模型学习的一个准则
学习概率模型时,在所有可能的概率模型分布中,熵最大的模型是最好的模型
在满足约束条件的模型中选取熵最大的模型
在没有更多信息的情况下,那些不确定的部分都是“等可能”的
通过熵的最大化来表示等可能性
最大熵模型的定义
最大熵模型的学习
极大似然估计
统计分布
beta分布
概率的概率分布
二项分布
n次伯努利实验的结果
如多次抛硬币预测结果为正面的次数
多项分布
n次伯努利实验结果,但是每次实验有n种结果
支持向量机
提升方法
概念
在分类问题中,通过改变训练样本权重,学习多个分类器,并将这些分类器进行线性组合,提高分类性能
三个臭皮匠顶一个诸葛亮
Adaboost
模型是加法模型
基分类器的线性组合
损失函数是指数函数
exp(-yf(x))
学习算法是前向分步算法
每次只学习一个基函数
第m步的损失函数
提升树
回归问题的提升树算法
每次只需要拟合之前模型残差
梯度提升
关键是利用损失函数的负梯度再当前模型的值,作为回归问题提升树算法中的残差近似值,拟合一个回归树
因为当损失函数不是平方差损失函数时,残差不好计算
EM算法及推广
概述
概率模型变量都是观测变量,可用最大似然估计
有隐变量时就要使用EM算法
隐马尔可夫模型
条件随机场
黑灰产
举例
hao123成功的秘诀在于通过各种流氓软件、盗版光盘修改用户的注册表,从而篡改浏览器的默认首页
账号类产业链
虚假注册
账号售卖
批量养号
虚假认证
以流量为核心的黑灰产业链
引流(向外)
刷量(向内)
建议
对黑灰产相关论坛、社交群近期出现的新增高频词汇设定阈值,对超过阈值的词汇溯源
透过分析黑产的注册流程和攻击工具,对被攻击接口的请求特征汇总,以区别虚假注册用户和正常用户
批量行为都是有迹可循的。企业可以针对恶意用户的行为偏好和其在黑产中的使用广度,在设备信息、注册信息重合度、恶意用户的行为数据等方面,进行多维度的判断
通过对典型有效的黑灰产工具的逆向,对存在业务逻辑漏洞的方向调整,提高黑灰产工具的开发成本
对已发生事件追溯源头,通过分析产业链结构、成员角色、成本、利润来设置不同的解决措施
bert
预训练模型
vocab.txt 模型词典
bert_config.json bert的配置(超参数)
bert_model.ckpt* 预训练好的模型的checkpoint finetune初始值来自这些文件
输入数据
tab分割文件 每行4个
index
第一个句子id
第二个句子id
模型参数
task_name 任务的名字,这里我们Fine-Tuning MRPC任务
do_train 是否训练,这里为True
do_eval 是否在训练结束后验证,这里为True
data_dir 训练数据目录,配置了环境变量后不需要修改,否则填入绝对路径
vocab_file BERT模型的词典
bert_config_file BERT模型的配置文件
init_checkpoint Fine-Tuning的初始化参数
max_seq_length Token序列的最大长度,这里是128
train_batch_size batch大小,对于普通8GB的GPU,最大batch大小只能是8,再大就会OOM
learning_rate
num_train_epochs 训练的epoch次数,根据任务进行调整
output_dir 训练得到的模型的存放目录
do_train 是否训练,这里为True
do_eval 是否在训练结束后验证,这里为True
data_dir 训练数据目录,配置了环境变量后不需要修改,否则填入绝对路径
vocab_file BERT模型的词典
bert_config_file BERT模型的配置文件
init_checkpoint Fine-Tuning的初始化参数
max_seq_length Token序列的最大长度,这里是128
train_batch_size batch大小,对于普通8GB的GPU,最大batch大小只能是8,再大就会OOM
learning_rate
num_train_epochs 训练的epoch次数,根据任务进行调整
output_dir 训练得到的模型的存放目录
run_classifier
实现数据加载抽象基类
子主题
子主题
子主题
面试
基本数据结构
数组
连续内存/快速检索
链表
非连续内存/无法快速检索
三个指针
虚假链表头(就可以不去判断头节点是否为空了)
如两个链表合并
栈
后进先出
只能在栈底出入
可以用单链表实现
队列
先进先出
队尾插入 对头出队
双链表
广度优先搜索
双端队列
实现长度动态变化
滑动窗口最大值
双端队列的头部永远保存当前最大的元素
如果当前数比队尾数大 弹出该数存入当前数
Python 通过 zip(range(), range()) 可实现滑动窗口的左右边界 i, j 同时遍历
deque = collections.deque()
每次记得删掉不在序列中的数
class Solution:
def maxSlidingWindow(self, nums: List[int], k: int) -> List[int]:
deque = collections.deque()
res, n = [], len(nums)
for i, j in zip(range(1 - k, n + 1 - k), range(n)):
if i > 0 and deque[0] == nums[i - 1]:
deque.popleft() # 删除 deque 中对应的 nums[i-1]
while deque and deque[-1] < nums[j]:
deque.pop() # 保持 deque 递减
deque.append(nums[j])
if i >= 0:
res.append(deque[0]) # 记录窗口最大值
return res
def maxSlidingWindow(self, nums: List[int], k: int) -> List[int]:
deque = collections.deque()
res, n = [], len(nums)
for i, j in zip(range(1 - k, n + 1 - k), range(n)):
if i > 0 and deque[0] == nums[i - 1]:
deque.popleft() # 删除 deque 中对应的 nums[i-1]
while deque and deque[-1] < nums[j]:
deque.pop() # 保持 deque 递减
deque.append(nums[j])
if i >= 0:
res.append(deque[0]) # 记录窗口最大值
return res
树
递归
二叉树
遍历和序列化
完全二叉树
二叉搜索树
寻找第k小的元素
平衡二叉树
四叉树
红黑树
高级数据结构
优先队列
保证每次取出的元素在队列中优先级最高
二叉堆
利用数组实现完全二叉树
父节点优先级最高
左右节点2*i,2*i-1
向上筛选和向下筛选
优先队列初始化
o(n)
大小堆
图
存储和表达
图的遍历
二部图检测
拓扑排序
最短路径
联合查找算法
前缀树
字典树
创建
子主题
搜索
线段树
按二叉树形式存储数据的结构,每个节点保存数据中的某一段的总和
树状数组
用数组表示多叉树的结构
0 条评论
下一页