作者:TeamMachineLearning,这是一个机器学习爱好者团队,他们热衷于建立一个有希望在数据科学/机器学习方面建立事业的有抱负的年轻毕业生和专业人士的环境。
机器学习很复杂。你可能会遇到一个令你无从下手的数据集,特别是当你处于机器学习的初期。
在这个博客中,你将学到一些基本的关于建立机器学习模型的技巧,大多数人都从中获得经验。这些技巧由MariosMichailidis(a.k.aKazanova),KaggleGrandmaster在2016年3月5日现在排名第3位的在线研讨会上共享的。在线研讨会有三个方面:
3.问答——本博客列出所有参与者在研讨会所问的问题。
成功的关键是坚持不懈。
1.你解决ML问题的步骤是什么?请从头描述。
以下是解决任何ML问题时我所采取的步骤:
1.了解数据——下载数据后,开始探索功能。查看数据类型。检查变量类。创建一些单变量-双变量图来了解变量的性质。
2.了解度量优化——每个问题都有独特的评估指标。你必须理解它,特别是它如何随着目标变量的变化而变化。
3.确定交叉验证策略——为避免过拟合,确定你在初期阶段已经设置了交叉验证策略。一个很好的CV策略将帮助你在排行榜上获得可靠的得分。
4.启动超参数调整——一旦CV在位,尝试使用超参数调整来提高模型的精度。它还包括以下步骤:
2.你解决问题时所采用的模型选择和数据处理技术是什么?
一般来说,我尝试(几乎)一切的大多数问题。原则上:
对于其他一切,我使用渐变增压机(如XGBoost和LightGBM)和深入学习(如keras、Lasagne、caffe、Cxxnet)。我决定使用特征选择技术来保留/删除元模型的模型。我使用的一些特征选择技术包括:
每个问题的数据操作可能不同:
3.你能详细说明交叉验证策略吗?
交叉验证意味着从我的主集中随机地创建了2个集。我用第一个集建立(训练)我的算法(让我们称之为训练集),并用另一个评分(让我们称之为验证集)。我重复此过程多次,并始终检查我的模型在测试集上对于我要优化的度量执行的方式。
过程可能如下所示:
4.你能解释一些用于交叉验证的技术吗?
5.你如何提高机器学习的技能?你使用什么训练策略?
我在2做了资料的汇总。加上很多自己的研究。同时,编程和软件(java)和很多kaggling。
6.哪些是数据科学家最有用的python库?
以下是一些我发现最有用的解决问题的库:
7.当所有的变量本质上是明确的时,什么是有用的ML技术/策略来估算缺失值或预测分类标签。
估算缺失值是关键的一步。有时你可能会发现缺失值的趋势。以下是我使用的一些技巧:
到目前为止,我大多数使用自制解决方案(Java)。我的第一场比赛必须汇总三千万行的交易数据,所以我不得不解析数据,而且需要将内存使用率降至最低。
不过,从那时起,我做了一些很好的投资,成为排名第一。现在,我可以访问linux服务器的32个内核和256GBM内存。我也有一个geforce670机器(用于深度学习/gpu任务)。此外,我现在主要使用Python。但是,如果你真的有兴趣获得最高的收益,你也可以考虑使用亚马逊的AWS,因为如果你使用它很多,成本可能会很高。
10.人们如何通过改变超参数调整建立大约80个模型?
11.如何提高Kaggle排名?
这不是一个一夜之间的事情。你只需要继续学习。以下是我的一些建议:
12.你能告诉我们有关机器学习中使用的一些有用的工具吗?
以下是我最喜欢的工具的列表:
13.如何从机器学习开始?
另外,你应该去上AndrewNg的机器学习课程。除此之外,你可以浏览一些好的博客,如mlwave,fastml,analyticsvidhya。但最好的办法是亲自动手。做一些kaggle!先解决有“知识”标志的比赛,,然后开始解决一些主要的问题。尝试解决一些过去的。
14.在Kaggle和一般的大数据集上哪些技术最好?如何解决内存问题?
具有高基数的大数据集可以通过线性模型得到很好的解决。考虑稀疏模型。像vowpalwabbit这样的工具。FTRL、libfm、libffm、liblinear是python中的优秀的工具矩阵(像csr矩阵)。考虑在数据的较小部分集成(如结合)模型的训练。
15.涉及机器学习的项目的SDLC(软件开发生命周期)是什么?
16.你最喜欢的机器学习算法是哪一种?
当然是梯度提升决策树。但在不同的任务中,所有可能都是好的。
17.哪种语言最适合深入学习,R或Python?
我更喜欢Python。我认为它更程序化。R也很好。
18.在数据科学中转行的人需要从技术技能中获得什么?因为我没有开发人员背景,个人项目是展示我的知识的最好方式吗?
将业务问题转化为机器学习的能力,并将其转化为可解决的问题。
19.你是否同意在一般特征中工程(探索和重组的预测)比改进预测模型在提高准确度上更有效?
原则上是。我认为模型的多样性比一些真正强大的模型要好。但这取决于问题。
20.是否需要Kaggle排行榜顶尖的技能,也是你作为数据科学家日常工作所需的技能?或者它们相交还是有些不同?我可以认为数据科学家的工作是基于Kaggle比赛吗?如果一个人在Kaggle上做得很好,那么她会在她的职业生涯中成为一名成功的数据科学家吗?
有一定比例的重叠,特别是在制作预测模型时,通过python/R处理数据并创建报告和可视化。Kaggle不提供(但你可以得到一些想法):
我认为在业界总是留有优秀的kagglers的空间。只是数据科学可以有许多可能的路线。例如,不是每个人都倾向于自己创业,或者是面对客户,而是解决非常特殊的(技术)任务。
21.哪些机器学习概念必须在Kaggle比赛中表现良好?.
22.你如何看待数据科学家工作的未来?自动化会扼杀这份工作吗?
23.如何在R和Python中使用整体建模来提高预测的准确性。请引用一些现实生活中的例子?
24.什么是最好的python深度学习库或文本分析框架?
我喜欢Keras(因为现在支持稀疏数据),Gensim(对于word2vec)。
25.在现实生活中,通过这些竞赛获得的知识有多大价值?我经常看到通过合并许多模型赢得的比赛…这是现实生活中的情况吗?还是在真实的制作系统中解释模型比这些庞大的组合更有价值?
26.我应该学习关于机器学习算法的核心,还是继续尝试形成对算法的理解并使用它们(在比赛中,并解决现实生活中的商业问题)?
你不需要核心。每天都有出现的新东西——有时很难跟踪它。这就是为什么你应该专注于任何算法的正确使用,而不是投资于一个。
27.哪些是不平衡数据的最佳机器学习技术?
我在这里不做特别的处理。这归功于优化正确的度量(对我来说)。用几句话来解释很难。有很多技术的抽样,但我从来没有使用过。有些人正在使用Smote。我认为试图更改目标变量的主分布是没有价值的。你只是最终得到增加或改变主要几率。如果你真的想要一个界限来决定你是否应该采取行动–你可以根据主要几率进行设置。
我可能不是最好的回答这个问题的人。我个人从来没有发现它(显著)有助于改变目标变量的分布或目标变量中的几率的感知。可能只是其他算法在处理这个任务时比其他算法更好(例如基于树的应用程序应该能够处理这个)。
28.通常,营销研究问题主要通过标准回归技术来处理–线性和逻辑回归,聚类,因子分析等。我的问题是机器学习和深度学习技巧/算法对营销研究或业务问题有用吗?例如,如何解释一个神经网络的输出到客户端是有用的?有什么资源可以参考吗?
它们在某种意义上是有用的,你可以很有可能提高准确度(在预测上我们说营销反应)与线性模型(如回归)。解释输出是很困难的,在我看来,这不是必要的,因为我们一般都会走向更多的黑盒子和复杂的解决方案。
作为数据科学家,你应该努力确保有一种方法来测试一些不可观察(测试)数据的结果有多好,而不是想了解为什么你得到的预测类型。我认为从复杂模型中解压缩信息是一个很好的话题(对研究有用),但是我不认为这是必要的。
29.如何在Kaggle建立合作团队?
30.我已经完成了基本的机器学习课程(理论)。现在我开始了我的实践历程。你刚刚推荐通过scikitlearn文档,现在人们都在说TENSORFLOW是下一个scikitlearn,所以我应该通过scikit还是TF是一个不错的选择?
我不同意这个“人们在说TENSORFLOW是下一个scikitlearn”的说法。Tensorflow是一个完成某些机器学习任务(如深入学习)的框架。我想你可以学习两者,但我会从scikit开始。我个人不知道TensorFlow,但是我使用的是基于张量流的工具(例如Keras)。
31.我在任何比赛中面临的主要挑战是清理数据,使其可用于预测模型。你如何克服呢?
32.如何在没有强大的机器的情况下计算大数据?
你应该考虑一些如vowpalwabbit和在线解决方案的工具,可以逐一解析所有内容。你需要在编程方面投入更多资源。
33.什么是特征工程?
简而言之,特征工程可以理解为:
34.哪些数学技能在机器学习中很重要?
一些基本概率以及线性代数(例如向量)。然后一些统计数据也有帮助。像平均值、频率、标准偏差等。
看一些代码和一些没有(只是一般的方法)。
37.你可以推荐一些知识竞赛吗,不一定在水平上竞争如kaggle但是可以为你的技能打基础?
38.你对于使用Weka或R和Python来学习机器学习有什么看法?
我喜欢Weka。它有一个很好的文档——特别是如果你想学习算法。不过我不得不承认,它不像R和Python的一些实现一样有效。它有很好的覆盖。Weka也有一些很好的可视化——特别是对于一些基于树的算法。我可能会建议你把重点放在R和Python,除非你的背景完全是使用Java。