0%

(书)白话机器学习算法


每天唠叨多了,终于应该老老实实写读书笔记了.作为机器学习概念入门的书籍我觉得挺合适的.入门书籍关键是要讲清楚, 每个概念的由来,具体要解决什么问题,优缺点.知其所以然.

数据的准备

  1. 变量的确定: 变量也叫 属性 , 特征 或 维度
  • 二值变量

  • 分类变量

  • 整型变量

  • 连续变量

  1. 变量选择: 变量选择是一个试错的过程,,需要根据反馈结果不断更换变量

  2. 特征工程: 本质是对变量的处理, 得到更普遍性的维度

  • 重新编码: 两个不同变量有明显的从属关系

  • 降维 : 合并多个变量

  1. 数据修复
  • 近似
  • 计算
  • 移除

为模型选择合适的算法 (书的重点)

  1. 无监督学习:
    任务目标:指出数据中隐藏的模式.之所以称之为无监 督学习算法,是因为我们不知道要找的模式是什么,而是要依靠算法从 数据集中发现模式.
  • K均值聚类

  • 主成分分析(PCA)

  • 关联规则

  • 社会网络分析

  1. 监督学习:
    任务目标:使用数据中的模式做预测.之所以称之为监督学习算 法,是因为它们的预测都基于已有的模式.
  • 回归分析(Regression Analysis)

  • K最近邻(KNN)

  • 支持向量机(SVM)

  • 决策树

  • 随机森林(random decision forests)

  • 神经网络

  1. 强化学习:

无监督学习模型和监督学习模型在部署之后便无法更改. 强化学习不同于此.
强化学习模型自身可以通过反馈结果不断改进.

  • A/Btest

调整算法参数,优化模型

参数调优:
从结果来看,参数调节会产生三种结果

  • 过拟合: 实践中我们更多遇到的. 对已有数据拟合度最高,但可能使未知数据的预测准确度下降

  • 理想拟合: 在数据趋势和细微变化中取得平衡

  • 欠拟合 : 忽视数据中的基本模式,导致没有正确表现出数据的趋势

实践中我们经常会遇到过拟合的问题( 想想为什么 ).解决方式之一就是引入 惩罚参数.

根据准确度评价模型

  1. 使用指标

常用的指标有:

1.1 准确率

到底管不管用,最简单的一个指标就是: 你到底成功预测的占比有多少

1.2 混淆矩阵
type-1 error 和 type-2 error

关心两种错误记忆方式

  • type-1 error: 本来是对的,被弄成错的

  • type-2 error: 本来是错的,预计成对的 .例如男生怀孕了

1.3 均方根误差

  • 用来衡量预测值和实际值之间的误差

  • 因为每个误差都取了平方,所以大误差就被放大 了.这使得均方根误差对异常值极其敏感,对这些值的惩罚力度也更大.

算法

无监督学习

K均值聚类

一句话描述: 个体最可能属于哪个类别

应用举例: 把顾客或产品分入不同的群组,其中 k 表示群组个数.

wiki

在定义群组时,必须回答两个问题

  • 有多少个群组? (群组数量k 必须事先指定)

K 的确定常用陡坡图.

  • 每个群组中有谁? ( 认为每个数据点都是平等,不会有类似嵌套的关系 )

优点: 简单朴素

局限性

  • 每个数据点只能属于一个群组.

  • 群组被假定是正圆形的: 假设群组的实际形状是椭圆形, 那么在应用 k 均值聚类方法之后, 位于椭圆两端的数据点可能会 被划入邻近的群组

  • 群组被假定是离散的. k 均值聚类既不允许群组重叠,也不允许 它们相互嵌套

陡坡图

主成分分析

一句话介绍: 个体最明显的特征是什么

主成分分析是一种降维技巧, 它使得我们可以使用较少的变量来描述数据,这些变量即为主成分.

wiki

局限性:

  • 散度最大化: 这是主成分分析的前提. (即对数据点最分散的维度是最有用的)
  • 正交成分: 主成分分析算法总是生成正交主成分, 即成分之间 存在正交关系. 然而, 这个假设可能不正确, 因为信息维度之 间可能不存在正交关系.
  • 解释成分: 主成分分析算法面临的一个重大难题是, 必须对其 产生的成分进行解释. 但有时, 可能很难解释变量按某种方式 进行组合的原因.

关联规则

一句话介绍: 个体之间关系是怎么样的?

应用举例: 啤酒与纸尿片

wiki

识别关联规则的常用指标有 3个

  • 支持度: 指某个项集出现的频率占总交易数的比例

  • 置信度: 在X项出现的前提下, XY两项同时出现的占比: P(XY)/P(X). 缺点是,置信度会错估某个关联规则的重要性

  • 提升度: 在X项,Y项独立出现的前提下,XY两项同时出现的占比: P(XY)/ {P(X) *P(Y)}

评估关联规则实际是商品之间的组合, 这是指数增长.可以减少组合个数的方法有

  • 先验规则: 如果某个项集出现得不频繁,那么包含它的 任何更大的项集必定也出现得不频繁.

局限性:

  • 计算成本大:尽管利用先验原则可以减少候选项集的个数,但是当 库存量很大或者支持度阈值很低时,候选项集仍然会很多.一个解决办 法是,使用高级数据结构对候选项集进行更高效的分类,从而减少比较 的次数.

  • 假关联: 当元素的数量很大时,偶尔会出现假关联.为了确保所发 现的关联规则具有普遍性,应该对它们进行验证

社会网络分析

一句话介绍: 当关系变得复杂,就需要分析一张关系网

应用举例: 六度分隔理论

wiki

  1. Louvain方法

Louvain 方法 用来在网络中找出群组,它会尝试使用不同的聚类配 置来做如下两件事:

  • 把同一个群组中各个节点间的边数和强度最大化;

  • 把属于不同群组的节点间的边数和强度最小化

  1. PageRank 算法

根据链接的数量,强度以及来源对网络中的节点 进行排序. 这个算法有助于找出网络中占主导地位的节点, 但 对链接数不太多的新节点并不友好

监督学习

回归分析

wiki

看图吧

通过带权重的组合变量能够得到更准确的预测结果.有两个问题需要解决:

  • 如何得到最优权重组合?
  1. 梯度下降法

似于一步步走到山底下,梯度下降法先初步猜测合适的权重组合,再通过迭代逼近更准确的精度

  1. 随机梯度下降法

一次梯度下降法 得到的结果有可能是极值,而不是最优值.

  • 如何解释它们?
  1. 回归系数 : 回归预测变量权重的正式名称是回归系数

  2. 标准化回归系数: 经过标准化之后,预测变量的系数被称为 标准化回归系数 可以作为不同关系强度的对比

  • 适合场景
  1. 预测变量之间的关系不强

  2. 无异常值

  3. 趋势可以用直线表示 ( 也就是不适合趋势是曲线的)

K最近邻

一句话介绍: 物以类聚

看图吧

wiki

特点:

  • k 最近邻算法根据周围数据点的类型对某个数据点进行分类.

  • k 表示用作参考的数据点的个数,可以使用交叉验证法来确定.

  • 当预测变量数目不多,并且类别大小差别不大时,k 最近邻算法才能产生非常好的效果.不准确的分类可能会被标记为潜在异常

局限性:

选择临近的k值 影响预测的准确度

支持向量机

一句话介绍: 世界不是非黑即白,可能还有灰色地带

看图吧

局限性:

  • 不适合小数据集: 样本量少意味着用来对分界线进行准确定位的数据也少

  • 不适合多组数据: 支持向量机每次只能对两组进行分类.解决方法之一是 多类支持向量机

  • 要是数据存在大量重叠: 当两组的数据点存在大量重叠时,靠近边界的数据点可能更容易发生分类错误

决策树 和 随机森林

决策树通过询问一系列二元选择题来做预测.

随机森林: 群体的智慧

通过随机组合变量来构建多棵决策树,然 后把这些决策树聚集起来,形成随机森林. 每个随机的决策树都有自己的问题,但因为最优答案只有一个, 通过组合具有不同优缺点的模型,往往能强化正确的预测结果

特点:

  • 自助聚集法

通过随机化的方式,使随机生成的决策树之间的关联度最小

  • 集成方法

相比于子模型, 集成模型的预测准确度更高 (本例遵循少数服从多数的原则). 这是因为准确的预测模型会彼此强 化,错误的则会彼此抵消.

关键是: * 子模型避免犯同样的错误 *

神经网络

这里我觉得有点奇怪, 概念上是分为: 输入层,隐藏层,输出层,损失层. 但我们的神经并不是层次的,我们对世界的认知并不是层次递进的,更像一个 Maze. (来自西部世界的概念).

A/Btest 和 多臂老虎机

看图吧

A/B 测试: 探索新的可能性,还是应该利用已有的一切?一种策略是先探索可用选项,然后把所有剩余资源分配给表现最佳的选项.

epsilon 递减策略: 给表现最佳的选项逐渐分配更多的资源.

虽然 epsilon 递减策略在大多数情况下能够提供比 A/B 测试更高 的回报,但是确定资源分配的最佳更新速度并非易事.

总结

知道了概念, 看代码至少让你有一个方向.我接下来会去看推到过程么? 当然不会,先作为一个实用主义者去踩坑.

随机森林体现的集体智慧, A/Btest 的策略选择游戏.这两个感觉可以单独成篇.

欢迎用Dogecoin支持我不断记录