码迷,mamicode.com
首页 > 编程语言 > 详细

算法基础

时间:2020-10-10 17:55:27      阅读:24      评论:0      收藏:0      [点我收藏+]

标签:数据科学   spark   输出   区块   线性   统计   time   广告   理论知识   

算法基础

数据分析

数学基础

在进行算法建模时,深入了解数据情况,做各类探索性分析,统计建模等工作非常重要,这方面对一些数学基础知识有一定的要求,例如概率论,统计学等。这方面除了经典的数学教材,也可以参考更程序员向的《统计思维》,《贝叶斯方法》,《程序员的数学2》等书籍。
自我考核:理解实际项目中的数据分布情况,并使用统计建模手段,推断预测值的置信区间。

数据分析-数学基础-《程序员的数学》第一册
数据分析-数学基础-《程序员的数学:概率统计》第二册
数据分析-数学基础-《程序员的数学:线性代数》第三册
数据分析-数学基础-《统计学七支柱 》
数据分析-数学基础-区块链+神一样的金融科技与未来社会
数据分析-数学基础-《统计思维》-程序员数学之概率统计

可视化

在进行数据分析时,可视化是一个非常重要的手段,有助于我们快速理解数据情况,发掘数据规律,并排查异常点。对于各种不同类型的数据,会对应不同的可视化最佳实践,如选择不同的图表类型,板式设计,分析思路编排,人机交互方式等等。另一方面,可视化与数据报告也是我们与不同角色人群沟通数据insights的一个重要途径,需要从业务角度出发去思考可视化与沟通方式。这方面可以参考《Storytelling with Data》,《The Visual Display of Quantitative Information》等经典数据,同时也需要培养自己的商业背景sense,提升沟通能力。

自我考核:对内沟通方面,能使用可视化技术,分析模型的bad case情况,并确定优化改进方向。对外沟通方面,能独立完成项目的数据分析沟通报告。

数据分析-可视化-利用Python进行数据分析-https///pyda.apachecn.org/
数据分析-可视化-利用Python进行数据分析pyda-2e
数据分析-可视化-用数据讲故事 - 科尔·努斯鲍默·纳福利克

误差分析与调优
在做算法模型调优改进中,需要从数据分析的基础上出发来决定实验方向,这么做有几个好处:

从分析出发指导调优更有方向性,而不是凭经验加个特征,改个参数碰运气。哪怕是业务方提供的信息,也最好是有数据分析为前提再做尝试,而不是当成一个既定事实。
由分析发现的根源问题,对于结果验证也更有帮助。尤其在预测的数据量极大情况下,加一个单一特征很可能总体只有千分位准确率的提升,无法确定是天然波动还是真实的提升。但如果有分析的前提,那么我们可以有针对性的看对于这个已知问题,我们的调优策略是否生效,而不是只看一个总体准确率。
对于问题的彻底排查解决也更有帮助,有时候结果没有提升,不一定是特征没用,也可能是特征代码有bug之类的问题。带着数据分析的目标去看为什么这个特征没有效果,是模型没学到还是特征没有区分度等,有没有改进方案,对于我们评判调优尝试是否成功的原因也更能彻查到底。
数据分析会帮助我们发现一些额外的问题点,比如销量数据清洗处理是不是有问题,是不是业务本身有异常,需要剔除数据等。
这方面在业界有一些关于误差分析的探索研究,不过大多数都是基于分类问题的,例如《Identifying Unknown Unknowns in the Open World》,《A Characterization of Prediction Errors》等。可以在了解这些研究的基础上,结合具体的业务情况,深入思考总结误差分析的思路与方法论。

自我考核:在项目中形成一套可以重复使用的误差分析方案,能够快速从预测输出中定位到目前模型最重要的误差类别,并一定程度上寻找到根本原因。

数据分析-误差分析-Identifying Unknown Unknowns in the Open World- Representations and Policies for Guided Exploration

机器学习基础

传统机器学习

这块大家应该都非常熟悉了,初阶的学习路线可以参考周志华老师的《机器学习》,涵盖了机器学习基础,常用机器学习方法,和一些进阶话题如学习理论,强化学习等。如果希望深化理论基础,可以参考经典的《PRML》,《ESL》和《统计学习方法》。在实战中,需要综合业务知识,算法原理,及数据分析等手段,逐渐积累形成建模调优的方法论,提高整体实验迭代的效率和成功率。

自我考核:结合实际业务和机器学习理论知识,挖掘项目中算法表现不够好的问题,并通过算法改造进行提升或解决。

机器学习基础-传统机器学习-《百面机器学习_算法工程师带你去面试》中文
机器学习基础-传统机器学习-http///www.ai-start.com/ml2014/
机器学习基础-传统机器学习-Python大战机器学习 数据科学家的第一个小目标
机器学习基础-传统机器学习-统计学习方法 第二版

深度学习

近些年兴起的深度学习,已经成为机器学习领域一个非常重要的分支,在各个应用方向发挥了很大的作用。相对于传统机器学习,对于特征工程要求的降低成了其核心优势。另一方面,深度学习对于大数据量,大规模算力的应用能力很强,也一定程度上提升了整体的产出效果。由于理论方面的研究稍显落后,深度学习在实际应用中对于使用者的经验技能要求相对比较高,需要有大量的实战经验才能达到比较理想的效果。这方面的学习资料推荐Keras作者的《Deep Learning with Python》,以及《Hands-on Machine Learning with Scikit-Learn and TensorFlow》,而在理论方面推荐著名的“花书”《Deep Learning》。在学习理论原理的基础上,尤其要注意在实际算法应用中,能够通过观察各种指标与数据分析,找到提升模型的操作改进方向。

自我考核:能够在实际项目中,使用深度学习模型,达到接近甚至超过传统GBDT模型的精确度效果,或者通过ensemble,embedding特征方式,提升已有模型的精度。

机器学习基础-深度学习-《机器学习实战:基于Scikit-Learn、Keras和TensorFlow》第二版
机器学习基础-深度学习-dlbook_cn_v0.5-beta
机器学习基础-深度学习-http///www.ai-start.com/dl2017/
机器学习基础-深度学习-Python深度学习
机器学习基础-深度学习-百面深度学习

领域建模

目前我们的业务领域在时间序列预测,自然语言处理,推荐等方面,其它类似图像,搜索,广告等领域也都有各自的一些领域建模方法。在时间序列领域,包括了传统时序模型,如ARIMA, Prophet,机器学习模型,如划动窗口特征构建方法结合LightGBM,及深度学习模型,例如LSTM,seq2seq,transformer等。这方面可以参考Kaggle上相关比赛的方案分享,以及Amazon,Uber,天猫等有类似业务场景公司的分享资料。其它领域也是类似,通过了解历史技术演进,相关比赛,业界的方案分享与开源项目,会议论文来逐渐掌握学习建模方法,结合实际业务进行实践尝试,积累起更加体系性的个人知识技能。

自我考核:在项目中复现一个Kaggle获胜方案,检验其效果,分析模型表现背后的原因,并尝试进行改进。

机器学习基础-领域建模-Beginning Anomaly Detection Using Python-Based Deep Learning
机器学习基础-领域建模-DataFunTalk年度人工智能技术文章合集
机器学习基础-领域建模-Outlier Analysis 2nd Edition
机器学习基础-领域建模-广告-在线广告-互联网广告系统的架构及算法
机器学习基础-领域建模-推荐精选
机器学习基础-领域建模-深度学习推荐系统
机器学习基础-领域建模-计算广告 互联网商业变现的市场与技术 第2版

算法框架

数据处理框架

在项目实施过程中,会需要各类复杂的数据处理操作,因此熟练掌握此类框架就显得尤为重要。目前行业的标准基本上会参照Pandas DataFrame的定义,在数据量较大的情况下,也有许多类似的框架,如Spark,Dask,Modin,Mars等支持分布式运行的DataFrame,以及cuDF,Vaex等提升单机性能的改进实现。这方面经典的书籍可以参考Wes McKinney的《Python for Data Analysis》,在掌握基础数据操作的基础上,可以进而了解窗口函数,向量化性能优化等高级话题。另外SQL也可以做非常复杂的数据处理工作,有不少公司例如阿里会以SQL为主来构建数据处理流程,感兴趣的同学也可以学习一下SQL中各种高级计算的使用及优化方法。

自我考核:在已有项目中,能把至少三个使用apply方法的pandas处理修改成向量化运行,并测试性能提升。使用window function或其它方案来实现lag特征,减少join次数。

算法框架-数据处理框架-SQL

机器学习框架

机器学习方面的新框架层出不穷,一方面我们需要掌握经典框架的使用方式,理解其模块构成,接口规范的设计,一定程度上来说其它新框架也都需要遵循这些业界标准框架的模块与接口定义。另一方面对于新框架或特定领域框架,我们需要掌握快速评估,上手使用,并且做一定改造适配的能力。一些比较经典的框架有:

通用机器学习:scikit-learn,Spark ML,LightGBM
通用深度学习:Keras/TensorFlow,PyTorch
特征工程:tsfresh, Featuretools,Feast
AutoML:hyperopt,SMAC3,nni,autogluon
可解释机器学习:shap,aix360,eli5,interpret
异常检测:pyod,egads
可视化:pyecharts,seaborn
数据质量:cerberus,pandas_profiling,Deequ
时间序列:fbprophet,sktime,pyts
大规模机器学习:Horovod,BigDL,mmlspark
Pipeline:MLflow, metaflow,KubeFlow,Hopsworks
一般的学习路径主要是阅读这些框架的官方文档和tutorial,在自己的项目中进行尝试使用。对于一些核心接口,也可以阅读一下相关的源代码,深入理解其背后的原理。

自我考核:在LightGBM框架下,实现一个自定义的损失函数,并跑通训练与预测流程。

通用机器学习:scikit-learn,Spark ML,LightGBM
通用深度学习:Keras/TensorFlow,PyTorch
特征工程:tsfresh, Featuretools,Feast
AutoML:hyperopt,SMAC3,nni,autogluon
可解释机器学习:shap,aix360,eli5,interpret
异常检测:pyod,egads
可视化:pyecharts,seaborn
数据质量:cerberus,pandas_profiling,Deequ
时间序列:fbprophet,sktime,pyts
大规模机器学习:Horovod,BigDL,mmlspark
Pipeline:MLflow, metaflow,KubeFlow,Hopsworks

其它框架
其它比较常见且与算法工程师日常工作会有一些联系的有Web框架,爬虫框架等,最具有代表性的当属Flask和scrapy。这两者背后各自又是很大一块领域,尤其web开发更是保罗万象。感兴趣的同学还可以了解一下一些新兴的基于Python3的框架,例如FastAPI,其背后借鉴的许多现代框架的思想设计,包括数据验证,序列化,自动文档,异步高性能等,开拓一下知识面。

自我考核:实现一个简单的model serving http服务。

算法基础

标签:数据科学   spark   输出   区块   线性   统计   time   广告   理论知识   

原文地址:https://www.cnblogs.com/geekqi/p/13791919.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!