- 莫烦机器学习教程
- 有趣的机器学习
- 机器学习 (Machine Learning)
- 神经网络 (Neural Network)
- 卷积神经网络 CNN (Convolutional Neural Network)
- 循环神经网络 RNN (Recurrent Neural Network)
- LSTM RNN 循环神经网络 (LSTM)
- 自编码 (Autoencoder)
- 检验神经网络 (Evaluation)
- 特征标准化 (Feature Normalization)
- 选择好特征 (Good Features)
- 激励函数 (Activation Function)
- 过拟合 (Overfitting)
- 加速神经网络训练 (Speed Up Training)
- 处理不均衡数据 (Imbalanced data)
- 批标准化 (Batch Normalization)
- L1 / L2 正规化 (Regularization)
- 强化学习 (Reinforcement Learning)
- 强化学习方法汇总 (Reinforcement Learning)
- Q Leaning
- Sarsa
- Sarsa(lambda)
- DQN
- Policy Gradients
- Actor Critic
- Deep Deterministic Policy Gradient (DDPG)
- Asynchronous Advantage Actor-Critic (A3C)
- 强化学习教程
- Why?
- 课程要求
- 小例子
- Q-learning 算法更新
- Q-learning 思维决策
- Sarsa 算法更新
- Sarsa 思维决策
- Sarsa-lambda
- DQN 算法更新 (Tensorflow)
- DQN 神经网络 (Tensorflow)
- DQN 思维决策 (Tensorflow)
- OpenAI gym 环境库 (Tensorflow)
- Double DQN (Tensorflow)
- Prioritized Experience Replay (DQN) (Tensorflow)
- Dueling DQN (Tensorflow)
- Policy Gradients 算法更新 (Tensorflow)
- Policy Gradients 思维决策 (Tensorflow)
- Actor Critic (Tensorflow)
- Deep Deterministic Policy Gradient (DDPG) (Tensorflow)
- Asynchronous Advantage Actor-Critic (A3C) (Tensorflow)
- TensorFlow 教程
- 为什么选 Tensorflow
- 安装
- 神经网络在干嘛
- 处理结构
- 例子 2
- Session 会话控制
- Variable 变量
- Placeholder 传入值
- 激励函数 Activation Function
- 例子 3 添加层 def add_layer()
- 例子 3 建造神经网络
- 例子 3 结果可视化
- 优化器 optimizer
- Tensorboard 可视化好帮手 1
- Tensorboard 可视化好帮手 2
- Classification 分类学习
- Dropout 解决 overfitting
- CNN 卷积神经网络 1
- CNN 卷积神经网络 2
- CNN 卷积神经网络 3
- Saver 保存读取
- RNN 循环神经网络
- RNN LSTM 循环神经网络 (分类例子)
- RNN LSTM (回归例子)
- RNN LSTM (回归例子可视化)
- 自编码 Autoencoder (非监督学习)
- scope 命名方法
- Batch Normalization 批标准化
- PyTorch 教程
- Why?
- 安装
- Torch 或 Numpy
- 变量 (Variable)
- 激励函数 (Activation)
- 关系拟合 (回归)
- 区分类型 (分类)
- 快速搭建法
- 保存提取
- 批训练
- Optimizer 优化器
- CNN 卷积神经网络
- RNN 循环神经网络 (分类)
- RNN 循环神经网络 (回归)
- AutoEncoder (自编码/非监督学习)
- DQN 强化学习
- GAN (Generative Adversarial Nets 生成对抗网络)
- 为什么 Torch 是动态的
- GPU 加速运算
- Dropout 缓解过拟合
- Batch Normalization 批标准化
- Theano 教程
- Why?
- 安装
- 神经网络在做什么
- 基本用法
- Function 用法
- Shared 变量
- Activation function 激励函数
- 定义 Layer 类
- Regression 回归例子
- 可视化结果 回归例子
- Classification 分类学习
- Regularization 正规化
- Save 保存 提取
- 总结和更多
- Keras 教程
- Why?
- 安装
- 兼容 backend
- Regressor 回归
- Classifier 分类
- CNN 卷积神经网络
- RNN Classifier 循环神经网络
- RNN Regressor 循环神经网络
- Autoencoder 自编码
- Save & reload 保存提取
- Scikit learn 教程
- Why?
- 安装
- 选择学习方法
- 通用学习模式
- sklearn 强大数据库
- sklearn 常用属性与功能
- 正规化 Normalization
- 交叉验证 1 Cross-validation
- 交叉验证 2 Cross-validation
- 交叉验证 3 Cross-validation
- 保存模型
选择好特征 (Good Features)
作者: Morvan 编辑: Morvan
我们在这次视频中会分享到怎么选择一个好特征,和好特征意味着什么. 那什么是好的特征,你怎么知道它的好或坏呢?
注: 本文不会涉及数学推导. 大家可以在很多其他地方找到优秀的数学推导文章。
我们在这次视频中会分享到怎么选择一个好特征,和好特征意味着什么。
我们用机器学习的分类器作为贯穿这次视频的例子. 分类器只有在你提供了好特征的时候才能发挥最好的效果. 这也意味着找到好特征,是机器学习能学好最为重要的前提之一. 那什么是好的特征,你怎么知道它的好或坏呢?
我们用特征描述一个物体,比如在 A, B 两种类型中,我们有长度,颜色两种特征属性. 那么在用这些特征描述类别的时候,好的特征能够让我们更轻松辨别出相应特征所代表的类别. 而不好的特征,会混乱我们的感官,带来些没有用的信息,浪费了我们的分析,计算资源。
所以,我们来谈谈我们最喜欢的可爱狗狗. 金毛和吉娃娃. 他们有很多特征可以对比,比如眼睛颜色,毛色,体重,身高,长度等等。
为了简化接下来的问题,我们主要会需要观察毛色和身高这两组特征属性. 而且我们假设这两种狗只会存在偏黄色和偏白色两种情况. 那么我们先来对比毛色。
我们看看,这个虚拟世界上有偏黄色和偏白色的金毛各有多少只? 结果发现偏白和偏黄 的金毛都基本上各占一半. 吉娃娃呢? 同样也发现吉娃娃的颜色也是基本上对半分. 那我们把这点用数据的形式展示出来。
我们假设世界上的金毛和吉娃娃只有两种颜色,偏黄,偏白 . 然后我们用蓝色和红色分别代表吉娃娃和金毛所占的比例 . 如果在偏黄这边,比例是这样 ,就可以说明,在偏黄的方面,吉娃娃和金毛所占的比例基本相同,同样 , 如果偏白色的吉娃娃和金毛数量也基本相同. 这组数据就说明,如果给你一个毛色是偏黄色的特征,你是没有办法大概判断这只狗是吉娃娃还是金毛的. 这意味着. 通过毛色来观察这两种品种,是不恰当的,这个特征在区分品种上没有起到作用 . 那我们再换一个特征看看,吉娃娃和金毛能不能用身高来分类呢? 虽然说身高是一些数字,不过我们同样可以可视化这些身高和分类的关联. 接下来我们使用 python 来进行可视化的操作
我们先输入 python 中需要的模块, matplotlib 和 numpy. 然后用两个简称定义金毛和吉娃娃, gold 和 chihh, 定义每种狗都有 500 个样本. 然后开始生成一些身高的数据. 我们假定金毛的平均升高时 40cm, 吉娃娃是 25cm, 然后因为每只狗不一定都一样高,所以我们用 normal distribution 给身高加上一个随机数,金毛的的随机幅度可能大一点,吉娃娃的随机幅度可能小一点. 最后我们用柱状图来可视化化这些高度数据. 红色代表金毛的高度的个数,蓝色代表吉娃娃的高度个数。
我们拿这张图具体说说,图里面有很多数据,我们先举一这条来说明 , 可以看出,在这组数据中,如果给出高度 50cm, 基本上我们就能够判定这只狗是金毛啦,同样,大于 50cm 的,都将是金毛. 当我们看到这一条数据 , 我们也可以有相当大的信心说,在这个高度范围的,很可能是只吉娃娃,不过,当我们再切换到这组数据 , 我们还能不能那么肯定地说这是那种狗呢? 这个高度范围,因为两种狗都存在,而且每种狗的数量都差不多,所以在这个高度区间的狗狗我们就没办法判断. 所以高度是一个很有用的特征,但是并不完美,这就是我们为什么需要整合更多的特征来处理机器学习中的问题。
如果要收集更多的信息,我们就需要排除掉那些并不具备区分力的信息. 就像我们刚刚我们提到的颜色可能并不是有用的信息,而高度比较有用. 然后我们还需要更多的信息来弥补高度不能反映出的问题. 比如说,两种狗能跑多快? 体重是多少? 耳朵长怎样?
有时候,我们会有很多特征信息的数据,可是,有一些特征,虽然他们没有重复,可是意义却是相近的. 比如说在描述距离的时候,数据里有 里,和公里两种单位. 虽然他们在数字上并不重复,可是他们实际上都是同一个意思. 虽然机器学习中,特征越多越好,但是把这两种特征信息都放入机器学习,并不会对他有任何帮助. 所以我们要避免重复性的信息
同样还是这张图片,如果我想让机器学习预测从 A 走到 B 的时间,如果我有两种输入特征信息可以选,一种是 A, B 的经纬度,另一种是 AB 间的距离. 虽然这些信息都属于地理位置的信息,不过让计算机计算经纬度可能会比计算距离麻烦很多. 所以我们在挑选特征信息的时候也要加上这一条,避免复杂的信息. 因为在特征与结果之间的关系越简单,机器学习就能越快的学到东西。
所以,在选择特征的时候,我们得要时刻回想起这三点. 避免无意义的信息,避免重复性的信息,避免复杂的信息. 这就是我们这次机器学习简介中所聊到的如何区分好用的特征. 如果你想了解更多简单易懂,但是又很有用的机器学习小知识,欢迎订阅我的频道,留意我的更新. 也欢迎留言与我讨论你在机器学习中遇到的问题 和 你想知道哪些机器学习的知识. 我们下次见~ 拜拜
如果你觉得这篇文章或视频对你的学习很有帮助,请你也分享它,让它能再次帮助到更多的需要学习的人。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论