我通过Python进行情感检测中学到了什么

作为2017年9月23日至24日在巴丹举行的Tech Caravan的一部分,我被要求发表有关实用机器学习的演讲。我决定创建一个情感检测程序,例如Microsoft的Emotion API。 它接受上面带有面孔的图像,猜测脸上的情绪,然后将其打印在控制台上。 我所构建的内容能够获得〜75%的准确性。

在这个故事中,我将谈论在构建情感检测程序时学到的东西,因此我将不详细介绍其构建方式。 请查看幻灯片的链接和底部的代码。

如果有人以前做过,那是可行的

当我第一次同意进行演讲时,我不知道如何构建情绪检测程序,但是我认为如果有人能够做到,那么我可能会做到。 它可能不尽如人意,但却是可行的,而这正是我所做的。 我的准确率大约为75%,这还不错。

找到好的功能

我认为除了眼睛,眉毛和嘴唇的线条长度和角度之外,我还可以尝试找到更好的功能来解决此问题,但是我受时间的限制,没有时间来提取更好的功能。

都是关于数据的

如果您的数据很糟糕,那么您的机器学习算法将毫无意义。 您应该获得很多彼此不同(多种)的数据(卷)。 这样,模型就不会过拟合,并且可以预测从未见过的数据。

数据也应正确处理。 删除不相关的特征 (降维)和规范化数据可提高构建模型的准确性。

获取原始数据,提取功能,清理和处理结果数据是构建此程序过程中最大,最困难的部分。 一切都与数据有关。

选择正确的算法

有备忘单可以帮助您选择所需的算法,例如:

  • Microsoft Azure机器学习备忘单
  • scikit-learn算法速查表

如果这些算法不太奏效,请尝试为数据增加更多的数量和种类。 另外,您可以尝试与该算法相关的其他算法。 例如,我最初使用随机森林和AdaBoost作为集成学习算法,但发现极端随机树在此问题上的表现更好。

坦白说,考虑到75%的准确度,这些算法对于该问题不是最理想的。 我本可以使用卷积神经网络,它更适合需要从图像中学习的任务。 我认为我没有足够的处理能力,所以我没有使用它。

函数式编程适用于机器学习

有人会认为这是可行的,因为我正在处理数据,但是我必须自己看看。 因此,我在Python中构建了Maybe 。 读取Python代码(已经非常容易读)变得更加令人满意,从而使它更具可读性。 也很容易看到问题所在,因为它现在看起来像管道。 使它并行工作会更好,但由于我没有计划,因此需要更多的重组。 但是因为它是功能性的,所以很容易使事情并行进行。 凭借这一经验,我深信函数式编程可以与机器学习一起使用,并且将来我会继续这样做。

幻灯片和代码

代码胜于雄辩

如果您想知道我是如何建造的,请在这里查看我的幻灯片:

http://jpa-emotion-detection-slides.surge.sh/#slide=1

您可以在这里查看代码:

johnpaulada /情感检测泊坞窗
情感检测泊坞窗–在Python中几乎(从零开始)进行情感检测。 此仓库包含Dockerfile和 github.com。

如果您喜欢这个故事,请尽可能按一下拍手按钮!
如果您有任何意见,请在下面写下!
非常感谢!