作为数据科学家,你会怎样应对这五大挑战?

  作为数据科学家,你会怎样应对这五大挑战?

  

  作为数据科学家,我在很多公司工作过,也遇到了很多问题和挑战。事实上,很多人都会经历这些挑战,就不同情况而言,也会有多种可行的解决方案。我将谈谈我曾面临的一些最常见或最困难的挑战。

  

  业务问题描述不当

  

  只要有一个工作人员出错,你就会面临这个挑战。数据科学专家的主要工作之一就是做业务问题描述——这也就是起初使用数据科学的原因。

  

  实际上,多数情况下描述不是某个数据科学专家自己,而是整个团队。团队里通常包括利益相关者,比如产品经理。但是,团队内可能出现技术脱节,任一方都可能对业务问题描述不当。

  

  产品经理可能会说:“我们要提更多建议,大家才能买的更多”,而数据科学专家可能会说:“向大家推荐产品的时候,超过80%的情况下我们要有95%的把握。”

  

  这两种问题描述总体来讲都很好,但都不够细化,或者只是勾勒出了问题的轮廓。问题描述是要从中找出解决方案,但是本身并不是解决方案。

  

  以下是一个更好的业务问题描述问题的例子:“顾客平均每个订单只买一件东西”。

  

  就是这么简单。一开始双方都想方设法将描述复杂化,但现在这样更高效。虽然没有解决方案,但人人都能看懂这种直接、通俗易懂的描述。

  

  示例描述说明一件东西不够,那么解决方案可能就是如何让顾客更可能买一件以上的东西。一种数据科学解决方案就是使用机器学习推荐系统。在工作中不要好高骛远,而要专注于眼下的实际问题,这很重要。

  

  数据失衡

  

  任何真正与数据打交道的人大多都会遇到数据失衡的问题。比如,遇到分类问题时使用逻辑回归给新数据赋值01。目标变量预计01各占50%的可能。然而,结果完全出乎预料。

  

  如果试着将一种新动物归类为狗或者猫,就需要猫狗各1000列的训练数据。这样,模型才足够辨别二者的不同之处。如果训练数据中猫有1900只,狗只有100只,那么就可能产生误解,认为多数新动物都是猫,这是个很常见的问题。

  

  可能的解决方案是使用其他补强少数部分的机器学习算法,或者创建新的综合数据。有一种技术叫不均衡学习(imbalanced-learn),可以采用下列具体方法进行过采样:

  

  ADASYN算法(Adaptive Synthetic,自适应综合过采样)

  

  BorderlineSMOTE算法

  

  KMeansSMOTE算法

  

  RandomOverSampler算法

  

  SMOTNC算法

  

  SVMSMOTE算法(Nominal andContinuous)

  

  这些过采样方法都非常有效,而且能解决数据不均衡问题。还有很多方法,比如欠采样、二者相结合、组合法、KerasTensorFlow的批量生成器。下面是过采样操作的示例:

  

  画一幅二维视图

  

  绘制已知数据点

  

  选择一个已知点

  

  找出最邻近点

  

  在邻近点与原始数据点之间画一条线

  

  然后随机将大头针丢在这些线上

  

  这就是新合成的过采样数据

  

  像RandomForest之类的一些机器算法函数库的参数要指定均衡数据也很简单。

  

  过拟合

  

  构建的数据科学模型将训练数据解析的太透彻就会出现过拟合问题。模型接收了训练数据中的详细信息,也包括数据中的噪音,所以过于具体,而这在预测新的真实数据时是无用的,结果模型就无法做出正确推断和归纳。模型的目的是处理好未见过的数据,所以要想办法找到能处理好新数据的解决办法并付诸使用。

  

  交叉验证

  

  移除重复或相似特点

  

  及早停止

  

  正则化

  

  集成法

  

  非参数机器学习算法

  

  使用更多数据训练

  

  特征不足

  

  制定业务问题描述之后,通常还需要开始寻找数据,然后形成自己的特点,输入到数据科学模型中作为训练数据。对公司数据表了解的越多,就会发现还可以以其它纵列为新特征。不过,一开始特征有限的问题还有另一种解决办法。

  

  构建当前度量的统计数据。例如,一般具有“每位用户点击量”特征,就会停止。但也可以从如下某一纵列中创建新的度量:

  

  每位用户的平均点击量

  

  每位用户的众数点击量

  

  每位用户75%百分位数点击量

  

  还有很多不同方式来描述该特征的范围。

  

  版本控制

  

  数据科学家非常习惯独自工作,喜欢对同一个重点项目创建20个不同版本的Jupyter Notebook。我们约定好了命名,但第二天就忘记了。然后,一切变得一团糟。但其实还有更好的方式——那就是GitGitHub

  

  Git

  

  GitHub

  

  如果数量较少的话,还有其它自制办法,比如用特殊数字方法(例:Notebook1Notebook2)创建新版本。

  

  这些工具可以通过创建区别于主干/代码库的独立分支,帮你形成自己的代码变化。然后就可以创建一个拉取请求来比较代码变化,在获得他人认可后并入原件。如此一来,你就不仅是在创建代码评审,而且还允许大家注意到并更加了解你的特定代码。

  

  如你所见,数据科学家会面临很多挑战,我所谈到的只是冰山一角。但这些问题是我经历最多的,我认为应该重点讨论的。希望我的方法能帮你顺利解决这些问题。

  

原文地址:https://www.cnblogs.com/jinsexiaomifeng/p/14318037.html