什麼?多個體多維度分析效率能從3天壓縮到30分鐘?
在進行機器學習的時候,我們需要對單個體進行多維度分析,比如說在日誌審計系統,我們需要對每一個操作賬戶進行操作次數統計,總操作次數統計,方差,極值,中值,突變度等計算。有時,也要計算非工作時間的訪問,方差,極值,中值,突變度等資料。
過去的做法是,讀取每一個賬戶的操作記錄,然後分別計算一系列指標,最後通過cluster_foreach迴圈方式解決......
這種方式的缺點是顯而易見的,10000個人需要計算10000次,實際的專案經驗是百萬人級別,叢集任務過多對硬體的要求也比較大,專案執行起來難度就比較大。
在長期實踐中,OpenFEA團隊不斷探索創新,引入numpy模組,創新性的解決了多個體多維度計算問題,在32萬個體的總過2000萬條記錄上,使用該模組,在未使用叢集的情況下,在30分鐘時間內順利計算了40個指標,充分展現了fea在資料分析領域的強大計算能力和極佳的便捷性。
在這裡,筆者不打算介紹具體的專案,而是把計算過程中用的核心概念,核心方法展示出來,結合一個小資料,讓大家在實際操作中具體的感受numpy模組是什麼,能進行什麼運算,怎麼呼叫運算等,這樣便於大家抓住本質。
1、numpy模組的高階運算——呼叫方法
原始資料如下:
1)和udf0.df_row_lambda 函式結合
a=@udf a by udf0.df_rowl with (lambda x:np.sum(x))
可以看見,np.sum()就是對整行求和
a=@udf a by udf0.df_row_lambda with (x:np.sum(x[:7]))
可以發現,x[0:7]就是對a行取前7列的意思
2)numpy模組的實質
提供了一個多維函式模組,28=np.sum(1,2,3,4,5,6,7)
可以通過lambda函式呼叫
2、numpy模組的高階運算——設定範圍
原始資料如下:
1) 對第1行“取0到2求和”,第2行“取1到3求和”,...
a=@udf a by udf0.df_rowl with (lambda x:np.sum(x[x["start"]:x["end"]+1]))
可以看見,在lambda運算中,“運算元素”可以隨意組合
2) 對第1行“取0到2求和”,第2行“取1到2的最大值”,...
l a=@udf a by udf0.df_rowl with (lambda x:np.sum(x[x["start"]:x["end"]+1]) if x["start"]%2==0 else np.max(x[x["start"]:x["end"]]) )
把if語句也套用進來了,處理的靈活性大大增強
3)對大於3的值求和
a=@udf a by udf0.df_rowl with (lambda x:np.dot(x[0:],x[0:]>3))
3、numpy模組的高階運算——錯位運算
原始資料如下:
1)第一行的“1到3列”和“0到2列”錯位相減,然後求和
(2-1)+(3-2)+(4-3)=3
[email protected] a by udf0.df_rowl with (lambda x:np.sum(np.array(x[x["start"]+1:x["end"]+2])-np.array(x[x["start"]:x["end"]+1])))
可以看到x[7]和x["start"]是同一個值
2)函式詳解
np.array()函式實現了,把序列x[0:3]="1,2,3"轉換成為矩陣(1,2,3)
np.sum()函式同時支援序列元素求和及矩陣元素求和
4、numpy模組的高階運算——必要說明
1)numpy模組中的方差,標準差的定義和fea基本運算中的agg_group模組中的定義不一致,全樣本方差和樣本方差不同(除以n還是除以n-1的差別)
2)numpy模組中average函式和其他函式的處理細節不是很一致,使用前需要驗證,確認可以滿足演算法需求
5、numpy模組的高階運算——運算優勢
1)把複雜的錯位運算,變成一個lambda表示式,可以對百萬級的運算個體同時計算某個測量指標,而不要分個體逐一計算,徹底解決機器學習中,個體多,維度多的分析計算需求。
2)可以和lambda函式,深度套用,靈活多變,非常適合科學計算。
3)語言接近矩陣語言,稍微有點矩陣知識即可靈活使用。
6、總結
1)通過上面的演示,相信大家可以通過lambda函式,順利呼叫numpy模組,對資料進行切塊分段計算,錯位計算也都有了一定的認知。
2)需要提醒大家的是,資料分析本身就是很具有靈活性,在實際專案中,結果是否符合自己的期望,是否正確,很多時候不是“工具本身”說了算,而是“專案需求”要怎麼做,確切搞明白每一段程式碼運算結果的“專案含義”。
3)再次提醒大家,numpy模組異常豐富,本文只是一個模型、展示,將相關的概念、用法、技巧“簡單點到”而做不到“包教包會”,需要大家根據專案本身,提出概念、模型,然後翻譯成numpy語言。
相關推薦
什麼?多個體多維度分析效率能從3天壓縮到30分鐘?
在進行機器學習的時候,我們需要對單個體進行多維度分析,比如說在日誌審計系統,我們需要對每一個操作賬戶進行操作次數統計,總操作次數統計,方差,極值,中值,突變度等計算。有時,也要計算非工作時間的訪問,方差,極值,中值,突變度等資料。 過去的做法是,讀取每一個賬戶的操作記錄,
JMeter性能測試3.0時代之-多維度的圖形化HTML報告
emp 監聽器 平臺 spa destroy nature 更多 b- pla 在上一篇博客JMeter性能測試3.0時代之-全新JMeter插件管理中我說會寫真正的JMeter 3.0新特性,時隔兩周,總算在這個周末,暫停其他安排,來繼續這個未完成的系列。本
Spark Streaming實戰對論壇網站動態行為pv,uv,註冊人數,跳出率的多維度分析,實時統計每天pv,uv的sparkStreaming結合redis結果存入mysql供前端展示
論壇資料執行程式碼自動生成,該生成的資料會作為Producer的方式傳送給Kafka,然後SparkStreaming程式會從Kafka中線上Pull到論壇或者網站的使用者線上行為資訊,進而進行多維度的線上分析 資料格式如下: date:日期,格式為yyyy-MM-dd ti
多執行緒計算pi效率對比分析
繼續昨天的計算pi的程式 分配不同的執行緒數量得到的不同的執行時間對比 可以看到很明顯的 從一個執行緒變成兩個執行緒確實時間減少了一般左右,但是繼續增加執行緒數量卻不怎麼影響結果。這是因為我電腦的CPU型號為Intel 酷睿i3 370M,雙核四執行緒 ,所以雙執行緒
語義網技術(2):jena的使用——更多示例和程式碼分析(上,例子從例2-例5)
已經畢業了,論文也交了,總算輕鬆一點了,現在也準備把RDF相關知識和Jena的程式設計技術統一做個總結,寫個系列的部落格,一來是相當於給自己做個筆記,二來也是分享一些自己學到的東西,提供一些資源,以供大家共同學習。這次準備把Jena示例中其他幾個程式的程式碼解釋一下,而後將簡
使用awk生成access日誌多維度分析報表
原由: 某天某專案網站被一些IP惡意DDOS,因為沒有賣運營商的流量清洗等等之類的防護服務,導致該專案無法訪問 產生了三個處理需求: 需要識別惡意IP進行封堵 需要定位被攻擊的頁面查詢攻擊弱點 需要定位攻擊頻繁的時段進行監控 這三個需求
記一次構建SaaS平臺專案失敗後的反思-技術VS產品哪個更重要-如何權衡-程式設計師職業生涯的自我批判與成長-業務型程式設計師的商業視角-多維度分析研發型企業管理之道
記一次構建SaaS平臺專案失敗後的反思 前言: 筆者從2017年起開始著手將公司現有的軟體系統改造成多租戶模式,以降低整
資料智慧之多維度分析系統的選型方法
##引言 前文回顧:《資料智慧時代來臨:本質及技術體系要求》作為本系列的第一篇文章,概括性地闡述了對於資料智慧的理解以及推出了對
個推CTO深度解析資料智慧之多維度分析系統的選型方法
##引言 前文回顧:《資料智慧時代來臨:本質及技術體系要求》作為本系列的第一篇文章,概括性地闡述了對於資料智慧的理解以及推出了對
java-mybaits-00502-案例-映射分析-一對一、一對多、多對多
per username nfa view 2.3 puts opened org double 1、一對一查詢【類屬性即可,association 】 案例:查詢所有訂單信息,關聯查詢下單用戶信息。 註意:因為一個訂單信息只會是一個人下的訂單,所以從查詢
真是奇怪,js可以,jq卻開啟了多個定時器,誰能解答一下
eve body stop 時鐘 time 就會 set () 方式 timer = setInterval(mar,30); //鼠標移上去清除時鐘 box.onmouseover = function(event){
八.200多萬元得到的創業教訓--從3款產品學到的3點
ans 產品 class track 實現 理解 family 開發人員 一個人 摘要:先後開發了3款移動互聯網產品,有兩款產品是從創意階段就參與進去,從中學會了最重要的3點:高速叠代,不斷試錯。了解用戶的需求。 健生幹貨分享:第8篇 第一款社交app:移客ekeo
架構師之路--從原理角度來分析性能
獲得 clas 思維 一體化 活性 數據拷貝 行業經驗 靈活性 時間 埃及艷後Cleopatra,很小的時候看過媽媽買的一本書裏把她的名字翻譯成克婁巴特拉,裏面有很多描寫她美貌的場景描寫。然而這個以美貌著稱的奇女子,我看到書裏,凱撒和安東尼真正傾心的是Cleopatra
【fhq Treap】bzoj1500(聽說此題多碼上幾遍就能牢記fhq Treap)
def queue new merge gre 超過 discus make || 1500: [NOI2005]維修數列 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 15112 Solved: 4996[Submit]
多租戶:在Oracle12.2中 從Non-CDB遷移到PDB,從PDB遷移另一個CDB中
oracle12c 多租戶 遷移 PDB 1、從PDB或者Non-CDB遷移到另一個CDB的PDB準備從PDB或者Non-CDB遷移到CDB容器數據庫中PDB,由於PDB和Non-CDB遷移到CDB的步驟幾乎相同,PDB和Non-CDB遷移非常相似,共同進行處理。準備:CDB1:目標pdb數據
MySQL 多表查詢實現分析
OS 是你 例子 dump table 多表查詢 一個 ont 由於 1、查看第一個表 mytable 的內容: mysql> select * from mytable; +----------+------+------------+-------
Java多態內存分析
inf java servle 指向 phi println dog xtend public HttpServlet.java package cn.bjsxt.oop.polymorphism.myServlet; public class HttpServlet {
『TensorFlow』分布式訓練_其二_多GPU並行demo分析(待續)
print all set represent proto copyright keys 20M runners 建議比對『MXNet』第七彈_多GPU並行程序設計 models/tutorials/image/cifar10/cifer10_multi_gpu-trai
【k8s安裝】使用kubeasz安裝多主多從k8s集群(簡單快捷)
bec 改變 路徑 介紹 tps 進行 github 自帶 如果 使用kubeasz安裝多主多從k8s集群 一、項目介紹 kubeasz為github上開源的一個用於安裝k8s集群的項目,目前很多方法安裝k8s,但是多是單master多node的安裝方式,但是kubeasz
對於多功能計算器需求分析說明
1. 引言 1.1編寫目的 這個多功能計算器是給一些初高中學生和小學生進行便捷計算的軟體。 1.2背景 說明 a.軟體名稱:多功能計算器 b.本專案的任務提出者、開發者:崔賀傑 劉波 本軟體的PM:劉波 使用者:每天需要進