机器学习笔记
[TOC]
机器学习与数据挖掘
概论
离散输出:分类
- 二元分类,多元分类muticlass
- 多标签分类mutilabel:多重标签体系,即多维度的标签,一个样本可以属于多个类别
- 概率分类(软分类):不给类别,但给类别的概率
连续输出:回归
- 得到的是预测函数PF(Predict Function)
- 通常没有最优解,只能找到局部最优解
输入和输出均为变量序列:标注
监督学习、无监督学习、半监督学习、强化学习
生成式模型和判别式模型
- 生成式:模型表示了输入X产生输出Y的生成关系,如:朴素贝叶斯,隐马尔科夫模型
- 判别式:直接学习决策函数或者条件概率分布。判别式方法关心的是对给定的输入X,应该预测出什么样的输出Y,如:k近邻法、感知机、决策树、逻辑斯蒂回归、最大熵、支持向量机、提升方法、条件随机场。
- 生成式方法可以还原出联合概率分布,生成式方法一般学习更快;判别式方法往往准确度更高。
演进:规则$\to$统计$\to$深度学习
ML VS AI
- ML是AI的一部分
- 现代AI是ML+BD(Big Data)
ML VS DM(Data Mining)
- ML为DM提供算法支撑,DB为DM提供数据支撑
特征工程 VS 神经网络
- 当数据为结构化数据时常使用特征工程,否则使用神经网络
基本概念
- ML:学习一个由输入到输出的映射,即模型。
- 目的:预测或分析
- 输入空间,输出空间:输入和输出可能的取值空间
- 假设空间:输入空间到输出空间的映射的集合。假设空间即学习范围,模型属于假设空间。
- 具体的输入称为一个实例,通常由特征向量(输入向量)表示,其空间称为特征空间。特征空间可能和输入空间相同,也可能不同。如可能不经过任何处理直接输入,也可能经过了PCA处理降维特征化。不同的ML模型对输入的敏感程度是不一样的,如K-means需要较好特征,深度神经网络更喜欢有一定噪音的数据。
- 输出标签的编码:独热编码形成的向量。和人为设置0,1,2,3,4,5相区别:人为引入了标签的距离和顺序,这会误导机器。注意这里和索引的区别,索引编号不参与计算
- 输入输出对=样本(对)
- 损失函数$L(Y,f(X))$:衡量预测结果和真实结果间距的非负函数。如:01损失函数,平方损失函数,绝对损失函数,对数损失函数
- 目标函数:优化的目标,损失函数可以是目标函数,也可以不是(如不能求导时需要一定的调整)
- 基本假设:X,Y间具有联合概率分布
- 独立同分布:训练数据和测试数据的特征和标签是一致的,没有概念上的漂移。
风险与误差
- 经验风险$R_{emp}(f)=\frac{1}{N}\sum_1^NL(y_i,f(x_i))$与期望风险$R_{exp}(f)=E_P[L(Y,f(X))]$,经验风险:训练集的平均损失,期望风险:X,Y联合分布的期望损失。ERM:经验风险最小化。
- 根据大数定律,样本N趋于无穷时,$R_{emp}(f)\to R_{exp}(f)$,但现实中不可能趋于无穷,所以最终的问题变为求解经验风险最小化$min_{f\in F}\frac{1}{N}\sum_1^NL(y_i,f(x_i))$和结构风险最小化$min_{f\in F}\frac{1}{N}\sum_1^NL(y_i,f(x_i))+\lambda J(f)$两种。
- $F$为假设空间,注意$F$中的最好预测函数与整个函数空间中的最好预测函数还有距离,其损失函数的差是近似误差;$F$中最好的预测函数与经验风险最小化的预测函数也有距离,其损失函数的差是估计误差;机器学习到的函数与经验风险最小化的预测函数仍有距离,其损失函数的差是优化误差;泛化误差为上三者的和。$F$扩大,近似误差变小,估计误差一般会变大(数据不变时,假设空间变大,更容易产生过拟合);反之也成立。极端地,有无限的训练数据时,估计误差为0。
- 对于任何一个假设空间内的函数(如自己训练的一个模型,不一定收敛了),有额外误差(excess error)=近似误差+估计误差+优化误差,它可以用来衡量任何一个函数的表现。该函数与经验风险最小化的预测函数间的损失函数差为优化误差,该误差在过拟合情况下可能为负。
- 贝叶斯决策函数:使期望风险最小化的函数,一般也称为目标函数
- 贝叶斯风险:贝叶斯决策函数的风险
- 极大似然估计是经验风险最小化在模型是条件概率分布,损失函数是对数损失函数时的一个例子。在数据太少时经验风险最小化很容易过拟合。
- 结构风险最小化是经验风险最小化的正则化,即加上罚项$\lambda J(f)$,$J(f)$是F上的泛函,是模型的复杂度(如模型参数的范数),$\lambda \geq 0$是系数。最大后验概率估计是模型是条件概率分布,损失函数是对数损失函数时的一个例子。
过拟合: 模型太复杂,复杂度比真实模型更高;数据太少,数据多能减少过拟合。过拟合时模型经验上某些参数可能非常巨大,并且不够平滑。解决方法:正则化/交叉验证
奥卡姆剃刀原理:能很好地解释已知数据并且十分简单的才是最好的模型
数据划分
训练集:学习模型内部参数
验证集:调整超参数
测试集:模型不能改动了,评估模型结果
Dirty Work:通过测试集调整超参(即把测试集作为了训练集或验证集),结果会非常好,但泛化能力可能会变差
(k折)交叉验证:为解决训练集和测试集随机切分有一定偶然性,分数据为k份,每份都做一次测试集,其余作为训练集,共进行k次,把$\bar{T}\pm \frac {SD(T_1,…,T_k)}{\sqrt k}$作为最终误差范围,SD为标准差。特别地,极端情况下$k=N$,每份只有1个,变为留一交叉验证。
对于时间序列问题,不断添加后方的测试集作为训练集多次验证,或者说将关键时间节点在时间轴上滑动多次验证
ML流程:
- 问题的分析也是重要的
- 数据的选取划分也不是简单的
具体流程:数据划分为三部分(训练,验证,测试)$\to$反复训练调超参数$\to$把训练集和验证集合并重新训练$\to$在测试集上评估性能$\to$(如果能获取测试集数据,则再合并测试集并重新训练)$\to$部署
ML问题实例:根据过往员工离职信息分析员工离职倾向
- 输入&&输出:输入为5年内员工离职数据,输出为判断员工是否在6个月能离职
- 深度学习方法:RNN,这里暂不讨论
- 训练的滑动窗口:18个月,根据前12个月的情况判断后6个月内是否离职。其中注意,剔除前12个月内入职的人,剔除在前12个月离职的人。
- 不平衡的问题:离职的人远少于不离职的人;解决方法:上(过)采样,拷贝多份离职的人做训练集,或者下(欠)采样,不离职的人多次采样和离职的人做训练集形成多个模型再求平均。
- 测试集的选取:把训练集的一部分分为测试集
信息泄露:需要考虑特征与标签间是否强相关
- 标签进入属性:e.g. 图片中出现了标签的文字
- 标签关联的属性进入属性:e.g. 情感分析任务文本中出现了打分数据
样本偏差:只采集了部分群体的数据
稳定性问题:模型会随时间发生变化
优化
线性回归
- 简单
- 易于构建
- 具有可解释性
- 方法:最小二乘法
- 问题:多维时涉及到矩阵的求逆,计算量大,而且可能不能求逆
- 改进:增加罚项
- 岭回归:二范数参数罚项,随罚项增大参数接近0
- Lasso回归:一范数参数罚项,随罚项增大,参数稀疏程度增加
- 两者比较:前者罚项是圆,后者罚项是菱形。菱形和经验风险的圆等高线相切更容易交在顶点,故参数值更容易取到0;圆形和经验风险的圆等高线相切更容易交在一般的位置,故参数值不太容易为0。岭回归比Lasso回归计算更简单。
解析解不存在?必须用数值方法。
梯度下降,MiniBatch,随机梯度下降
- 详见最优化
- 条件:连续可微凸
- 进一步:自适应步长
基本概念
- Epoch:把所有样本跑完一遍
- Batch Size:类似窗口大小
- Itaration:样本中batch数
Momentum 动量方法思想:SGD的优化,对每次迭代增加一个discount
坐标下降法:反复选择某一个坐标进行梯度下降直至收敛
- Lasso回归时:总体凸,经验风险部分连续可微,罚项不可微,虽然不满足梯度下降条件,但经证明可以使用坐标下降收敛到局部最优
- 权重$w_i$的更新策略是一个分段函数
- 根据坐标的选择策略又分为随机坐标下降和循环坐标下降
冗余特征问题
- 处理方法:特征选择,丢弃冗余特征;PCA
- 冗余特征的权重和相等,在空间中为一条直线。
- 一范数正则化没办法区分冗余特征(权重只要均大于0,结构风险就都相同)。考虑方形和直线的距离。
- 二范数正则化在冗余特征权重全部相时结构风险取到最小。考虑圆和直线的距离。
- 但如果冗余特征是线性相关的,一范数正则化很容易得到为权重为0的结果,二范数正则化的特征权重是线性相关的。本质上是从前述的圆等高线变为了椭圆等高线。
弹性网络
- 解决的问题:如果冗余特征有多个变量,组内权重可能突变地很厉害。
- 方法:罚项取一范数和二范数的加权和,形状是边为弧形的方形(酷似原神中的岩元素),范数的权重调整可以改变弧的弧度,故称弹性网络。能使多个特征组间权重差异变大,组内权重差异变小。
- 在图形上一范数权重取0.2时弹性网络很像1.2范式,但是弹性网络在拐点是圆滑的,比单一的范式效果更好。
- 把二范数合并到经验风险项中,二范数仍然是可微凸的,故可以用坐标下降法进行优化。
- 05年提出的方法
凸优化
- 详见最优化
拉格朗日乘子法和对偶问题
- 详见最优化
$$
f = u_12+u_23+u_31\
\sqrt{(u_1^2+u_2^2+u_3^2)}=1\
g = u_12+u_23+u_31-\lambda(\sqrt{(u_1^2+u_2^2+u_3^2)}-1)\
g’(u1)=2-\lambda(\frac{u_1}{\sqrt{(u_1^2+u_2^2+u_3^2)}})=0\
…
$$
感知机&&神经网络
- …
SVM
- 逻辑斯蒂回归$y=\frac{e^{\theta ^Tx}}{e^{\theta ^Tx}+1}$
- 线性模型
- 和SVM不同,该超平面由所有的点给出
- 可以使用核技巧,但计算复杂度很高,一般不使用
- 为什么是SVM?
- SVM和Boosting方法是深度学习之前的两大支柱
- SVM有解释性
- SVM在特征维数较大,样本较少时,神经网络很容易过拟合,而SVM重点考虑超平面附近的少量点,不会过拟合,同时不需要大量的样本
- 间隔
- 间隔符号代表分类,大小代表了样本的分类的确信度
- 函数间隔$\hat\gamma=y(wx+b)$:表示了分类的正确性及确信度
- 几何间隔:在上基础上规范化$||w||=1$来避免$w,b$成比例更改间隔变大的问题,即$\gamma=y(\frac{w}{||w||}x+\frac{b}{||w||})$
- 概述:寻找(几何)间隔最大化的超平面
- 本质上是求解凸二次规划,SVM学习算法是求解该问题的最优化算法
- 支持向量:指超平面中一些具体的点,它们的位矢即支持向量;这些点对间隔最大化的超平面起到了几乎决定性的作用。
- 归一化:平衡各维度的权重
- 线性可分:数学推导见最优化
$$
min_{w,b}\frac 1 2||w||^2\
s.t.\ \ y_i(wx_i+b)-1\geq0,i=1,2,…,N
$$
线性不可分的线性SVM
- 软间隔:不要求所有样本都正确分类,增加松弛变量$y_i(wx_i+b)\geq 1-\xi$
$$
min_{w,b,\xi}\frac 1 2||w||^2+C\sum_1^N\xi_i\
s.t.\ \ y_i(wx_i+b)\geq1-\xi_i,i=1,2,…,N
$$- 软间隔下分隔边界间距离为$2\epsilon$的区域也有样本,可能被误分
- C为罚项系数
- Hinge Loss:从损失函数的角度解释,侧重离超平面近的样本,过滤离超平面很远的样本
- 硬间隔下SVM受异常点影响很大
非线性SVM
- 核技巧
- 使用一个非线性变换$\varphi$,把非线性问题变为线性问题
- 形式上只是把SVM解中两点的内积变为了$\varphi(x_i)\varphi(x_j)$
- 核函数的选取:正定核
支持向量回归
- 回归时允许样本和预测时有一定的距离,该距离不计入损失
多分类:转化为二分类
- 一对多:一个类别VS其它所有类别。会有不平衡,分类区域重叠等问题
- 一对一:轮流选两类。会有区域无人认领的情况;时间复杂度很高。libSVM中实际使用。
SVM不能给出概率输出
性能评估
- 基线模型:作为模型评估的下限,一般是传统学习方法
- 零信息预测函数:不使用样本特征,仅通过样本结果分布进行随机预测
- e.g. 平方损失函数时该函数为样本均值;绝对值损失时为该函数为中值
- 最基本的基线模型
- 线性模型:简单
- Oracle模型:作为模型评估的上限,也可能超过,一般是各榜单上的TOP模型
- 对多类有混淆矩阵;针对某一类有TP,FP,TN,FN,查准率$PRE=\frac{TP}{TP+FP}$,查全率$REC=\frac{TP}{TP+FN}$,$F_1=\frac{2PRE\cdot REC}{PRE+REC}$,$F_{\beta}=\frac{(1+\beta^2)PRE\cdot REC}{\beta^2PRE+REC}$
- 阈值
- ROC,AUC…
极大似然估计
- 取模型中使所有数据概率最大的假设
- e.g. 泊松分布
决策树
- 具备可解释性,支持非线性分类
- 构造
- 分裂:选择属性
- 划分:划分样本
- 剪枝:避免过拟合
- 算法
- ID3:主要通过计算信息增益来选择属性
- C4.5:主要通过信息增益率来选择属性,修复了类别特别多的属性总是被优先选的问题,但会偏好类别少的属性
- CART:主要通过Gini指数来选择属性
- 连续变量
- 选取阈值使之离散:二分法
- 分隔点的选取:每两个值的中间值中最好的
- 值缺失问题
- 只考虑完整的样本:浪费信息
- 值填补:最多值填补/0值填补
- 罚项:计算信息增益时对有缺失值的属性进行惩罚
- 划分:样本该属性缺失时的划分,将该样本放入所有分类,计算信息增益时需要乘上权重。可以理解为把该样本分到所有类别
- 过拟合
- 树越大,训练集上效果越好,测试集上效果反而更差
- 早停:不让树长的太大
- 剪枝:用标签最多的类别代替所有类别,即不进行这次决策,在验证集上看是否有提升。若有则替换,即成功剪枝。
集成学习
- 又称:多分类器系统
- 背景:减少预测函数的方差,数学上的简单想法是多次求平均,但我们没有多个独立的训练集。
- 通过多个模型(基学习器)进行学习,输出为多个弱分类器的线性组合或指数组合
- 基学习器需要“好而不同”:独自工作至少要有一点性能,同时基学习器间需要尽可能不同。
- 一般用于监督学习,但也可以用于无监督的聚类任务
- 想法:三个臭皮匠,顶个诸葛亮
- 平行集成:每个子模型平行构建,互不影响,如Bagging
- 可以并行计算
- 复杂度较低
- 序列集成:后一个子模型依赖前面的模型,如Boosting
- Bagging
- Bootstrapping采样,有放回,大数平均下63%的样本是袋内样本,即多次出现的样本,袋外样本是很好的测试集
- 不使用全部样本,一方面是为了随机性,一方面是避免分类器相关
- 生成多个(可能成百上千)独立的弱分类器,权重都是一样的
- 生成集成模型,即预测函数的结合
- 回归:平均
- 分类:投票,相同则随机
- 相比子学习器,误差不变,方差减小
- 随机森林
- 基学习器为多颗决策树
- 典型的Bagging,样本的随机性
- 决策树在每一个结点选择属性时,随机选一个很小的总属性子集来进行选择,特征的随机性
- 因为随机性很高,每棵树都只用部分样本学习,使用部分特征,所以不容易过拟合
- 不需要剪枝,一方面因为要随机采样,另一方面是随机森林不指望在一棵树上表现良好
- 树越多,学习错误率越低
- 经验上,随机属性子集大小:$log_2d+1$,它会影响树的随机性和森林的精度
- 不需要进行特征选择就能进行高维数据学习
- 缺点是精度不太高,比决策树学习得慢,也不具备可解释性
- 可以评估特征重要性:对袋外样本,扰动某个特征
- 随机森林的评估
- 间隔:分类问题时,正确分类-错误分类的集分类器数,或者说投票差
- OOB(Out-Of-Bag Error):对某个样本,只通过没见过该样本的基分类器的预测结果进行评估
- Boosting
- 基学习器间有很强的依赖,新学习器的产生式基于之前的学习器
- 计算最后的结果时需要对不同的学习器进行加权求和,权重的设置根据该弱分类器的效果
- 相比子学习器,方差不变,误差减小
- AdaBoost
- 典型的Boosting
- 迭代算法
- 初始权重为$\frac 1n$,迭代T轮,若效果比随机差(准确度小于0.5),则出错,结束循环;否则根据误差率更新所有训练数据的权重
- 预测时根据每一轮形成的子学习器投票,权重为根据误差计算得到的一个数
- 集成的好处
- 统计上看,假设空间往往较大,多学习器泛化性能更好
- 计算上看,降低陷入糟糕局部极小点的风险
- 表现上看,多学习器的效果可能超出单学习器的假设空间,能更好的近似
- 数据增强
- 决策树和神经网络对数据扰动较敏感
- CV:旋转,黑白
- NLP:回译,近义词替换
- Stacking
- 前两种集成学习方法的弱学习器种类是一样的,而Stacking可以结合不同种类的弱学习器;根本想法也不一样,Stacking是希望强的学习器(也可以使用弱的)集成后变得更强,使用上比较灵活
- 核心过程:用原样本训练多个分类器,然后把每个样本在每个学习器上的输出(最好是把分数标签转化概率)结合原样本作为新的样本训练元学习器
- 元学习器进行输出
- 层内可以并行,层间不能并行
- Subsemble Approach
- 一种Stacking
- 原数据集划分为m份子集,为避免信息泄露导致过拟合,需要把各个子集平均划分,n-1份进行训练,1份用于标签输出
- 神经网络中也有集成思想的体现
- 如卷积神经网络中需要有多个卷积核
降维
- 无监督学习
- 维度灾难:维数太高同时又很稀疏,难以计算距离有用的维度被掩盖了
- 降维的合理性:虽然数据时高维的,但和学习任务相关的只是低维数据
- PCA:线性降维,高维数据到低维子空间的线性正交投影
- 目标超平面特点:样本离它足够近,点的投影要尽可能分开
- 核PCA:通过非线性映射来寻找合适的低维嵌入
- 流形学习:一种基于拓扑流形概念的降维方法。可用于可视化
- LLE:流形在局部可以近似等价于欧氏空间。在高维空间中求出用来表示某个样本的邻居样本的权重值,也就是上图中的w,然后代⼊到低维空间中,来求低维空间的x映射后的表示。
- 自编码器:前馈神经网络
- 编码后再解码,并令目标和自身误差小,这样训练得到中间编码结果就是⼀个低维的表示。可以引入非线形的激活函数来训练,这样训练的结果就可以是非线形的映射。
聚类
- 无监督学习
- 评估问题
- 类内相似度
- 类间相似度
- 外部指标
- a:参考结果和实验结果都在一类的数据对数
- b:参考结果在一类,实验结果不在一类的数据对数
- c:参考结果不在一类,实验结果在一类的数据对数
- d:参考结果和实验结果都不在一类的数据对数
- $JC=\frac{a}{a+b+c}$
- $FMI=\sqrt{\frac a{a+b}\times\frac a{a+c}}$
- $RI=\frac{2(a+d)}{m(m-1)}$
- 内部指标
- 簇内样本平均距离$avg(C)$
- 簇内样本最大距离$diam(C)$
- 簇间最小距离$d_{min}(C_1,C_2)$
- 簇中心最小距离$d_{cen}(C_1,C_2)$
- $DBI=\frac{1}{k}\sum_{i=1}^{k}max_{j\neq i}\frac{avg(C_i)+avg(C_j)}{d_{cen}(C_i,C_j)}$
- $DI=…$
- 距离度量
- 距离指标需要是范数
- 闵可夫斯基距离/p-范数
- cosine相似度量:向量夹角,常用
- 层次聚类算法:初始把每个样本当做一个类,不断合并最近的两类直至满足需求
- 需要计算两类间的距离:可以取两类中最近/远的样本的距离,两类所有样本间的平均距离,分别被称作单一连接,完全连接,平均连接
- K-means
- 一种EM算法,初始随机选数据点作为聚类中心,E步计算聚类结果,M步计算聚类中心
- 超参数K的选取
- 可以根据数据情况,人工选取
- 轮廓系数$sc(i)=\frac{(b_i-a_i)}{max(a_i,b_i)}$,越大越好
- $a_i$是样本i到自己类内其它样本的平均距离
- $b_i$是样本i到最近的其它类的样本的平均距离
- 缺点:目标函数非凸,可能仅局部最优。粗糙的解决方法:多次随机初始化选最好的结果。
- K-means++:按顺序选取数据作为初始点,更好的解决方案
- 图分类
- 应用背景:微博人群分类
- 模型:有权无向图
- 谱聚类:相当于先进行非线性降维,使原始数据点能够线性可分,最后再使用k-means聚类就可以得到比较好的聚类效果
- DBSCAN:一种以密度为基础的聚类
- $\epsilon$邻域,邻域内几个点是核心判别
- 核心对象:邻域内的点数超过了阈值
- 边界对象:核心对象的邻居
- 噪音对象:上两者都不是的点
- 密度直达:非堆成,边界对象对核心对相密度直达
- 密度可达:经多次密度直达传递
- 超参数的选择
- 核心对象阈值:经验上大于数据维度+1
- 领域大小:经验…
- 缺点:对类内密度很敏感,密度差大时效果差;对超参数很敏感
- 高斯混合模型
- 见EM
EM算法
期望最大值算法:处理隐变量模型
- 是一类优化算法
- 无监督
- K-means是EM的特例
隐变量模型:包含隐含变量(永远不会被观测到)的概率模型
高斯混合模型
- 学习是困难的(如SGD),推断是容易的
- 边界似然,对数似然,边界对数似然
边界优化:找L的最值不容易,但可以找L的下界函数Q的最值来一步一步接近
- 递推关系:$L(\theta_{t+1})\geq Q(\theta_{t+1})\geq Q(\theta_{t})=L(\theta_{t})$
寻找下界
- $\log p(x|\theta)\geq\sum_zq(z)\log(\frac{p(x,z|\theta)}{q(z)})=L(q,\theta)$
- $\log(x)$是凹函数
具体算法
随机初始化$\theta$
找最佳的q,$q^*=\arg max_q L(q,\theta^{old})$
找最佳的$\theta$,$\theta^{new}=\arg max_{\theta}L(q^*,\theta^{old})$
数学推导:
$$
L(q,\theta)=\sum_zq(z)\log(\frac{p(x,z|\theta)}{q(z)})\=\sum_zq(z)\log(\frac{p(z|x,\theta)p(x|\theta)}{q(z)})\=\sum_zq(z)\log(\frac{p(z|x,\theta)}{q(z)})+\sum_zq(z)\log p(x|\theta)\=-KL[q(z),p(z|x,\theta)]+\log p(x|\theta)\\Rightarrow\log p(x|\theta)=L(q,\theta)+KL[q(z),p(z|x,\theta)]\\Rightarrow\log p(x|\theta)=L(q^*,\theta)\KL=0\Rightarrow q^*(z)=\arg max_qL(q,\theta)
$$E步,计算$q^*(z)=\arg max_qL(q,\theta)$,计算$J(\theta)=L(q^*,\theta)$
M步,计算最优的$\theta=\arg max_\theta J(\theta)$
如此反复直至收敛
收敛性:…
算法改进:
- 问题:极值问题难计算
- E步针对$J$对$\theta$使用梯度下降
- M步松弛计算$q=\arg min KL$
EM计算高斯混合模型
- …
半监督学习
- 真实世界中无标签数据很多,有标签的数据很难获得,可能需要领域专家甚至特殊设备,而且耗时耗力。
- 半监督学习:尽可能用到无标签数据提高模型表现
- 无标签数据中包含潜在的分布信息
- 自训练:用有标签的数据训练一个模型来给部分无标签的数据打标签,如此反复至收敛,最后再利用全部的数据进行训练目标模型
- 优点:简单
- 缺点:
- 早期错误会被放大,产生误导;改进:增加样本置信度挑选样本
- 收敛情况不明
- 生成模型:e.g. 混合高斯模型
- 利用EM等方法估计参数
- 优点:简单高效
- 缺点:EM的局部最优问题;可能假设本身有问题 e.g.分类是究竟应该按流派还是按话题
- TSVM
- 最大化无标签数据间隔
- 先用有标签样本训练SVM,然后对所有数据进行打标签
- 利用所有这些数据训练SVM,然后对所有数据进行打标签
- 遍历所有无标签样本对,交换两个不同的都不好的预测标签结果。如此循环至收敛
- 图半监督学习
- 给定⼀个数据集, 我们可将其映射为⼀个图,数据集中每个样本对应于图中⼀个结点,若两个样本之间的相似度很高(或相关性很强), 则对应的结点之间存在⼀条边,边的“强度”(strength)正比于样本之间的相似度(或相关性)。
- 我们可将有标记样本所对应的结点想象为染过色, 而未标记样本所对应的结点则尚未染色。于是,半监督学习就对应于“颜色”在图上扩散或传播的过程。
- 多视图算法
- 协同训练:训练两个分类器,分别给无标签数据打标签,分别把其中k个较确信的数据加入对方的标签数据集,如此反复
- 可变自编码器:…
复习
- 深度学习VS机器学习
- 机器学习更依赖结构化的数据,学习的是一种模式,通常需要多个模型组合
- 深度学习通过神经网络独立完成定义,分析,决策的过程,是端到端的解决方案,需要海量的数据
- 监督学习和无监督学习
- 监督学习有标签,无监督学习无标签
- 如何从数据集中选特征/变量
- 丢弃相关性高的冗余特征
- Lasso回归
- 随机森林
- 计算信息增益
- 如何选择机器学习算法
- 如果是结构化的数据,则可以根据其结构使用传统模型
- 如果是图片,视频,语音,文本,则神经网络会比较好
- 正则化在机器学习中的应用
- 防止模型过拟合
- 数据集有较高方差是好还是不好
- 不好…
- 如何处理高方差的数据集
- 可以使用bagging方法集成
- 随机梯度下降和梯度下降的区别
- 梯度下降用所有样本估计下降参数,minibatch用部分样本估计下降参数,SGD用随机样本估计下降参数
- 决策树的优缺点
- 优点:可解释性,简单,模型参数少,对噪音不敏感
- 缺点:过拟合
- 混淆矩阵
- 主要用于多分类问题的模型性能评估
- 维度灾难
- 维度太多可能导致过拟合;有用的维度被掩盖了
- 使用PCA处理
- 正则化VS归一化
- 正则化处理过拟合问题,是对模型的处理
- 归一化用来处理不同特征的值域不同,尺度差别太大,是对数据的处理
- 归一化VS标准化
- 归一化:见上,映射到[0,1]
- 标准化更宽泛
- 懒惰的学习器
- KNN:它不需要训练,只需要从测试集中找邻居投票即可
- K-means VS KNN
- K-means:最简单经典的聚类方法
- 核SVM的方法
- 处理线性不可分问题,样本点积过程换成核即可
- 为什么集成模型更好
- 减少方差,降低过拟合的可能
- “好而不同”
- 过拟合 VS 欠拟合
- 欠拟合:模型误差很大,没有训练好。解决办法:再训练
- Lasso VS 岭回归
- 都是线性回归问题中用到
- Lasso是一范数正则化,岭回归是二范数正则化
- 概率和似然的区别
- 概率:事件发生的可能性
- 似然:数据集在某个假设下发生的可能性
- 为什么要对决策树剪枝
- 后剪枝:先生成树,再剪值看结果是否变好,好则剪
- 预剪值:限定一些条件防止树太深
- 模型准确度VS模型性能
- 性能:宽泛,准确度,训练时间等
- 在不均衡的问题中,F1比准确度要好
- 不均衡数据集问题
- 上(过)采样,下(欠)采样,类别权重(深度学习)
- 特征工程为什么对模型很重要
- 用好的特征能提高模型效果
- Boosting VS Bagging
- Boosting可以并行,Bagging只能迭代串行
- 生成式模型 VS 判别式模型
- 生成式模型学习联合分布
- 判别式模型学习条件概率
- 超参数
- 模型外部的参数,和数据是无关的
- 如何定义类别个数
- 轮廓系数…
- 交叉验证
- 为了避免训练集合验证集分隔的偶然性,获取更好的评估
- KNN中距离的计算
- 范数
- cos
- 熵和信息增益的区别
- 信息增益是熵的减小值
- 什么时候用SVM而不用随机森林
- 线性可分时一般SVM结果更好
- 问题高维时
- SVM异常点的影响
- 软间隔参数C大受影响
- 逻辑回归能用核函数吗
- 可以,但逻辑回归基于所有样本,计算代价太高了
- SVM是否产生概率输出
- 不能,它只能找到界面,距离不能说明概率
- 可以用k折交叉验证生成概率
- 贝叶斯风险VS经验风险
- 贝叶斯风险是理想情况下的
- 经验风险基于数据集
- 拉格朗日乘子
- 优化时用到
- 随机森林的随机性
- 数据随机性
- 特征随机性
- 随机森林不容易过拟合
- 基于上述随机性
- 深度学习模型和集成学习模型的联系
- 深度学习中也有集成思想
- 集成分类器效果为什么可能比单个分类器好
- “好而不同”