笃行谊 盛年不重来,一日难再晨。及时当勉励,岁月不待人。

统计学习方法笔记

第一章

统计学习方法:

  • 从训练数据(training data)(给定的、有限的集合)出发,
  • (假设数据是独立同分布产生的)
  • 运用某个(某评价标准evaluation criterion)(从假设空间hypothesis space)选出的最优模型(由算法实现)
  • (假设空间:假设要学习的模型属于某个函数的集合)
  • 已知训练数据和未知测试数据(在评价标准下)有最优的预测
    • 三要素:→ “模型的假设空间”(model) → “模型的选择准则”(strategy) → “模型学习的算法”(algorithm)
    • 方法 = 模型 + 策略 + 算法

步骤:

  1. 得到一个有限的训练数据的集合
  2. 确定包含所有可能的模型的假设空间(学习模型的集合)
  3. 确定模型选择的准则(学习的策略)
  4. 实现求解最优模型的算法(学习的算法)
  5. 通过学习方法选择最优模型
  6. 利用学习的最优模型对心的数据进行预测或分析


统计学习包括监督学习、非监督学习、半监督学习和强化学习

监督学习

监督学习:利用训练数据集学习一个模型,再用模型对测试样本集进行预测

模型:概率函数或者非概率函数(决策函数)

  • 决策函数(之假设空间$\mathcal F$):
  • 条件概率函数(之假设空间$\mathcal F$):

策略:误差最小化(经验风险/结构风险最优化(最小化)问题)(结构风险 = 经验风险 + $\lambda*J(f)$

  • 误差用损失函数(loss function)(非负实值函数)表示:$L(Y,f(X))$
  • 期望损失/期望风险($=$损失函数的期望)(输入、输出$(X,Y)$为随机变量,遵循联合分布$P(X,Y)$(未知)→所以期望风险无法直接计算,需要‘学习’):
  • 经验损失/经验风险(即给定训练数据集$T={(x_1,y_1),(x_2,y_2),\cdots,(x_N,y_N)}$,模型$f(X)$关于$T$的平均损失):
  • 根据大数定律,当样本容量$N$趋于无穷时,经验风险$R_{emp}(f)$趋于期望风险$R_{exp}(f)$
  • 当样本容量足够大时,可直接用经验风险最小化作为策略:

    例如极大似然估计: 当模型为条件概率分布,损失函数为对数损失函数时,经验风险最小化等价于极大似然估计

  • 当样本容量很小时,只利用经验风险最小化作为策略,容易出现过拟合(over-fitting)现象,所以提出结构风险最小化(structural risk minimization, SRM)为策略
  • 结构风险($J(f)$为模型的复杂度(越复杂越大),是定义在假设空间$\mathcal F$上的泛函,是对复杂模型的惩罚):
  • 贝叶斯估计中的最大后验概率估计就是结构风险最小化的例子:当模型为条件概率分布、损失函数是对数损失函数、模型复杂度由模型的先验概率表示时,结构风险最小化等价于最大后验概率估计

算法:求解最优解的具体计算方法

  • 如果有显式解析解,最优化问题比较简单
  • 但通常解析解不存在,就需要用数值计算的方法求解
  • 如何保证找到全局最优解,并使求解过程非常高效,是一个重要问题

训练误差:模型在训练数据上的误差(本质上不重要) 测试误差:模型在测试数据上的误差(非常重要)→→ 测试误差小的方法具有更好的预测能力,是更有效的方法

过拟合:选择的模型所含参数过多(比真模型多):

  • 一味追求缩小测试误差,所选模型复杂度(如参数个数)往往比真模型高(过拟合),以致于出现对已知数据预测很好,对未知数据预测很差的现象。→ 模型选择旨在避免过拟合并提高模型的预测能力


以多项式拟合为例:

  • 给定一个训练集$T$
  • 假设数据由$M$次多项式函数$f$生成(目标 → 选择一个对已知数据和未知数据都有很好预测能力的函数(模型))
  • 解决办法:
    • 首先确定模型的复杂度(即确定多项式的次数$M$)
    • 再按经验风险最小化的策略,求解参数(即多项式的系数)
      • 可用最小二乘法求得拟合多项式系数的唯一解(简单的最优化问题)
    • 结果分析:
      • $M = 0$ 时,多项式曲线是一个常数,数据拟合效果很差
      • $M = 1$ 时,多项式曲线是一条直线,效果也很差
      • $M = 3$ 时,曲线对训练数据拟合效果足够好,模型也比较简单,是比较好的选择
      • $M = 9$ 时,曲线通过每个数据点,训练误差为0,但是对未知数据预测能力不好,过拟合,不可取


多项式拟合可以看到:

  • 随着多项式次数(模型复杂度)增加,训练误差会减小,直至趋于0
  • 但测试误差会随着多项式次数的增加,先减小后增大 → 最终目的是使测试误差达到最小:为此要选择合适的多项式次数(对一般模型选择也成立)

两种常用的模型选择方法:正则化交叉验证

正则化(regularization):是结构风险最小化策略中的罚项(penalty term 或叫正则化项regularizer)$\lambda J(f)$,一般是模型复杂度的单调递增函数,比如可以是模型参数向量的范数

  • 正则化的作用:选择经验风险和模型复杂度同时较小的模型
  • 从贝叶斯估计角度看:正则化项 → 模型的先验概率(模型复杂,先验概率较小)


交叉验证(cross validation):(基本思想:重复使用数据)把给定的数据随机切分为训练集、验证集和测试集,在此基础上反复进行训练、测试以及模型选择

  • 例如,数据随机分为两部分,70%为训练集,30%为测试集
  • 然后用训练集在各种条件下(例如,不同参数个数)训练模型,从而得到不同的模型
  • 再在测试集上评价各个模型的测试误差,选出误差最小的模型


泛化能力

泛化能力/推广能力(generalization ability):指由该方法学习到的模型对未知数据的预测能力

泛化误差(generalization error):如果学到的模型是$\hat f$,则用这个模型对未知数据预测的误差即为泛化误差(其实就是模型的期望风险

泛化误差上界(generalization error bound):泛化能力分析往往是通过研究泛化误差的概率上界进行的.

  • 它是样本容量的函数,当样本容量增加时,泛化上界趋于0
  • 它是假设空间容量(capacity)的函数,假设空间容量越大,模型就越难学,泛化误差上界就越大

定理(泛化误差上界) 对二类分类问题,当假设空间是有限个函数的集合$\mathcal F={f_1,f_2,\cdots,f_d}$时,对任意一个函数$f\in\mathcal F$,至少以概率$1-\delta$,以下不等式成立(即以下不等式成立的概率大于等于$1-\delta$):

其中, $ \varepsilon(d,N,\delta)=\sqrt{\frac{1}{2N}(\log d +\log\frac{1}{\delta})}$

不等式左端$R(f)$是泛化误差,右端即为泛化误差上界. 右端第一项是训练误差,训练误差越小,泛化误差也越小. 第二项$\varepsilon(d,N,\delta)$是$N$的单调递减函数,当$N$趋于无穷时趋于$0$;同时它也是$\sqrt{\log d}$阶的函数,假设空间$\mathcal F$包含的函数越多,其值越大.


算法/统计(监督)学习方法

分为生成方法(generative approach)(得到的模型称为生成模型)和判别方法(discriminative approach)(得到的模型称为判别模型

生成方法:数据由联合概率分布$P(X,Y)$学习,求出条件概率分布$P(Y\mid X)$作为预测模型,即得生成模型:

  • 模型表示了给定输入$X$产生输出$Y$得生成关系;
  • 典型的生成模型:朴素贝叶斯法和隐马尔可夫模型;
  • 此法可还原出联合概率分布$P(X,Y)$,而判别方法则不能;
  • 学习收敛速度更快:当样本容量增加时,学到的模型可以更快地收敛于真实模型;
  • 当存在隐变量时,此法仍可用,但判别方法不能用.

判别方法:数据直接学习决策函数$f(X)$或者条件概率分布$P(Y\mid X)$作为预测的模型,即为判别模型。

  • 关心的是对给定的输入$X$,应该预测什么样的输出$Y$;
  • 典型的判别模型:$k$邻近法、感知机、决策树、逻辑斯蒂回归模型、最大熵模型、支持向量机、提升方法和条件随机场等;
  • 学习准确率更高;
  • 可以对数据进行各种程度上地抽象、定义特征并使用特征,因此可以简化学习问题.

分类问题

分类问题:当输出变量$Y$取有限个离散值时(无论输入变量是离散还是连续),预测问题便成为分类问题.

  • 分类问题地模型称为分类器(classifier).
  • 分类器对输入进行输出的预测,称为分类,可能地输出称为,类别为多个时,称为多类分类问题.
  • 过程:从已知的训练集学习一个分类器,再用分类器对新的数据进行分类.
  • 评价分类器性能的指标一般是分类准确率(accuracy):对给定的测试数据集,分类器正确分类的样本数与总样本数之比。也就是损失函数是0-1损失时测试数据集上的准确率
  • 二类分类问题常用的评价指标是精确率(precision)和召回率(recall)。通常以关注的类为正类,其他类为负类

    • $TP$——将正类预测为正类数;
    • $FN$——将正类预测为负类数;
    • $FP$——将负类预测为正类数;
    • $TN$——将负类预测为负类数;
    • 精确率定义为
    • 召回率定义为
    • $F_1$值,为精确率和召回率的调和均值,即
    • 精准率和召回率都高时,$F_1$值也会高
  • 可用于分类的统计学习方法:$k$邻近法、感知机、朴素贝叶斯法、决策树、决策列表、逻辑斯蒂回归模型、支持向量机、提升方法、贝叶斯网络、神经网络、Winnow等.
  • 应用举例:
    • 银行业务,可以构建客户分类模型,对客户按照贷款风险的大小进行分类;
    • 网络安全,可以利用日志数据的分类对非法入侵进行检测;
    • 图像处理,可以用分类检测图像中是否有人脸出现
    • 手写识别,可以用分类识别手写的数字;
    • 互联网搜索,网页的分类可以帮助网页的抓取、索引和排序

标注问题

标注问题(tagging):是分类问题的一个推广,又是更复杂的结构预测(structure prediction)问题的简单形式。其输入是一个观测序列,输出是一个标记序列或状态序列

  • 评价标准同分类问题;
  • 常用的统计学习方法:隐马尔可夫模型、条件随机场;
  • 在信息抽取、自然语言处理等领域被广泛应用,是这些领域的基本问题;
  • 应用举例:如对英文句子中的名词短语进行标记。

回归问题

回归问题(regression):等价于函数拟合(选择一条函数曲线,使其很好地拟合已知数据且很好地预测未知数据) 回归模型正事表示从输入变量到输出变量之间的映射函数。

  • 常用的损失函数为平方损失函数,可以由最小二乘法求解。
  • 应用举例:市场趋势预测、产品质量管理、客户满意度调查、投资风险分析

数据学习笔记

数据源 → 数据收集 → 数据清洗 → 数据库/数据表 → 缺失数据补充 → 数据展示

数据展示方法:直方图、线图、点图、分布图等

缺失数据(Unknown Values)补充:

  1. 删除未知点:当过多参数缺失值时
  2. 以最频繁值填充:比如平均数mean
  3. 以关联 columns (variables)数据填充:比如找其他参数接近的值填充(法3比法2好、准确)
  4. 以相似 rows (observations)数据填充:(以欧式距离)计算距离,根据距离分配权重(用高斯kernel方程:knnImputation()),距离增加权重降低 (法4更合理,但要考虑到“不相关变量”的影响和超大数据的计算复杂性→可以用取样本计算做估计)

test

just test 长久没推送,测试一下

新家入住

闲来无事,把家从farbox搬到github了。至于为什么搬……先前是因为farbox迁址,后来发现还能用,但是模板出bug了,也有些有心无力的,就干脆搬家了。最近赶上dropbox被墙的噩耗……就算我不搬也得搬了……

搬家的大部分活都是在上上周末(6月15号)干的,差不多前天昨天装修完的。主要是clone了某某同学的现成模板,然后再根据自己需要修改的,不好意思忘记他的名字了,但是他的前一版是这个 http://webfrogs.me/ (版权在此,我也不算抄袭了哈)。嗯嗯,我拿到手就是这个风格,只是导航栏是中文的(某同学改的),至于为啥被我改成我现在这个样子(面目全非)了……嘛……说来话长。。。前前后后的折腾要感谢大前端sec君全力支持(掌声)。

主要是因为习惯了之前farbox的模板(那套是官方备选的之一),集简洁古风典雅于一身。。好吧,其实最主要是习惯了……然后就朝着原来那个风格靠拢了,连背景图片都直接搬过来用,你懂的。不过现在我自己改得比原来那套漂亮,嘿嘿(此处有鲜花和掌声/捂脸)。

测试了几篇日志,不得不说github posts的格式真是麻烦,每篇上面都有一坨……请问可不可以砍掉。。。想想farbox以前只有个title,日期是生成的,不禁觉得farbox创作者真是个好人。目前也没找到能直接用的编辑器(我要是说我现在是在sublime里写的,再保存成markdown文件,会不会被鄙视。。。)求高人指点。。。

测试的日志,朕决定保留上邪,其他的就先删了哈。。。撒花贴是这里哈这里。。

没想到这次撒花贴也水这么多了,那再水会儿吧。。。

最近发生是事儿太多,情绪也比较反复,总体来说就是比较郁闷,主要是没能下决心自己做主去做事情。不过还不算太糟,我相信zero的话,世界还是美好的。祝大家一切顺利。

上邪

仗剑遍天涯,相守冬梅下

(小曲儿)

你嫁衣如火灼伤了天涯

从此残阳烙我心上如朱砂

都说你眼中开倾世桃花

却如何一夕桃花雨下

红灯觅流萤,君归未有期

问谁能借我回眸一眼

去逆流回溯遥迢的流年

循着你为我轻咏的 上邪

再去见你一面

在那远去的旧年

我笑你轻许了姻缘

是你用尽一生吟咏 上邪

而我转身轻负你如花美眷

那一年的长安飞花漫天

我听见塞外春风泣血

轻嗅风中血似酒浓烈

耳边兵戈之声吞噬旷野

火光里飞回的雁也呜咽

哭声传去多远

那首你咏的 上邪

从此我再听不真切

敌不过的哪是似水流年

江山早为你我说定了永别

于是你把名字刻入史笺

换我把你刻在我坟前

飞花又散落在这个季节

而你嫁衣比飞花还要艳烈

你启唇似又要咏遍 上邪

说的却是:“我愿与君绝”