如何判断程序员的机器学习水平?

2021-03-10 10:37:34 +08:00
 hakunamatata11

评判标准就一个:你的机器学习水平能不能用在工作上?

毕竟我们招人不是为了看你的水平到底有多牛逼,而是想看你是否能帮我们分摊工作,在工作中创造价值。有些人的机器水平很高,但是完全没办法用在工作上就是白搭。

不多废话了,直接放出我之前用过的一套面试题,你们感受一下:

我也自己整理了一套模拟面试题(内容包含面试问题,错误案例,正解),戳我报名免费领取~

假设一个背景:

假设你在大学 /培训期间完成了一个人工智能项目,你在你的简历中是这样描述你的项目的:

基于 Python 语言开发完成了遥感影像分类系统,检测自然环境、土地利用和植被生态。在该项目中通过对图形进行归一化和标准化完成了预处理,随后基于 TensorFlow/Keras 实现了卷积、池化和激活等 CNN 结构。随后通过添加 BatchNormalization 和 Dropout 等结构进一步提高精度并防止过拟合。在项目后期使用数据增强进一步优化了性能,最终达到了 95%的识别率。

我会先抛出这几个问题:

Q1:

我看到这里你使用了 BN 和 Dropout 的方式防止了过拟合,那么请你说一下什么是过拟合以及过拟合的表现形式。

你可能会这么回答:

过拟合的就是模型的准确率非常低。具体来说就是在训练集和验证集上准确率都很低。

错误原因:

这句话看上去非常专业,实际上从根本上就是错的。属于对知识的理解错误。

过拟合就是由于过于追求完美拟合现有数据集,以至于会将单个数据点的特征认为是一般特征。结果就是预测新数据的能力极差,表现特征就是在训练集上准确度很高,但是在验证集上准确度很低。下图就很好地展示了欠拟合,拟合和过拟合三种情况下的情况。

Q2:

我看到你这里写的最终达到了 95%的识别率,那么这个 95%是在什么条件下获得的?对于这个值有做其他的处理么?

你可能会这么回答:

我这里是用的 Keras 默认的评判指标,应该是叫做 accuracy 。我看到这个指标结果很不错所以没有调整。

错误原因:

其实在这个问题中我想要考察的是:对 Keras 库进行深入的研究。同时对于模型效果评价体系没有一个全面的认知,对于为什么要使用 accuracy 说不出利弊。

所以重点要打出识别率有什么弊端,再简单介绍一下交叉验证就可以了。

从这个问题可以看到判断机器学习的水平除了看最基本的理论基础以外。重点是去还会深挖你的简历里的项目,判断你的项目的能力(也就是未来的工程能力)以及从一些优化处理的问题来判断你对业务的理解以及自己独立分析和实现的能力。

所以如果想扛过机器水平的考察,你需要准备以下几个方面:

1 、理论基础(包括:GBDT,分类树,回归树,关联规则,监督学习,Bias 和 Variance 模型等等,参考资料:《机器学习理论基础》 《机器学习 Python Data Analysis 》

2 、把自己项目中的数据处理,建模,可视化等内容都了如指掌(参考自己的简历)

3 、培养自己的编程能力(只要每天保持刷题的习惯基本没啥大问题,参考资料:《机器学习 KNN 算法入门 Machine Learning - KNN algorithm 》

4 、数据处理以及数据挖掘的能力(参考资料:tornadomeet 机器学习 笔记

我也自己整理了一套模拟面试题(内容包含面试问题,错误案例,正解),戳我报名免费领取~

当然所有学习都不是一蹴而就的,在工作中学习的过程中不断查漏补缺,不断提高自己的水平才是最重要的。希望每个同学都能拿到自己的 dream offer~

605 次点击
所在节点    推广
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/760226

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX