想象一下你的老板给了你 10 万张无标签的图片,并要求你将它们分类为凉鞋、裤子、靴子等等。
现在你有一大堆没有标签的数据,你需要为这些数据打上标签。你该怎么办呢?
这个问题是司空见惯的。许多公司都在数据的大海里遨游,不论是交易数据、物联网传感器产生的海量数据、安全日志,还是图像、语音数据等等,这些都是未标注的数据。
用这么少的标注数据,对于所有企业中的数据科学家来说,建立机器学习模型都是一个单调乏味的过程。
以 Google 的街景数据为例,Gebru 不得不弄清楚如何用很少的带有标签的数据为五千万张图片贴上汽车标签。
在 Facebook,工程师们使用算法来标注 50 万个视频,这个任务使用其他的方法需要花费 16 年的时间。
这篇文章将向您展示如何用一个下午的时间标注数十万张图片。无论是标注图像还是标注传统表格数据(例如,识别网络安全攻击或可能的部件故障),都可以使用同样的方法。
手工标注的方法
对大多数数据科学家来说,如果他们被要求去做某件事,他们首先会想一想有没有其他可以替代的人去做这件事。
但是 10 万张图片可能会让您在 Mechanical Turk 或类似的其他竞争平台上花费至少 30,000 美元。
你的老板期望以较低的代价来做这件事,因为毕竟,他们聘请了你。现在,除了你的工资以外,她没有其他任何的预算(如果你不相信我,请去 pydata)。
你深吸了一口气,想了一下你可以在一个小时内标完 200 张图片。所以这意味着在三个星期内不停地工作,你就可以标完所有的数据!哎呀!
建立一个简单的模型
第一个想法是标记一部分图片,用它们训练一个机器学习模型,然后用来预测剩下的图片的标签。
对于这个练习,我使用的是 Fashion-MNIST 数据集(你也可以用 quickdraw 来制作自己的数据集)。
有十个类别的图像要我们去做识别,下面是它们的样子:
看到这个数据集我很高兴,因为每幅图片都是由 28×28 像素组成的,这意味着它包含 784 个独特的特征/变量。
对于我要写一篇博客文章来说,这些特征很好,但是在现实世界中你是绝对看不到这样的数据集的,它们往往要么窄得多(传统的表格业务问题数据集),要么宽得多(真实图像要大得多,而且由不同的颜色组成)。
我使用最常见的数据科学算法来建立模型,包括:逻辑回归,支持向量机(SVM),随机森林和 Gradient Boosted Machines(GBM) 。
我根据它们在 100、200、500、1000 和 2000 张图片上的标注效果来评测它们的性能。
如果你看到这个地方了,那么你应该放慢速度,仔细研究一下这张图。这张图里有很多好东西。
哪个算法最好呢?(如果你是一个数据科学家,你不应该为这个问题而困惑。)问题的答案其实取决于需求环境。