熱線電話:13121318867

登錄
首頁精彩閱讀數據工作的科普總結
數據工作的科普總結
2017-11-28
收藏

數據工作的科普總結

首先說,這是一篇關于數據工作的科普文字,是我從事數據工作三年的一個小總結,因為不時會有人咨詢我一些小問題,于是我大致整理了一下,主要是說了數據工作到底都包含了什么,其中關于數據倉庫的我沒有涉及,這里不會多講,還得用教主的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會有很大差異。
pythonpandas跟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框架,前者比后者輕量
為什么要封裝服務,因為訓練好的一個算法要實時向外提供數據服務啊


數據分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數據分析師資訊
更多

OK
客服在線
立即咨詢
日韩人妻系列无码专区视频,先锋高清无码,无码免费视欧非,国精产品一区一区三区无码
客服在線
立即咨詢