机器学习-何为优秀的特征

背景介绍

选择好的特征能让分类器变得有效,这意味着找到好的特征是机器学习中最重要的工作之一。但是怎么样才能获得好的特征?你怎么才能知道,如果你正处理二分类问题。那么好的特征能够使得辨别两个不同的类变得容易。举个例子:假设我们想要编写一个分类器用来区分两个种类的狗:灵缇犬和拉布拉多犬:

这里我们会使用两个特征分别是狗的身高(单位英寸)和狗的眼睛的颜色 :

针对这个示例让我们做一些关于狗的假设让问题变得简单些。首先,我们假设灵缇通常会比拉布拉多高,其次假设狗的眼睛只有两种颜色分别是蓝色和棕色 ,同时我们假设它们眼睛的颜色与狗的品种无关。这代表其中一个特征是有用的,而另外一个特征没有用。

想要知道为什么?我们利用简单的数据集进行可视化展示,我将创建一个这样的数据集:先从狗的身高开始,你认为这个特征可以起到什么作用?

通常灵缇会比拉布拉多高几英寸,但并非总是如此, 毕竟还是会存在很多变异,所以当我们提到特征我们需要考虑如何在总体中找到不同的值 。

让我们用 Python 编程示例,我创建了一个数量为 1000 的狗的样本,灵缇和拉布拉多各占一半,我还会给它们设置一个身高的值。在这个例子里假设灵缇平均身高为28英寸,拉布拉多平均身高为24英寸,现在所有的狗都存在一些差异,假设身高是正态分布的,我们使得所有的值增加或减少4英寸,这样我们可以得到两个数组的数据, 我们用直方图将它们进行可视化 ,我会增加一个参数使得红色代表灵缇,蓝色代表拉布拉多:

import numpy as npimport matplotlib.pyplot as pltgreyhounds = 500labs = 500grey_height = 28 + 4 * np.random.randn(greyhounds)lab_height = 24 + 4 * np.random.randn(labs)plt.hist([grey_height,lab_height],\color=['r','b'],stacked=True,edgecolor='white')plt.show()

让我们运行一下脚本:

这展示了在总体中特定身高的狗的数量,上图有许多的数据让我们将其简化逐步分解看,我们从分布在最左边的开始看: 高20英寸的会是哪种狗?想象下让你通过狗的身高来预测这只狗,是拉布拉多还是灵缇? 你会怎么做 ,你可以得到每个种类的概率在给定狗的身高的情况下 ?

看来这很可能是只拉布拉多!我们继续看下去在直方图的右边会看到身高为35英寸的狗,我们相信35英寸身高的狗必定是灵缇! 那身高在中间的会是什么种类的狗呢? 你会发现图中提供的信息略少,因为每种类型的狗的概率十分相近。身高是一个有用的特征,但它不够完美 。

所以在机器学习中你需要多个特征,否则你只能写if语句根本算不上是分类器,为了弄明白需要使用哪种特征让我们做个思考实验。 假设你是分类器如果你试着辨识这只狗是拉布拉多还是灵缇,你需要知道哪些其他的信息? 你也许会问它们头发的长度或者跑多快或者它们的体重 ,你到底需要使用多少特征更多是艺术而非科学。

但是依据经验请考虑下你需要解决多少问题,现在让我们看一下另外一个特征:狗的眼睛颜色 。这个示例中我们假设狗的眼睛只有两种颜色 :蓝色和棕色。假设它们眼睛的颜色与狗的品种无关 ,这时直方图会是这个样子 :

对于大部分值呈50/50分布,可见这个特征起不到什么作用。 因为它与狗的种类不相关,在你的训练数据里包含这样一个无用的特征会影响到分类器的准确性,有时候凑巧这样的特征是有用的,特别是当你只有少量的训练数据, 你的特征也需要是独立的,独立特征提供不同类型的信息,假设我们已经有一个特征:身高。

该特征来自我们的数据集,请问它是否有用?如果我们增加另外一个特征:例如身高(单位cm)。回答是否定的,因为身高的英寸数和厘米数是完全相关的特征。

好的方法是除去高度相关的特征将它们从你的训练数据集中除去 ,因为许多的分类器不够聪明,没有办法知道身高的英寸数和厘米数是一回事情,所以它们会重复计算该特征的重要性。

最后若你希望你的特征易于理解,举个新的例子:假设你希望预测两个城市之间邮寄一份信需要多少天?城市之间的距离越远需要的时间越久,距离将是一个好的特征,即两个城市间的距离的公里数。更糟糕的一对特征是利用经度和纬度坐标来代表城市的位置。

这是为什么呢?从距离来看我能很容易想到这代表了邮寄一份信需要花费的时间,但是学习经度、维度和时间之间的关系是十分困难的。

需要提供更多的例子从训练数据中获取例子,你可以使用很多技术来搞清楚哪些是有用的特征,甚至找到最佳的特征组合。

原文发布于微信公众号 - yale记(python_yale_learning)

原文发表时间:2019-08-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券