摘要: 做研究应该以问题为导向. 机器学习问题定义清楚了, 才能保证在解决它的过程中不出大的偏差. 准确地抓住问题, 是这一系列贴子的重要动机.
本贴起到承上启下的作用: 一方面前面已经有了问题定义的例子, 另一方面接下来会有更多的问题定义.
1. 机器学习问题定义的模式
多数机器学习问题可以按照如下约束满足问题 (Constraint Satisfaction Problem) 进行定义:
- 输入.
- 输出.
- 优化目标.
- 约束条件.
看上去平平无奇. 只有你自己去面对具体的问题, 才会知道是否思路清晰, 心如磐石.
2. 例子
来两个栗子吧.
2.1 最优决策树构建
- 输入: 结构化数据, 其中特征均为枚举型.
- 输出: 决策树 (分类器, 模型的输出是标签).
- 优化目标: 最小化叶节点数量.
- 约束条件: 与训练集的所有数据相容, 即在训练数据上的分类准确率为 100%.
说明:
- 有些训练数据本身有冲突对象, 即特征相同 (检测指标相同), 但标签值不同 (有的患病, 有的不患病), 这涉及数据的不确定性 (参见机器学习常识 1: 不确定性). 这时可以把约束条件改为第 1 个优化目标, 即最大化在训练数据上的分类准确率.
2.2 最优聚类
- 输入: 结构化数据, 其中特征均为实型;簇数 k k k.
- 输出: 聚类器, 它对每个实例 (可以是未见实例) 分配一个簇编号 (1 到 k k k).
- 优化目标: 每个实例到簇中心的距离和 (参见 机器学习常识 8: kMeans 中的 (1) 式).
说明: 优化目标也可以写成簇内每对实例的距离之和. 但这样计算量要大得多. 例如, 1,000 个实例分成 10 个簇, 每个簇刚好有 100 个实例. 则计算实例到中心的距离只需要进行 1,000 次距离计算, 而计算实例对的距离, 需要 10 * C(100, 2) = 500*99 次.
3. 问题定义并不决定解决方案
在解决机器问题的时候, 我们很可能不直接按照定义来设计算法, 因为这涉及模型的泛化性 (参见 机器学习常识 4: 分类问题的训练与测试). 这是后面很多贴子讨论的重要内容.