飞道的博客

别大言不惭了!很多人其实只是伪数据科学家

418人阅读  评论(0)

全文共3862字,预计学习时长13分钟

 

图源:unsplash

 

首先声明,笔者并不是在贬低自学和有抱负的数据科学家,事实上,笔者认为这一领域特别适合有激情的自学者。

 

但你不得不承认,那些仅仅上过一门在线课程就自称专家,却对该领域的基本理论一无所知(或不感兴趣)的人,确实该被敲打敲打。

 

作为21世纪最性感的高薪职业,数据科学家受到越来越多人的追捧。如今,似乎连与行业不相关的人都在推销自己是数据科学家,这无可厚非。然而有一群“华而不实”的人,几乎没有实践经验,一些甚至没有理论基础,却在一家家公司里行骗,就有点儿过分了。

 

笔者在与现有或潜在数据科学家面试或合作的经历中,发现了一些细节,能区分华而不实和真才实学的数据科学家。

 

笔者整理出了一份清单来区分这些人,这份清单有助于招聘经理进行人员筛选;你也可以用它进行自查,如果存在这些缺点,就要赶紧在变得华而不实之前加以改正啦。

 

 

不费心去探索数据

 

数据探索是所有机器学习项目的第一步。如果不花时间熟悉数据,不了解其特性,在成品产出前,错误的决策树将会浪费大量时间。

 

没有将数据可视化

 

启动任何数据相关项目的最佳方式是探索数据可视化。如果读者正在实践机器学习,那么很可能要处理大量的高维数据;在Excel中读取.csv或者使用df.describe()函数并不是合适的数据可视化替代方案。

 

弗朗西斯·安斯库姆用著名的四重奏阐明了数据可视化的重要性:

 

安斯库姆四重奏

 

每个面板中的数据集都有基本相同的汇总统计数据:x和y均值、x和y样本方差、相关系数、R平方值和最佳拟合线都(几乎)相同。如果未将数据可视化,而是依赖于汇总统计数据,可能会认为这四个数据集有着相同的分布,但看一眼就知道情况显然不是这样。

 

数据可视化允许识别数据中的趋势、伪迹、异常值和分布;如果跳过这一步,当然也可以盲人摸象般做项目的剩余部分。

 

没有清理数据

 

如果数据是混乱的会发生什么?数值输入错误;转化出错;传感器紊乱。在为一个没有前途的项目浪费数月时间之前,解决这些问题很重要。尤其关键的是,要在模型投入生产之前解决这些问题。记住:输入垃圾就会输出垃圾。

 

图源:unsplash

 

有很多很好的办法以识别数据中的问题,但是没有很好的办法识别所有问题。数据可视化是很好的出发点,尽管这是一个相当繁复的手动过程,但是其回报相当丰富。

 

其他方法包括自动异常值检测和条件摘要统计。例如,人类身高的柱状图:

 

成人身高柱状图

 

用这些数据来训练模型无疑会导致十分糟糕的结果。但是通过检查数据,可以发现数值为100的异常值是以米而不是厘米为单位的。这可以通过将这些值乘以100进行修正。

 

正确地清理数据不仅可以防止模型接受错误数据的训练,而且在这种情况下,还可以挽救100个原本可能被抛弃的数据点。如果不能正确地清理数据,往好了说,就是把钱留在了桌子上,往坏了说就是建立一个有缺陷的模型。

 

不必为特征选择和设计而烦恼

 

神经网络最酷的一点是,可以直接将所有的原始数据输入进去,它会学习到目标函数的一些近似值。实际上,这是最糟糕的一点。

 

这的确很方便,但是效率低而且易于崩溃。最糟糕的情况在于,这使得新手数据科学家依赖深度学习,造成其技术不断下降,而通常情况下,更传统的机器学习方法是更合适的。虽然没有“正确”的方法来进行特征选择和设计,但是需要为几个关键的结果努力:

 

· 数据格式化:计算机是死脑筋。数据需要被转换为模型易于理解的格式:神经网络,例如介于-1和1之间的数字;分类数据应为独热编码;定序数据(可能)不应表示为单个浮点字段;对指数分布的数据进行对数转换可能是有益的。可以说,数据格式中存在很多依赖模型的细微差别。

 

· 降维:数据越多并不意味着越好。通常,在拟合模型之前,需要减少特征的数量。这通常涉及到删除不相关和冗余的数据,或将多个相关字段合并为一个字段。

 

· 创建特定于域的功能:基于数据创建自有功能通常是高效的。如果有计数数据,就可能需要将其转换为相关的二进制阈值,例如“≥100”对“<100”,或“是0”对“不是0”。如果有连续的数据x和z,则可能需要在特征集中,除了x和z,还要包含x², xz, 和z²。这是一个高度依赖于问题的实践,但是如果处理的好,就可以极大提高某类模型的模型性能。

 

大多数外行认为,机器学习就是黑箱,从原始数据中神奇地得出结果,事实并不是这样。

 

图源:picography

 

 

没有选择适当的模型类型

 

机器学习历史悠久,在这段历史的大部分时间里,它被称为“统计学习”。

 

随着Scikit Learn和TensorFlow等易于使用的开源机器学习工具的出现,再加上现在收集的大量数据和无处不在的高速计算机,使用不同的机器学习模型类型进行实验,变得前所未有的简单。

 

然而,不再要求机器学习实操人员对不同模型类型工作方式的实际理解,也导致他们对不同模型类型的工作方式的不理解,这并非是巧合。

 

什么都试试

 

GitHub库中充斥着Kaggle项目和在线课程作业的组合,如下所示:

 


  
  1. from sklearn import *
  2. for m in [SGDClassifier, LogisticRegression, KNeighborsClassifier,
  3. KMeans,KNeighborsClassifier, RandomForestClassifier]:
  4. m.overfit(X_train, y_train)

 

这显然是不知所云,但很多在线课程推荐了这个方案,真是羞耻。

 

这是在浪费时间,并且很容易诱导人们选择不合适的模型类型,因为碰巧能在验证数据上很好的运行。(记得要保留一个验证集,对吧?)

 

选择所使用的模型类型应根据基础数据和应用程序的需要,并应该设计数据以匹配所选模型。选择模型类型是数据科学过程中的一个重要部分,直接比较一定量的合适模型可能是有道理的,但是盲目的穷举以找到“最佳数量”模型是一个危险信号。

 

图源:unsplash

 

实际上并不了解不同的模型类型是如何工作的

 

如果输入“车龄以年计算”和“行驶公里数”,为什么KNN(近邻算法)分类器不能很好地工作?用线性回归预测全球人口增长有什么问题?为什么随机森林分类算法不适用含1000个类别的独热编码变量的数据集?

 

如果无法回答这些问题,没关系!有很多很好的资源可以用来学习这些技术的工作原理;在申请一份此领域的工作之前,一定要阅读并理解他们。

 

但更大的问题不在于人们不了解工作原理,而是在于对底层的原理不关心且不感兴趣!

 

如果喜欢机器学习却不喜欢原理,那么就不会真正喜欢机器学习;这样的人迷恋于自己所认定的概念。如果不想了解模型是如何工作的或者适合于数据的,那么当它们不可避免地出错时,排除故障将无法实现。

 

不知道想要准确性还是可解释性,或者为什么必须要抉择

 

图源:unsplash

 

所有的模型都各有利弊。在机器学习中,一个重要的抉择就是准确性和可解释性之间的权衡。

 

一个模型可以预测很差但是容易理解,且可以解释过程高效;也可以非常精确,但是内部运作方式却是个谜,或者也可以选择一个折中方案。

 

选择哪种类型的模型应该根据以上两者孰重孰轻来决定。

 

如果目的在于数据建模并且获得可操作的洞察力,那么显而易见,应选择可解释的模型,比如决策树或线性回归。如果应用于生产级预测,例如图像注释,那么可解释性就退居其次,随机森林或神经网络可能更合适。

 

以笔者的经验而言,那些不理解这种权衡的数据科学家,那些甚至不考虑解释性为什么重要而直接追求准确性的数据科学家,并不适合训练模型。

 

图源:unsplash

 

 

没有使用有效的度量和控制

 

尽管占50%的单词和64%的字母,数据科学(datascience)中的“科学”(science)一词往往被忽略。

 

对于华而不实的数据科学家而言,在理想条件中盲目应用单一指标作为模型评估并不少见。不知情的利益相关者很容易被诸如“90%准确率”之类的大胆说法所引诱。尽管这些说法在技术上是正确的,但在当前任务中却极不合适。

 

没有建立一个基线模型

 

笔者有一个胰腺癌的检测,准确率超99%。难以置信是吗?但这是真的,点击链接即可尝试:https://upload.wikimedia.org/wikipedia/commons/3/31/ProhibitionSign2.svg

 

如果看到一个红色的圆圈,上面有一条线,那么测试结果是阴性的。如果你看到绿色的复选标记,那么你在撒谎。

 

事实是,99%的人没有胰腺癌(实际上比例更大,但是为了解释,假设是99%),所以笔者愚蠢的小“测试”在99%的时间里是准确的。

 

因此,如果我们关心的是准确性,那么任何用于诊断胰腺癌的机器学习模型至少都应该和这种非信息性的基线模型一样好。如果来应聘的应届小帅哥声称他开发了一个准确率95%的工具,那么与一个基准模型进行比较,请确保他的模型表现比概率更好。

 

用错了度量

 

图源:unsplash

 

接着上面的诊断示例,确保正确的度量很重要。

 

对于癌症诊断来说,准确度实际上是一个糟糕的指标;降低准确度如果意味着敏感度的增加,通常这样做更可取。假阳性的成本是多少?病人的压力,以及浪费的时间和资源。假阴性的代价是什么?死亡。

 

了解模型的实际含义,并了解这些含义如何控制度量选择,就可以清晰地从人们的脚本中窥见真正的数据科学家。

 

搞砸了训练/测试线

 

这是一个大问题,并且非常普遍。正确地测试一个模型对于数据科学过程是绝对必要的。

 

有很多出错的可能性:不理解验证和测试数据之间的区别,在拆分之前执行数据扩充,没有制止数据泄露,完全忽略数据拆分......除此以外,如果不知道或者不关心如何创建一个合适的持久的集,那么所有工作都是在浪费时间。

 

...将Tensorflow导入为tf

 

以上所述,仅仅是为了辨别筛掉此行业的一小部分人。只要经验丰富,就很容易发现这些伪数据科学家。但是如果刚刚开始实操,也许很难把网红AI老师SirajRavals和吴恩达区分开。

 

如果觉得上述任何一个例子内涵到你了,这是好事,因为这意味着你关心如何把事情做好。继续学习,继续攀登,别为这些装模作样的人所烦扰。

 

留言 点赞 关注

我们一起分享AI学习与发展的干货
欢迎关注全平台AI垂类自媒体 “读芯术”

(添加小编微信:dxsxbb,加入读者圈,一起讨论最新鲜的人工智能科技哦~)


转载:https://blog.csdn.net/duxinshuxiaobian/article/details/105592068
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场