中甲

数据工作的科普总结

2019-08-14 18:57:19来源:励志吧0次阅读

首先说,这是一篇关于数据工作的科普文字,是我从事数据工作三年的一个小总结,因为不时会有人咨询我一些小问题,于是我大致整理了一下,主要是说了数据工作到底都包含了什么,其中关于数据仓库的我没有涉及,这里不会多讲,还得用教主的csdn名声帮转。 一、数据获取 1.爬虫:这个不用多解释了,就是从网页上爬取数据,比如爬取一个京东的三级品类的数据、爬拉勾网的职位信息数据。。。这个主要是网络编程,细节点主要是header、cookie、get/post请求、失败重试、验证码、重定向等,总之除了把数据从网页上抽取出来就是如何伪装自己是一个“人”在请求而不是机器自动发送的请求。至于破解验证码,简单的ocr能搞定(就是慢),自己写一个图像识别的算法也可以去尝试破解,实在不济就想办法绕过,比如访问wap版的url,我当年爬微博数据就这么搞过。 2.业务数据积累 业务数据库mysql、oracle之类 基于hadoop的数据仓库 埋点:这个概念很简单,就是在网页或者手机app中嵌入js脚本,将用户数据返回给服务器做记录,比如用户在什么时间在哪个网页点击了什么链接、图片等信息,一般要包含用户的设备号、用户userid、时间、校验码等,常见方法是js向服务器发送一个get或者post请求,请求中带着各种要记录的参数和值,请求打到nginx服务器上,由nginx写成日志。目前我们用的比较多的是openresty版本的nginx,里面有很多插件,支持写入消息队列等操作。 二、数据分析 数据分析,这是个见仁见智的过程,一方面要有处理数据的代码工程能力,另一方面又要有统计基础,比如能挖掘出什么变量有很强的特性(百分比、熵、分布规律等) sql:这个sql可能就不同于传统的sql了。因为从上一步数据获取得到的数据,很多可能是不规则的,比如它可能是一个json串,这种情况传统sql处理不了,mongodb或者一些非关系型数据库就派上用场了,但是nosql的语法跟传统sql会有很大差异。 python:pandas跟dataframe是python处理数据的两个好工具 R excel 三、建模 在我经历过的实际项目中,推荐、概率预估、分类、排序应该是四个主要的项目核心。 推荐?这个应该不比多说了吧,各个电商里面的“猜你喜欢”、今日头条网易新闻的新闻推送、微博段子等很多都是推荐的结果。推荐可以做策略,也可以走算法模型,策略就是如果我知道你是个胖子,我就给你推送大号的衣服,我知道你是个单身未婚女性,我就不会给你推送剃须刀。 概率预估:天气预报 分类:记得我毕业入职京东的第一个项目,就是做文本分类,当时目的是监控整个互联网的京东产品舆情情况。目标很简单,就是两个分类,好评还是差评。我们写爬虫定时抓取各大新闻网站、微博、知乎、百度贴吧等众多社交网站的文本,然后走了naive bayes,将新闻、微博等舆论自动判断为好评还是差评。当时效果还不错,fscore是0.8左右 排序:一个商品列表,商品展示的先后顺序对用户体验以及GMV会有很大影响,那么如何对商品展示顺序进行排序,这就是一个很深的水域了(没做过,不敢多说)。 算法:我很难几句话说清楚应该如何来做或者会用到哪些算法,因为这个是一个经验上的过程。比如变量很多的时候,可以用PCA去降维、比如在LR中可以加lasso去削弱一些特征的权重、比如在树模型中去修改正负样本权重,样本欠采样重采样。 当一个问题线性可分时 什么是线性可分?假如有两个类别对和错,在平面直角坐标系上画一条y=x的函数图像,线上面的是对,线下面的是错,能明确看出来的就是线性可分,不能明确看出来的就不是线性可分,至于什么是明确能看出来,这个需要看指标,比如准确率、召回率、F1-score 线性不可分时,听说svm也曾经叱咤风云一阵子。。。 什么是线性不可分?没时间解释了。。。 线性不可分,因为svm的核函数可以把原始分布映射到更高维度,就好比把郭敬明跟姚明放在一起俯视来看就是两个点(脑袋)无法做划分,如果慢慢从空中落到地面上,你会发现二人还有海拔的差异。 svm加核函数只是处理线性不可分的一种方法,其他的还有很多,比如树状的模型(ID3,C45,random forest,adaboost,gbdt。。。详情可以看《统计学习方法》的P?~P?) 从朴素到贝叶斯网络 不怎么好用的LDA(不是线性判别分析),可能是我的应用场景不太合适吧 神经网络相关,太多了,我还没有深入去玩儿这个东西,现在常见的CNN、RNN、ANN、GAN等等。。。(没有调查,不敢发言) 其他的一些算法也会出现在不同场合,比如隐马尔可夫、条件随机场(在做本科毕设做分词器的时候折腾过) 推荐系统里所谓“矩阵分解大法好”:SVD分解,LU分解等 算法的工具包 • python的sklearn • xgboost • TensorFlow • lightgbm • libsvm——svm的一个工具包 • fasttext——facebook的文本算法包 • svdfeature——矩阵分解 R的工具包 思想上的东西:做算法除了了解相关算法,还要有很大的脑洞,以及很多算法之间的融合,比如gbdt跟逻辑回归的融合,或者其他一些ensemble方法 四、工程化 数据接入 实际工程中,数据接入到项目里,基本就是实时接入跟离线接入两条路线, 实时接入:(flume/binlog)-(kafka/metaq)-(storm/kafkastream)-(redis/hbase),括号里都是同一个东西,斜线表示或 离线接入:我们主要用的是把hive数据写入到redis 封装服务 bottle/django,这是两个python的web框架,前者比后者轻量 为什么要封装服务,因为训练好的一个算法要实时向外提供数据服务啊肠胃敏感不能碰那些东西
小孩眼睛红有眼屎
改善冠心病的药物有哪些
小孩老是流鼻血是什么原因
分享到: