① 演算法工程師的項目落地能力指什麼
1、深刻理解業務,能根據業務需求調整實現方案的能力
就拿茶具的例子說,客戶更關注不良品不能漏,寧可殺錯,不可放過,所以這時候我們就得把業務朝著不良品檢出率方向去優化;
2、結合業務需求的熟練工程實現能力
我們拿到一個項目需求以後,大腦中得立馬有一個框架,這個項目輸入輸出是什麼?得用到哪幾個模型?適合什麼樣的業務框架?開發需要多久?調優需要多久?能達到什麼樣的指標?然後按照自己的規劃進行開發調優。
3、對數據敏感,有較強的數據處理與數據維護管理能力
演算法工程師一定要對數據敏感,看一眼數據就能知道這些數據能支持什麼樣的任務?有沒有坑?數據該怎麼標注與維護高效省成本?
4、對新技術的求知慾與探索學習能力
目前人工智慧技術剛興起,技術和演算法迭代很快,所以對演算法工程師追新技術,新解決方案的能力也有要求,不能落後太久。比如現在有個推理性能的瓶頸,攻關了很久沒有突破,但是可能就已經有開源的方案了,而這就需要我們經常查資料,看論文了。
5、各部門的溝通合作能力
這是個通用能力,演算法工程師當然也需要,就像這個茶具項目中的一樣,演算法工程師接到不合理的需求一定要及時溝通,並用自己的專業知識,給出更合理的解決方案,各部門一起為項目落地努力。
② 是否可以自己動手實現OCV字元驗證呢
可以通過OpenCV實現字元驗證。OpenCV是一個開源計算機視覺庫,其提供了豐富的圖像處理和計算機視覺演算法,包括字元識別。下面是一些步驟:
准備樣本數據集:需要先收集一些字元圖片作為樣本,這些圖片應該有多種不同的字體、大小、顏芹沒襲色等,以便於訓練出具有一定泛化能力的模型。
2. 圖像預處理:對於每張圖片,需要進行預處理來使其適合用於訓練和測試。比如去除雜訊、二值化、字元分割等。
3. 特徵提取:從每張圖片中提取有用的特徵信息,例如輪廓、邊緣等。
4. 訓練模型:使用提取出的特徵信息作為輸入,將其與對應的真實標簽(即正確的字元)嫌兄進行訓練。
5. 測試模型:將訓練好的模型用於未知的字元圖片上,得到預測結果並與真實標簽進行比較。
6. 調整模型:根據測試結果調整模型參數,提高模型准確率。察譽
以上是一個基本的流程,當然具體實現過程會涉及到更多的技術細節和演算法。需要注意的是,在實現OCV字元驗證時,還需要考慮對抗攻擊、模型解釋性等問題,以保證模型的可靠性和實用性。
總之,OpenCV是一種非常強大的工具,通過合理利用其提供的各種功能,可以實現許多有趣的計算機視覺應用。
③ 發現公司里的大數據開發掙得很多,想轉行,
轉行這個詞彙,一直是職場上此起彼伏的一個熱門話題,相信很多朋友都想過或已經經歷過轉行。工作可謂是我們生存乃至生活的主要收入來源,誰都希望擁有一份高薪又穩定的工作,以此來改善自己的生活和實現自己的大大小小的夢想!但又擔心轉行後的工作待遇達不到自己的預期,顧慮重重……
不少想進入大數據分析行業的零基礎學員經常會有這樣一些疑問:大數據分析零基礎應該怎麼學習?自己適合學習大數據分析嗎?人生,就是在不斷地做選擇,然後在這個選擇過程中成長,讓自己從一棵小樹苗變成參天大樹。就是我們每個對大數據充滿幻想終於下定決心行動的學員的選擇,我們給了自己4個月的時間,想要在大數據分析這個領域汲取養分,讓自己壯大成長。
【明確方向】
通過國家的戰略規劃,看到BAT的大牛們都在大數據行業布局,新聞媒體追捧這大數據分析行業的項目和熱點,我想如果我還沒有能力獨立判斷的時候,跟著國家政策和互聯網大佬們的步調走,這應該是錯不了的。
【付諸行動】
明確了方向之後,我就整裝待發,剛開始是在網路上購買了很多的視頻教程,也買了很多書籍,但是最大的問題就在於,我不知道怎麼入手,沒關系,有信心有耐心肯定能戰勝困難,我堅持了一個月,學習的節奏越來越亂,陸陸續續出現了很多的問題,沒人指導,請教了幾個業內的朋友,但對方工作繁忙,問了幾次之後就不好意思了,自學陷入了死循環。
意識到我學習效率的低下,以及無人指導的問題想想未來的康莊大道,咬咬牙告訴自己,一定好好好學,不然就浪費太多時間最後還會是一無所獲。最後找到組織(AAA教育)一起學習進步!
大數據分析零基礎學習路線,有信心能堅持學習的話,那就當下開始行動吧!
一、大數據技術基礎
1、linux操作基礎
linux系統簡介與安裝
linux常用命令–文件操作
linux常用命令–用戶管理與許可權
linux常用命令–系統管理
linux常用命令–免密登陸配置與網路管理
linux上常用軟體安裝
linux本地yum源配置及yum軟體安裝
linux防火牆配置
linux高級文本處理命令cut、sed、awk
linux定時任務crontab
2、shell編程
shell編程–基本語法
shell編程–流程式控制制
shell編程–函數
shell編程–綜合案例–自動化部署腳本
3、內存資料庫redis
redis和nosql簡介
redis客戶端連接
redis的string類型數據結構操作及應用-對象緩存
redis的list類型數據結構操作及應用案例-任務調度隊列
redis的hash及set數據結構操作及應用案例-購物車
redis的sortedset數據結構操作及應用案例-排行榜
4、布式協調服務zookeeper
zookeeper簡介及應用場景
zookeeper集群安裝部署
zookeeper的數據節點與命令行操作
zookeeper的java客戶端基本操作及事件監聽
zookeeper核心機制及數據節點
zookeeper應用案例–分布式共享資源鎖
zookeeper應用案例–伺服器上下線動態感知
zookeeper的數據一致性原理及leader選舉機制
5、java高級特性增強
Java多線程基本知識
Java同步關鍵詞詳解
java並發包線程池及在開源軟體中的應用
Java並發包消息隊里及在開源軟體中的應用
Java JMS技術
Java動態代理反射
6、輕量級RPC框架開發
RPC原理學習
Nio原理學習
Netty常用API學習
輕量級RPC框架需求分析及原理分析
輕量級RPC框架開發
二、離線計算系統
1、hadoop快速入門
hadoop背景介紹
分布式系統概述
離線數據分析流程介紹
集群搭建
集群使用初步
2、HDFS增強
HDFS的概念和特性
HDFS的shell(命令行客戶端)操作
HDFS的工作機制
NAMENODE的工作機制
java的api操作
案例1:開發shell採集腳本
3、MAPREDUCE詳解
自定義hadoop的RPC框架
Maprece編程規范及示例編寫
Maprece程序運行模式及debug方法
maprece程序運行模式的內在機理
maprece運算框架的主體工作流程
自定義對象的序列化方法
MapRece編程案例
4、MAPREDUCE增強
Maprece排序
自定義partitioner
Maprece的combiner
maprece工作機制詳解
5、MAPREDUCE實戰
maptask並行度機制-文件切片
maptask並行度設置
倒排索引
共同好友
6、federation介紹和hive使用
Hadoop的HA機制
HA集群的安裝部署
集群運維測試之Datanode動態上下線
集群運維測試之Namenode狀態切換管理
集群運維測試之數據塊的balance
HA下HDFS-API變化
hive簡介
hive架構
hive安裝部署
hvie初使用
7、hive增強和flume介紹
HQL-DDL基本語法
HQL-DML基本語法
HIVE的join
HIVE 參數配置
HIVE 自定義函數和Transform
HIVE 執行HQL的實例分析
HIVE最佳實踐注意點
HIVE優化策略
HIVE實戰案例
Flume介紹
Flume的安裝部署
案例:採集目錄到HDFS
案例:採集文件到HDFS
三、流式計算
1、Storm從入門到精通
Storm是什麼
Storm架構分析
Storm架構分析
Storm編程模型、Tuple源碼、並發度分析
Storm WordCount案例及常用Api分析
Storm集群部署實戰
Storm+Kafka+Redis業務指標計算
Storm源碼下載編譯
Strom集群啟動及源碼分析
Storm任務提交及源碼分析
Storm數據發送流程分析
Storm通信機制分析
Storm消息容錯機制及源碼分析
Storm多stream項目分析
編寫自己的流式任務執行框架
2、Storm上下游及架構集成
消息隊列是什麼
Kakfa核心組件
Kafka集群部署實戰及常用命令
Kafka配置文件梳理
Kakfa JavaApi學習
Kafka文件存儲機制分析
Redis基礎及單機環境部署
Redis數據結構及典型案例
Flume快速入門
Flume+Kafka+Storm+Redis整合
四、內存計算體系Spark
1、scala編程
scala編程介紹
scala相關軟體安裝
scala基礎語法
scala方法和函數
scala函數式編程特點
scala數組和集合
scala編程練習(單機版WordCount)
scala面向對象
scala模式匹配
actor編程介紹
option和偏函數
實戰:actor的並發WordCount
柯里化
隱式轉換
2、AKKA與RPC
Akka並發編程框架
實戰:RPC編程實戰
3、Spark快速入門
spark介紹
spark環境搭建
RDD簡介
RDD的轉換和動作
實戰:RDD綜合練習
RDD高級運算元
自定義Partitioner
實戰:網站訪問次數
廣播變數
實戰:根據IP計算歸屬地
自定義排序
利用JDBC RDD實現數據導入導出
WorldCount執行流程詳解
4、RDD詳解
RDD依賴關系
RDD緩存機制
RDD的Checkpoint檢查點機制
Spark任務執行過程分析
RDD的Stage劃分
5、Spark-Sql應用
Spark-SQL
Spark結合Hive
DataFrame
實戰:Spark-SQL和DataFrame案例
6、SparkStreaming應用實戰
Spark-Streaming簡介
Spark-Streaming編程
實戰:StageFulWordCount
Flume結合Spark Streaming
Kafka結合Spark Streaming
窗口函數
ELK技術棧介紹
ElasticSearch安裝和使用
Storm架構分析
Storm編程模型、Tuple源碼、並發度分析
Storm WordCount案例及常用Api分析
7、Spark核心源碼解析
Spark源碼編譯
Spark遠程debug
Spark任務提交行流程源碼分析
Spark通信流程源碼分析
SparkContext創建過程源碼分析
DriverActor和ClientActor通信過程源碼分析
Worker啟動Executor過程源碼分析
Executor向DriverActor注冊過程源碼分析
Executor向Driver注冊過程源碼分析
DAGScheler和TaskScheler源碼分析
Shuffle過程源碼分析
Task執行過程源碼分析
五、機器學習演算法
1、python及numpy庫
機器學習簡介
機器學習與python
python語言–快速入門
python語言–數據類型詳解
python語言–流程式控制制語句
python語言–函數使用
python語言–模塊和包
phthon語言–面向對象
python機器學習演算法庫–numpy
機器學習必備數學知識–概率論
2、常用演算法實現
knn分類演算法–演算法原理
knn分類演算法–代碼實現
knn分類演算法–手寫字識別案例
lineage回歸分類演算法–演算法原理
lineage回歸分類演算法–演算法實現及demo
樸素貝葉斯分類演算法–演算法原理
樸素貝葉斯分類演算法–演算法實現
樸素貝葉斯分類演算法–垃圾郵件識別應用案例
kmeans聚類演算法–演算法原理
kmeans聚類演算法–演算法實現
kmeans聚類演算法–地理位置聚類應用
決策樹分類演算法–演算法原理
決策樹分類演算法–演算法實現
時下的大數據分析時代與人工智慧熱潮,相信有許多對大數據分析師非常感興趣、躍躍欲試想著轉行的朋友,但面向整個社會,最不缺的其實就是人才,對於是否轉行大數據分析行列,對於能否勇敢一次跳出自己的舒適圈,不少人還是躊躇滿志啊!畢竟好多決定,一旦做出了就很難再回頭了。不過如果你已經轉行到大數據分析領域,就不要後悔,做到如何脫穎而出才是關鍵。因此本文給出一些建議,針對想要轉行大數據分析行列且是零基礎轉行的小夥伴們,希望對你們有所裨益,也希望你們將來學有所成,不後悔,更不灰心!
相關推薦:
《轉行大數據分析師後悔了》、《ui設計培訓四個月騙局大爆料》、《零基礎學大數據分析現實嗎》、《大數據分析十八般工具》
④ 數據分析能力模型
「過去」 以往在增量時代,每天都有新的領域、新的市場被開發。尤其是在互聯網、電商等領域的紅利期,似乎只要做好單點的突破就能獲得市場。這個蠻荒時代,業務運營主要依靠是經驗和直覺驅動。比如跨境電商領域初期,憑借世界工廠平台的優勢,國內廠家似乎只需基於經驗選品即可大賣。
「現在」 但是隨著規則的成熟,更多玩家的進入,市場從藍海變為紅海,進入到存量期,僅靠經驗驅動的增長模式不再有效。還是拿跨境電商舉例,由於賣家的劇增,海外市場的飽和,跨境電商就進入存量運營時代,已經不存在絕對的藍海市場,每個細分領域都有許多競爭對手。此時, 要求商家從粗放運營轉為精細化運營,也就是用數據分析報告決定市場是否值得投入,用數據選品,用數據做經營分析,用資料庫存管理。
當然,不是說純定量的數據分析決定了一切,經驗就不重要了。而是說在決策的過程中,數據結論占據的比例與以往相比更大,同時業務經驗也是必不可少的部分。
「未來」 互聯網逐漸成為「傳統行業」的未來,人工智慧、元宇宙等 由數據驅動的行業越來越依賴數據分析。 還有眾多製造業亟待數字化轉型,以期在全球供應鏈中提高製造環節的附加值。 也就是說,在未來,數據驅動業務將更頻繁。
數據分析的本質是「沙盤演練」:戰場上,指揮員們在指揮部的地形模型前「推演」敵我雙方的趨勢確定作戰方案; 商場上,管理層通過數據間的運算關系「推斷」運營的發展進而做決策。
基於這樣的定義可以知道數據分析的目的是為了做對當下運營發展有利的決策,那它是如何做到的呢?為了解答這個問題,可以從前面的定義中 引申出幾個關鍵概念:數據,運算關系,推斷,決策。
最通用的理解,數據是被存儲起來的信息。從應用的角度,數據是把事物做量化處理的工具,萬物皆可數據化:數值數字是數據,文本、圖像、視頻等同樣都是數據。
按 欄位類型 劃分,可以把數據分為:
按 結構 劃分,可以把數據分為:
根據 數據連續的屬性 不同,還可以分為:
孤立的數據往往沒有參考價值,比如量化一個人,身高是180cm,並不能意味什麼。比如網易雲音樂的用戶,每個用戶的年齡是數據,對使用產品的人群年齡進行分段比如18-24歲,該年齡段人數佔比的指標對網易雲音樂來說才有價值。 從數據到指標的計算過程,就是數據間的「運算關系」,也叫「指標」。
指標的作用在於「度量」業務的發展:
這些指標(點)通過一定的結構可以編織而成指標體系(線、面)衡量局部、甚至是全局的業務 。
「沙盤演練」中,指揮員通過軍事沙盤上的地形,及敵我雙方的工事、兵力部署、火器配置等情況,分析敵情,制定作戰方案。 數據把現實中的運營抽象到數字世界中,通過指標答明體系,應用各種分析方法(業務分析、產品分析、用戶分析、經營分析......),罩舉並幫助經營做決策 。
趙括熟讀兵書,卻不能活用,淪為紙上談兵的笑話。所以獲得分析能力後,不能照本宣科,要結合實際業務場景做決策。
數據分析落地涉及流程創新、變革管理,用新的思維解決業務問題。 但這個過程並不是強迫變革,需要藉助對業務的理解及軟性的能力來使分析平滑落地。
站在「前人」的肩膀上,可以走得更遠。餅乾哥哥根據多年數據分析工作經驗沉澱出了數據分析師能力模型,跟著它「按圖索驥」,補充自身缺失的能力,最終形成獨立、落地的數據分析能力。
完整的數據分析師能力體系應該包括 底層認知、業務場景及能力三板斧。
在建立數據分析思維之前,應該先在底層認知達成共識。
什麼是認知? 是對事物底層邏輯的了解,是對是世界萬物的判斷,認知的本質就是做決定。 也就是說,為了幫助數據分析中每個決策的有效性(選擇什麼指標、分析方法?接下來做什麼?等等),需要先建立底層物跡認知。
這一步,我們需要去明確數據分析的定義:數據分析是什麼?目的/產出?分析流程?
同學們在求職過程中會發現,同樣是數據分析師崗位,但是面試的內容千差萬別,有考察機器學習、統計學等專業能力的,也有考察市場/行業分析的,還有考察產品分析的。
此時就有同學問,這些真的是數據分析該做的嗎?
我們從字面上拆解,數據分析 = 數據 分析,進一步拆:
這就是認知上的偏差:當一些同學認為數據分析就是用Excel做表、python寫腳本、機器學習建模時(其實這些只是組成數據分析能力的一部分),求職市場對數據分析師的要求更為完整。
回過頭來看,數據分析到底是什麼?筆者認為, 數據分析是一個過程,是利用數據能力做分析的過程:從發現問題、分析原因,到落地建議;這還是一個「解構」的過程:從整體拆到局部,從一般到特殊,從面到線到點,不斷下鑽剖析,找到具體可落地的點。
了解完什麼是數據分析後,深入思考一個問題:這個過程的最終產出的交付物是什麼?
要回答這個問題,我們需要 回到數據分析的本質:解決業務問題。 也就是回到業務層面的需求是什麼,才能決定最後落地交付物:
最常見的數據分析場景,就是業務發現銷售額下降、用戶流失、產品跳失率高,也就是業務層面出現了一個問題待解決,此時需要數據分析師介入幫助從數據層面挖掘原因、給出解決建議。
分析過程可能是做一些 探索 性數據分析、統計分析、機器學習建模,甚至是做AB測試實驗,最終交付分析報告,或者模型部署上線。
有時業務可能並不存在確切的「問題」,更多旨在通過加深對現有場景的理解,來提高現有業務模型、策略的效果;比如,現在業務使用的是客單價平均值將客戶分為高、低兩個人群進行營銷,此時數據分析師通過對消費者的洞察分析,給予更精準的人群劃分方案:利用客單價分位數,將客戶分為三個人群,這樣業務利用更新後的策略進行營銷設計,提高轉化效果。
分析過程可能是做相關分析、回歸分析,甚至是無監督的聚類,來對現狀進行解釋。
按照需求的時效性,可以把業務需求分為臨時需求和常規需求,而前面兩者屬於業務的臨時需求,或者說是專項分析需求。 對於常規需求,主要旨在提高業務流程的效率 ,比如對於電商運營中的商品庫存管理業務,運營需要及時查詢庫存情況,並結合銷售趨勢對低庫存量的商品進行補單;此時,數據分析師可以通過交付「低庫存預警報表」來幫助優化該流程效率。
支持診斷的內容主要集中在自動化的報表,甚至是商業智能(BI)體系的搭建。
如果說前面是基於已知模式的分析,那麼業務中還存在一種需求,就是對未知的 探索 。最為典型的場景則是對市場、對消費者的洞察後,給出品牌及業務增長的策略。
分析過程更多是基於行業、基於市場,使用如PEST、SWOT、波特五力等商業分析模型。
至此,我們知道了數據分析是什麼,以及最終的產出交付物,那這個過程如何實現的呢?從落地的角度來看,數據分析是一個從 發散到收斂 的過程: 業務理解-數據 探索 -分析模型-落地交付-產品生命周期
數據分析是從業務到數據再回到業務的過程,所以理解業務是數據分析的起點。
「無場景不分析」、「脫離業務場景的分析都是耍流氓」等資深數據分析師的建議無不說明業務場景的重要性。數據分析能力模型中的業務場景模型:用戶-產品-場景,就是為了幫助讀者理解業務場景而設計的,在這里不贅述。
不知道讀者有沒這樣的體驗?就是領導交代任務給你,或者是朋友有求於你時,執行力強的人很快就完成了任務請求,但是最後卻被告知這結果並不是對方想要的?這種情況很常發生在初入數據分析崗位的新同學身上,原因歸根結底就是沒有做好問題定義!
在理解了需求所處的業務場景後,可以 藉助邏輯樹工具來對問題進行拆解,拆解的過程盡量要遵循MECE、「相互獨立,完全窮盡」的金字塔原理 。
如果說前面定義問題是明確做什麼,那在這一步就是要明確做到什麼程度?
比如面對銷售額下降的問題,做數據分析,最終是產出一份數據分析報告就好了,還是說需要介入到測試實驗,給出增長策略?如果是後者,那對銷售額的提升幅度要提升多少才有價值?是不痛不癢的1%還是要達到顯著的10%?
如果不在價值層面做思考,並付諸價值落地的行動,最後很容易產生「價值在哪」的靈魂拷問,面臨被優化的風險 。
在業務理解階段,我們是站在業務層面與需求方溝通,但是數據分析的核心部分都是在數據層面進行的。所以在正式開始分析之前,我們需要 把業務需求轉成數據需求,這個過程就是數據 探索 。
拿到業務需求時的定義問題階段,需要數據的輔助:用數據透視業務,判斷現狀與描述是否一致。比如,業務說銷售額下降了需要分析,但是這個下降是和誰比?環比下降但是同比提升,同比下降,但是和競品相比是提升的。
這個步驟比較多的是使用 探索 性數據分析(Exploratory data analysis),或者說通過常見的統計指標來對數據現狀進行剖析。
如果說第一步是在用數據驗證需求的有效性,那這一步則是真正把業務問題轉為數據需求。
此外,還需要判斷數據質量及能做的特徵工程,比如某些欄位缺失率太高,這會影響特徵的構建。
了解業務、明確數據需求後,就可以挑選合適的武器(分析方法、模型框架)上陣。
概括來說,有四種分析方法:
指標的好壞、特徵是否顯著等都可以通過比較分析的方法來實現,比如常見的歸因業務場景,本質就是做比較,通過橫向、縱向的比較找出原因。
分析方法:比如T檢驗、方差分析、同比環比、同期群分析等
分析變數之間的相關性是重要的分析場景。比如業務中想知道提高廣告預算是否能、甚至是能提升多少的銷售業績?這樣的相關性分析或許能找到最優投放ROI的配置方案。
分析方法:卡方、皮爾遜(Pearson)相關系數、斯皮爾曼(Spearman)相關系數、結構分析等
不論是對企業銷售的預測、還是對用戶行為的預測,都能幫助提升業務效率,比如常見的預測用戶流失分析,及時得到高概率流失的人群名單,運營通過提前營銷干預,提高用戶留存率;常見的銷售預測能幫助企業在供應鏈側做准備。這類場景主要應用的是機器學習中的有監督分類模型。
分析方法:線性/邏輯回歸、決策樹、時間序列分析、貝葉斯等;
前面三種都是基於企業已知模式的分析邏輯,還有一種分析方法——無監督的機器學習模型,可以應對未知模式的分析。比如不知道應該把現有人群分成多少個組來進行營銷最合適,就可以對人群基於核心特徵做無監督的聚類分析,得出有效分組的界限。
分析方法:Kmeans聚類、DBScan聚類等;
交付落地的 最佳實踐是讓數據和分析從理論滲透到業務中,對流程進行變革提效 。
在交付給業務之前,需要先對給出的解決方案做有效性評估:
分析如果涉及模型的開發使用,需要通過AB測試,或者ROC等指標來證明模型在數據層面上的有效。在數據層面完成驗證後,回到業務分析需求,評估交付的方案在業務層面上的有效落地。
數據分析是圍繞業務價值而展開的,所以在最後的落地,也得就價值進行討論, 回答這個方案解決業務問題的途徑和程度 :
A. 途徑 是對流程的優化(降本提效)還是對數據的優化(數據體系效率、數據質量)?
B. 這方式能多大 程度 上幫助解決?比如對業務的提升是10%還是30%?是對單次項目的應用,還是說可以部署到日常流程中,在更長時間、更廣范圍內影響業務?
C. 此外,要實現這樣的效果,需要投入的資源是什麼
分析項目的落地需要多方參與,即使是業務能力豐富的分析師,由於流程邊界的存在也不可能每步都參與執行。因此,確保項目能否有效落地的一個重要因素則是能否和業務達成共識。
如何做到?講數據故事:起因(需求定義)、過程(分析邏輯)、結局(重要結論)是否引人入勝(被認可)。
這個過程需要製作PPT向上匯報、與業務溝通,甚至是做跨部門的演講。
不論是業務模型還是演算法模型,最終都有一個「靴子落地」的過程--落地實施。模型測試有效、與業務達成共識後就到了模型的部署上線階段:
接在分析生命周期最後的是分析產品的生命周期: 以產品的思維看待數據分析,交付至業務落地的模型應用就是產品。數據分析這個過程並不是靜態、單次的,而是一個PDCA不斷迭代升級的過程 。(這個分析產品的定義包括分析服務、數據產品。)
從產品思維的角度,分析結論落地到業務流程中,對流程進行再造,提高運營效率。
當數據分析流程成熟後,大量重復執行的流程可以抽取出來,形成自動化的產品,用於服務數據分析(主要對象為數據分析師,也包括運營),這就是數據產品。分析師的結論模型就可以部署到現有的數據產品中,優化分析效率。
之所以要從產品思維的角度來看數據分析過程,是因為要像迭代產品那樣去迭代分析模型:不論是優化演算法參數,還是調整分析框架,都能得到更優的結論。
在數據分析生命周期第一步的「理解業務」中,我們提到業務場景的重要性。
根據業務經驗,筆者沉澱了一套便於理解的模型:業務場景 = 用戶 產品 場景
也就是說,要理解業務,就要了解用戶,熟悉產品,明確分析所處的上下文場景。它們決定了分析的目標、處理邏輯以及落地建議。
更詳細的討論見:回歸到營銷理論,談談到底什麼是業務場景?
對數據分析有了底層認知、了解業務場景後,就需要有看得見摸得著的「招式」來行動:思維方法、工具技術和項目能力這三板斧能組成不同招式應對多變的問題。
經常看到有人說數據分析如做飯,如果是這樣的話, 在數據分析這個廚房裡,工具技術就是鍋鏟、鐵鍋、勺子等器皿,思維方法就是切配、烹飪、打荷等技藝手法,項目能力則是最後的裝盤上菜 。
很多人學做飯,可能是因為在抖音或B站看到某個 美食 視頻,然後就開始按照視頻步驟備料烹飪。這個過程,也就是數據分析中學習思維方法的過程。數據分析也是先有思維方法,才能談得上是分析。
剛開始學做飯時,通常先學基礎的煎、炒、炸、烤、煮、蒸、燜、拌烹飪方式。這些基礎的能力在數據分析中就是統計學、相關分析、歸因分析等通用分析思維。
正如 美食 有八大菜系,分別滿足不同地域人群的口味,數據分析在不同場景下,也有不同的「分析」招式來滿足不同的業務需求:
習得了做飯的方法後,就可以選擇幾件趁手的器皿,來提高烹飪效率。
之所以不是先選擇器皿再研究做飯流程,是因為工具始終是工具,完成同一個目標或許有多種工具可以實現,再不濟我用原始的土灶也能燒飯。
不過對於部分復雜的烹飪需求,也是需要選擇特定的器皿才能完成。
常見的工具技術及應用:
菜做好後一定要及時出鍋、裝盤、上菜,要不然再美味的菜餚也只是空中閣樓。
項目能力強調的是數據分析項目的落地。理論的分析方法如何在業務場景中落地賦能,體現數據價值?這是很多企業數據團隊在討論的課題。
說項目能力像是烹飪最後的上菜階段,其實不太嚴謹,因為 落地能力是一種軟性的能力,貫穿分析項目的整個過程 :
作者: 作者餅乾哥哥
⑤ 演算法工程師應該具備哪些工程能力
作者 | 木東居士
來源 | Data_Engineering
最近看了 Milter 的《演算法工程師究竟需要哪些工程能力》這篇文章,有所感想,因此也寫一篇關於演算法工程師的技術能力的問題,和大家分享一下居士關於演算法工程師的技術能力的觀點。
對於一名優秀的演算法工程師,他(她)要具備的不僅僅是出色的技術能力,也要有很深的業務理解能力和對外溝通能力,總之,要求可以很高!
但是,從職責能力的劃分上來講,演算法工程師首先是一名工程師,因此本文主要從工程能力要求上進行一些探討。
開始之前先放一份思維導圖,這將是這篇文章要分享的核心內容:
工程能力概覽
演算法工程師,從名字上我們就能看出,一名演算法工程師首先應該具備演算法能力和工程能力,我們可以認為這是基礎的技術能力。由於現在開源技術的普及,Sklearn、Tensorflow 和 Spark ML 基本已經成為大部分演算法工程師標配的工具庫了,因此,熟練的調包能力也是決定了一名演算法工程師能否快速實現需求。
其次,在真實的生產環境中,演算法的落地會遇到各種各樣的業務場景和數據環境,這也要求演算法工程師需要具備Pipeline 構建能力,將整個生產環境中的數據流和模型打通。同時,在生產環境中,會出現各種「疑難雜症」等待你去解釋,比如說為什麼實驗效果特別差?為什麼模型效果不穩定?這就要要求演算法工程師需要具備一定的數據分析能力。
很多時候,你會發現,你用在數據分析和Pipeline構建上的精力可能占據了你8成以上的工作內容。
當你具備了上面的能力時,你已經可以稱自己是一名演算法工程師了。此時,你可以去對著數據分析小得瑟一下:「你看,我能構建整個模型的Pipeline,你卻只能拿到別人提供的數據後調調包吧。「或者,你也可以去找開發得瑟:」你看,我懂了很多演算法哦,你就只會寫代碼吧。「
得瑟完之後,我們還是回歸正題,演算法工程師只具備這樣能力是否已經夠了?答案當然是不夠的。由於不同公司的團隊成熟度不同,工具化和流程的成熟度都不同,這就會對演算法工程師有不同的要求,比如說模型發布能力和報表開發能力,當然也會有一些其它能力,雖然可能不是特別重要,但是當這些工作沒人幫你做的時候,演算法工程師可能依然要承擔起這些工作內容,比如說灰度測試的能力、負載均衡的能力等等。
將上面的內容整理後,就是這樣一份思維導圖了(一張圖多看幾篇更能加深印象,因此我再貼出來一遍)
工程能力詳解
一、基礎能力
演算法能力
演算法能力就不多說了,演算法工程師的基本能力要求,不懂演算法對於一名演算法工程師來講是不太合理的。這里居士把統計學的內容也放進來了。
編程能力
編程能力主要分為兩部分:
Python、C++、Java這類編程語言,這三種也是演算法工程師需要了解的主流編程語言,一般掌握其一就夠,看不同公司。 Sql就是很通用的能力了,Sql也是一門編程語言,而是是數據處理最常用的語言! 很好用。 大數據場景下,要了解Hive Sql。調包能力
大家雖然會調侃調包俠,但是說實話,能調包調的很溜的人,也是不多的,比如說現在讓你自己用tensorflow構建一個復雜網路,不能google,你能寫出來嗎?能記清楚用法嗎?
Sklearn Tensorflow Spark ML二、核心能力
Pipeline 構建能力
Pipeline構建能力,這里想表達的更多的是整個數據流的構建能力,數據從日誌->特徵->模型訓練->反饋,這一個鏈條能否完成的能力,這裡面會有很多難題需要克服。比如說:
實時和離線模型一致性問題? 離線和實時特徵一致性問題? 實時特徵構建的問題? 數據延遲的問題?很多時候,模型發布之類的工作是可以由其他同學支持完成,但是數據流這種問題更多的是需要演算法工程師來解決的。
數據分析能力
這里的數據分析能力不是指商業分析或者業務分析,更多的是指特徵分析、演算法效果分析和各種異常問題定位分析的能力。
很多時候,兩個演算法工程師能力水平的強弱從數據分析能力上也能窺得一二。
三、輔助技術能力
輔助的技術能力是指,你會不會的影響不會特別大,但是也都是有用的能力,特別是不同公司的發展情況不同,很可能會出現一個演算法工程師既要做數據接入、又要做數據清洗、還要做演算法平台
也要搞前端、還要負責模型上線、系統運維。
這里就不再細講了。
思考一
聊一下對技術能力、工程能力和數據分析的思考。
居士個人的理解,技術能力更多的是偏向於一個一個的技術點,而工程能力更多就是在一個團隊中將項目做好的能力。很多演算法出身的工程能力不行,那麼他做的單純的一個模型是無法應用到實際生產中的,而工程就是指把理論落地實際生產的過程。那麼工程包含了什麼?它包括了系統架構設計和模塊設計、數據流搭建和平台搭建、調包或演算法開發、分布式、上線以及各種落地的代碼開發。報表和監控,其實本質也是做數據流,邊緣性的可能要做些後台和前端的開發。
然後數據分析能力是什麼?數據分析(不是純粹的數據分析)除了分析方法論和套路外,是一個很綜合性、相對偏軟一點的能力,比如說你通過分析發現了我們的系統有哪些可以優化的點,通過分析發現了問題的原因是什麼,這些都是分析能力。
思考二
針對前面的內容,和 Cathy 討論後,對整個思路做了新的梳理,大家直接看圖就好,居士也認為這樣描述可能更為合理。
思考三
這里再補充一個模型復現的能力,比如你看了一篇論文,發現這個模型可能很適合自己的業務場景,那麼你是否能力將論文裡面的模型快速用公司現有的平台和工具來復現?
居士認為,這一個是一個非常重要的能力,但是沒有想好具體該怎樣劃分。
⑥ 我也已經25歲其實就有轉行的打算了,想轉數據分析大數據行業,我大學本科是和這個專業相關的,
來得及就趕緊哦
首先,大數據行業的入行門檻至少是大專及以上學歷,按照大多數人受教育的年紀來說,大專畢業至少21+,本科生至少22+,研究生以上學歷年齡會更大,不少人的職業生涯是從本科或研究生起步的,那樣少說也得二十四五了
現今大數據人才的來源主要靠市場培訓,市場上的大數據培訓以技術入門為主,不少人是程序員轉行做大數據的,大多數程序員是大專及本科畢業後入職,經過幾年職場歷練後,程序員在工作中不僅對業務知識有一定積累,且對IT行業也有自己的積累和理解,這樣意味這部分人進入大數據市場有先發優勢,同時意味著他們年紀也應該在25歲+
⑦ ai演算法能力模型輕量化的目標
AI演算法能力模型輕量化的目標:所謂輕量化人工智慧,是指以一系列輕量化技術為驅動提高晶元、平台和演算法的效率,在更緊密的物理空間上實現低功耗的人工智慧訓練和應用部署,不需要依賴與雲端的交互就能實現智能化操作的人工智慧。
AI演算法能力模型輕量化的解析:
大模型的人工智慧這場游戲正變得越來越「笨拙」,也越來越奢侈。於是,輕量化人工智慧(Tiny AI)被寄予厚望,通過對人工智慧模型及其計算載體的「瘦身」,提升效率,降低能耗。
專家認為,輕量化人工智慧是以一系列輕量化技術為驅動,提高演算法、平台和晶元的效率,在更緊密的物理空間上實現低功耗的人工智慧訓練和應用部署,不依賴與雲端交互就能實現智能化操作,被視為人工智慧的另一個重要應用方向。
⑧ MPC——理論知識(1)
模型閉穗預測控制重構了追蹤軌跡作為優化問題的任務。優化問題的解決方案是最佳的軌跡。模型預測控制涉及模擬不同的執行器輸入,預測最終的軌跡並以最小的成本選擇該軌跡。當前狀態和參考軌跡是已知的。在每個時間步驟中,制動器輸入被優化以便最小化預測軌跡的成本。一旦找到最低成本的軌跡,執行第一組致動器命令,其餘部分被丟棄,並且在計算新的最佳軌跡時在每個時間步重復。
(1)預測模型:預測模型是模型預測控制的基礎。主要功能是根據對象的歷史信息和未來輸入,預測系統未來的輸出。對於模型預測的形式沒有嚴格的限定,狀態方程、傳遞函數這類傳統的模型都可以作為預測模型。對於線性穩定系統,階躍響應、脈沖響應這類非參數模型,也可以直接作為預測模型使用。
(2)滾動優化:預測模型控制通過某一性能指標的最優來確定控製作用,但優化不是一次離線進行,而是反復在線進行的。這就是滾動優化的含義,也是模型預測控制區別於傳統最優控制的根本點。
(3)反饋校正:在新的采樣時刻,首先檢測對象的實際輸出,並利用這一實時信息對基於模型的預測結果進行修正,然後進行新的優化。
控制過程中始終存在一條期望軌跡。以時刻k作為當前時刻(坐標系縱軸所在的位置),控制器結合當前的測量值和預測模型,預測系統未來一段時域內 (也被稱為預測時域)系統的輸出,如曲線2所示。通過求解滿足目標函數的以及各種約束的優化問題,得到控制時域 內一系列的控制序列,如圖中矩形波4所示(從坐標系縱軸開始),並將該控制序列的第一個元素作為受控對象的實際控制量。當下一個時刻k+1時,重復上述過程,如此滾動地完成一個個帶約束的優化問題,以實現對被控對象的持續控制。
根據所採用模型的不同,模型預測控制主要包括動態矩陣控制(DMC)、模型演算法控制(MAC)、廣義預測控制(GPC)等。同時,在現代控制理論中廣泛使用的狀態空間模型,同樣可以應用於模型預測控制中。
(1)預測方程
首先考慮以下的離散線性化模型:
設定
可以得到一個新的狀態空間表達式:
其中
所以
可得:
為了進一步簡化計算,做出如下假設:
如果系統預測時域為 ,控制時域為 ,那麼預測時域內的狀態量和系統輸出量可以用以下算式計算:
為了使整個關系更加明確,將系統未來時刻的輸出以矩陣的形式表達:
式中:
通過上式可以清楚看到,在預測時域內的狀態量和輸出量都可以通過系統當前的狀態量 和控制時域內的控制增量 計算得到。這也就是模型預測控制演算法中「預測」功能的實現。
(2)優化求解
實際上,系統的控制增量是未知的搏仿,只有通過設定合適的優化目標,並對其進行求解,才能得到控制時域內的控制序列。
可以把控制增量作為目標函數的狀態量,優化目標函數如下形式:
其中,第一項反映了系統對參考軌線的跟隨能力,第二項反映了對控制量平穩變化的要求。Q和R為權重矩陣,整個表達式的功能是使系統能夠盡快且平穩地跟蹤上期基態纖望的軌跡。同時,在實際控制系統中,往往需要滿足系統狀態量以及控制量的一些約束,一般如下:
控制量約束:
控制量約束:
輸出約束:
上面三個公式,形成了一個完整的優化目標表達式。通過求解這個帶約束條件的優化目標,就能得到未來一段時間的控制序列。然而,由於系統的模型是實時改變的,並不能保證每個時刻該優化目標都能得到可行解。因此,有必要對優化目標進行相應的處理。比普遍並且證明有效的方式是在優化目標中加入鬆弛因子,如下所示:
式中, 為權重系數, 為鬆弛因子。
將系統輸出的狀態空間表達式代入優化目標式,並且將預測時域內的輸出量偏差表示為:
經過相應的矩陣計算, 可以將優化目標調整為:
式中:
在式中, 為常量,因此模型預測控制在每一步的帶約束優化求解問題都等價於求解如下的二次規劃問題:
(3)反饋機制
在每個控制周期內完成對上式的求解後,得到了控制時域內的一系列控制輸入增量:
根據模型預測控制的基本原理,將該控制序列中的第一個元素作為實際的控制輸入增量作用於系統,即:
系統執行這一控制量直到下一時刻。在新的時刻,系統根據狀態信息重新預測下一段時域的輸出,通過優化過程得到一個新的控制增量序列。如此循環,直到系統完成控制過程。
⑨ 作為程序員提高編程能力的幾個基礎演算法
一:快速排序演算法
快速排序是由東尼·霍爾所發展的一種排序演算法。在平均狀況下,排序n個項目要Ο(nlogn)次比較。在最壞狀況下則需要Ο(n2)次比較,但這種狀況並不常見。事實上,快速排序通常明顯比其他Ο(nlogn)演算法更快,因為它的內部循環(innerloop)可以在大部分的架構上很有效率地被實現出來。
快速排序使用分治法(Divideandconquer)策略來把一個串列(list)分為兩個子串列(sub-lists)。
演算法步驟:
1從數列中挑出一個元素,稱為「基準」(pivot),
2重新排序數列,所有元素比基準值小的擺放在基準前面,所有元素比基準值大的擺在基準的後面(相同的數可以到任一邊)。在這個分區退出之後,該基準就處於數列的中間位置。這個稱為分區(partition)操作。
3遞歸地(recursive)把小於基準值元素的子數列和大於基準值元素的子數列排序。
遞歸的最底部情形,是數列的大小是零或一,也就是永遠都已經被排序好了。雖然一直遞歸下去,但是這個演算法總會退出,因為在每次的迭代(iteration)中,它至少會把一個元素擺到它最後的位置去。
二:堆排序演算法
堆排序(Heapsort)是指利用堆這種數據結構所設計的一種排序演算法。堆積是一個近似完全二叉樹的結構,並同時滿足堆積的性質:即子結點的鍵值或索引總是小於(或者大於)它的父節點。
堆排序的平均時間復雜度為Ο(nlogn) 。
創建一個堆H[0..n-1]
把堆首(最大值)和堆尾互換
3.把堆的尺寸縮小1,並調用shift_down(0),目的是把新的數組頂端數據調整到相應位置
4.重復步驟2,直到堆的尺寸為1
三:歸並排序
歸並排序(Mergesort,台灣譯作:合並排序)是建立在歸並操作上的一種有效的排序演算法。該演算法是採用分治法(DivideandConquer)的一個非常典型的應用。
1.申請空間,使其大小為兩個已經排序序列之和,該空間用來存放合並後的序列
2.設定兩個指針,最初位置分別為兩個已經排序序列的起始位置
3.比較兩個指針所指向的元素,選擇相對小的元素放入到合並空間,並移動指針到下一位置
4.重復步驟3直到某一指針達到序列尾
5.將另一序列剩下的所有元素直接復制到合並序列尾
四:二分查找演算法
二分查找演算法是一種在有序數組中查找某一特定元素的搜索演算法。搜素過程從數組的中間元素開始,如果中間元素正好是要查找的元素,則搜素過程結束;如果某一特定元素大於或者小於中間元素,則在數組大於或小於中間元素的那一半中查找,而且跟開始一樣從中間元素開始比較。如果在某一步驟數組為空,則代表找不到。這種搜索演算法每一次比較都使搜索范圍縮小一半。折半搜索每次把搜索區域減少一半,時間復雜度為Ο(logn) 。
五:BFPRT(線性查找演算法)
BFPRT演算法解決的問題十分經典,即從某n個元素的序列中選出第k大(第k小)的元素,通過巧妙的分析,BFPRT可以保證在最壞情況下仍為線性時間復雜度。該演算法的思想與快速排序思想相似,當然,為使得演算法在最壞情況下,依然能達到o(n)的時間復雜度,五位演算法作者做了精妙的處理。
1.將n個元素每5個一組,分成n/5(上界)組。
2.取出每一組的中位數,任意排序方法,比如插入排序。
3.遞歸的調用selection演算法查找上一步中所有中位數的中位數,設為x,偶數個中位數的情況下設定為選取中間小的一個。
4.用x來分割數組,設小於等於x的個數為k,大於x的個數即為n-k。
5.若i==k,返回x;若i<k,在小於x的元素中遞歸查找第i小的元素;若i>k,在大於x的元素中遞歸查找第i-k小的元素。
終止條件:n=1時,返回的即是i小元素。
六:DFS(深度優先搜索)
深度優先搜索演算法(Depth-First-Search),是搜索演算法的一種。它沿著樹的深度遍歷樹的節點,盡可能深的搜索樹的分支。當節點v的所有邊都己被探尋過,搜索將回溯到發現節點v的那條邊的起始節點。這一過程一直進行到已發現從源節點可達的所有節點為止。如果還存在未被發現的節點,則選擇其中一個作為源節點並重復以上過程,整個進程反復進行直到所有節點都被訪問為止。DFS屬於盲目搜索。
深度優先搜索是圖論中的經典演算法,利用深度優先搜索演算法可以產生目標圖的相應拓撲排序表,利用拓撲排序表可以方便的解決很多相關的圖論問題,如最大路徑問題等等。一般用堆數據結構來輔助實現DFS演算法。
深度優先遍歷圖演算法步驟:
1.訪問頂點v;
2.依次從v的未被訪問的鄰接點出發,對圖進行深度優先遍歷;直至圖中和v有路徑相通的頂點都被訪問;
3.若此時圖中尚有頂點未被訪問,則從一個未被訪問的頂點出發,重新進行深度優先遍歷,直到圖中所有頂點均被訪問過為止。
上述描述可能比較抽象,舉個實例:
DFS在訪問圖中某一起始頂點v後,由v出發,訪問它的任一鄰接頂點w1;再從w1出發,訪問與w1鄰接但還沒有訪問過的頂點w2;然後再從w2出發,進行類似的訪問,…如此進行下去,直至到達所有的鄰接頂點都被訪問過的頂點u為止。
接著,退回一步,退到前一次剛訪問過的頂點,看是否還有其它沒有被訪問的鄰接頂點。如果有,則訪問此頂點,之後再從此頂點出發,進行與前述類似的訪問;如果沒有,就再退回一步進行搜索。重復上述過程,直到連通圖中所有頂點都被訪問過為止。
七:BFS(廣度優先搜索)
廣度優先搜索演算法(Breadth-First-Search),是一種圖形搜索演算法。簡單的說,BFS是從根節點開始,沿著樹(圖)的寬度遍歷樹(圖)的節點。如果所有節點均被訪問,則演算法中止。
BFS同樣屬於盲目搜索。一般用隊列數據結構來輔助實現BFS演算法。
1.首先將根節點放入隊列中。
2.從隊列中取出第一個節點,並檢驗它是否為目標。
如果找到目標,則結束搜尋並回傳結果。
否則將它所有尚未檢驗過的直接子節點加入隊列中。
3.若隊列為空,表示整張圖都檢查過了——亦即圖中沒有欲搜尋的目標。結束搜尋並回傳「找不到目標」。
4.重復步驟2。
八:Dijkstra演算法
戴克斯特拉演算法(Dijkstra』salgorithm)是由荷蘭計算機科學家艾茲赫爾·戴克斯特拉提出。迪科斯徹演算法使用了廣度優先搜索解決非負權有向圖的單源最短路徑問題,演算法最終得到一個最短路徑樹。該演算法常用於路由演算法或者作為其他圖演算法的一個子模塊。
該演算法的輸入包含了一個有權重的有向圖G,以及G中的一個來源頂點S。我們以V表示G中所有頂點的集合。每一個圖中的邊,都是兩個頂點所形成的有序元素對。(u,v)表示從頂點u到v有路徑相連。我們以E表示G中所有邊的集合,而邊的權重則由權重函數w:E→[0,∞]定義。因此,w(u,v)就是從頂點u到頂點v的非負權重(weight)。邊的權重可以想像成兩個頂點之間的距離。任兩點間路徑的權重,就是該路徑上所有邊的權重總和。已知有V中有頂點s及t,Dijkstra演算法可以找到s到t的最低權重路徑(例如,最短路徑)。這個演算法也可以在一個圖中,找到從一個頂點s到任何其他頂點的最短路徑。對於不含負權的有向圖,Dijkstra演算法是目前已知的最快的單源最短路徑演算法。
1.初始時令S=,T=,T中頂點對應的距離值
若存在<V0,Vi>,d(V0,Vi)為<V0,Vi>弧上的權值
若不存在<V0,Vi>,d(V0,Vi)為∞
2.從T中選取一個其距離值為最小的頂點W且不在S中,加入S
3.對其餘T中頂點的距離值進行修改:若加進W作中間頂點,從V0到Vi的距離值縮短,則修改此距離值
重復上述步驟2、3,直到S中包含所有頂點,即W=Vi為止
九:動態規劃演算法
動態規劃(Dynamicprogramming)是一種在數學、計算機科學和經濟學中使用的,通過把原問題分解為相對簡單的子問題的方式求解復雜問題的方法。動態規劃常常適用於有重疊子問題和最優子結構性質的問題,動態規劃方法所耗時間往往遠少於樸素解法。
動態規劃背後的基本思想非常簡單。大致上,若要解一個給定問題,我們需要解其不同部分(即子問題),再合並子問題的解以得出原問題的解。通常許多子問題非常相似,為此動態規劃法試圖僅僅解決每個子問題一次,從而減少計算量:一旦某個給定子問題的解已經算出,則將其記憶化存儲,以便下次需要同一個子問題解之時直接查表。這種做法在重復子問題的數目關於輸入的規模呈指數增長時特別有用。
關於動態規劃最經典的問題當屬背包問題。
1.最優子結構性質。如果問題的最優解所包含的子問題的解也是最優的,我們就稱該問題具有最優子結構性質(即滿足最優化原理)。最優子結構性質為動態規劃演算法解決問題提供了重要線索。
2.子問題重疊性質。子問題重疊性質是指在用遞歸演算法自頂向下對問題進行求解時,每次產生的子問題並不總是新問題,有些子問題會被重復計算多次。動態規劃演算法正是利用了這種子問題的重疊性質,對每一個子問題只計算一次,然後將其計算結果保存在一個表格中,當再次需要計算已經計算過的子問題時,只是在表格中簡單地查看一下結果,從而獲得較高的效率。
十:樸素貝葉斯分類演算法
樸素貝葉斯分類演算法是一種基於貝葉斯定理的簡單概率分類演算法。貝葉斯分類的基礎是概率推理,就是在各種條件的存在不確定,僅知其出現概率的情況下,如何完成推理和決策任務。概率推理是與確定性推理相對應的。而樸素貝葉斯分類器是基於獨立假設的,即假設樣本每個特徵與其他特徵都不相關。
樸素貝葉斯分類器依靠精確的自然概率模型,在有監督學習的樣本集中能獲取得非常好的分類效果。在許多實際應用中,樸素貝葉斯模型參數估計使用最大似然估計方法,換言樸素貝葉斯模型能工作並沒有用到貝葉斯概率或者任何貝葉斯模型。
盡管是帶著這些樸素思想和過於簡單化的假設,但樸素貝葉斯分類器在很多復雜的現實情形中仍能夠取得相當好的效果。
通過掌握以上演算法,能夠幫你迅速提高編程能力,成為一名優秀的程序員。
⑩ 實施能力測度模型
對ERP實施能力進行測評的目的主要是用來評估ERP實施過程中應用企業、軟體提供商和咨詢服務公司三方實施主體對項目監督和控制的能力,重點考察流程式控制制手段、改進ERP實施質量的管理方法和升碧處理情況的能力。實施能力的測評可以從兩個方面入手,其一為ERP實施能力成熟度的測評,其二為ERP實施能力的指標測算。ERP實施能力成熟度模型是由暨南大學王惠芬提出的[22],該模型將用於軟體開發領域質量管理的能力成熟度模型SW-CMM引入ERP實施能力評估領域,力圖用規范化的手段實現對ERP實施過程中各方綜合能力的有效評估;ERP實施能力測度模型則是由天津大學皮賀齊二石等設計的[23],此模型通過對ERP實施過程中的內外部因素的評價和測算,以便為ERP實施主體和項目監理方提供一種決策量化工具。
6.3.3.1 實施能力成熟度模型
結合CMM(software Capability Maturity Model)思想和ERP實施特點,評估能力成熟度可以從關鍵活動領域及其活動能力兩個方面進行測量:活動領域包括ERP選型、ERP實施周期、ERP軟體公司和管理咨詢公司的支持、ERP項目管理、ERP項目組織;活動能力可按百分制分四個等級來劃分,沒有做到計0~15分,部分做到計16~50分,大部分做到計51~85分,全部做到計86~100分。依據各個活動領域及其活動的重要程度也可以設置權重、計算得分,並針對五個領域關鍵活動的累計分數再對整個ERP項目的能力成熟度進行總分評定。這樣,對ERP實施的能力成熟度劃分為五個層次,即原始級、可重復級、已定義級、管理級和優化級。
(1)初始級。初始級定義了ERP系統的輸入、輸出和實施范圍,但實施過程卻是個黑箱,即知道要實施哪些模塊,而怎麼實施、模塊里到底有什麼卻不知道。初始級的ERP實施項目處於未加詳細定義的無序過程中,系統的實施進度、預算、ERP功能、ERP實施的質量不可預測,遇到問題時常常放棄原有的計劃而陷於編程和二次開發陷阱里。這首先表現在ERP系統的引進僅僅被企業少數管理人員認同,沒有發動管理人員對整個系統進行消化,企業也沒有備足實施人員和後續資金;其次軟體產品質量不過關、存在程序缺陷,軟體公司難以駕馭軟體實施的整個生命周期的活動,缺少對整個項目進行管理監控和質量考核的內部管理機制等;此外,企業在項目組織上也存在較多問題,如不具備穩定的實施環境和維護環境、成熟能力取決於某幾個人的個人能力等。
(2)可重復級。可重復級是基於以往管理項目的經驗來計劃和管理新的ERP項目,即企業對實施企業管理軟體有了一定的經驗,同時軟體公司也成功地實施過幾個ERP項目,企業和軟體公司對整個ERP實施過程達到了制度化、紀律化、可重復的程度。此階段中的項目經理能夠對成本、進度和功能負責,出現問題時可以採取糾偏措施,項目可以達到原來承諾的程度,但軟體公司和咨詢公司的支持、項目管理、項目組織還存在較多問題。首先,由於缺少咨詢公司的支持,項目建吵握舉立的實施策略以及為實施策略而制定的具體措施主要是針對軟體本身,而很少涉及對企業新舊業務流程的對比分析,使得整個項目以計算機部門的人員為主,難以在製造、財務、銷售等重點管理領域全面鋪開;其次,盡管軟體實施對實施生命周期里的主要活動有了質量保證,但整個項目的管理還沒有形成企業與軟體商之間的共同計劃,軟體公司的內部管理還沒有穩定的全面質量管理環境;最後,此階段的實施重視進度和承諾,但往往忽視了對項目的文檔管理,導致後續實施難以追蹤前期的詳細資料,項目經驗沉澱在實施人員的腦海。
(3)已定義級。已定義級是指ERP實施過程以及實施過程的管理得到了系統的闡述,並對項目的主要活動領域預先進行了定義,預先明確了項目計劃與實施結果之間的依賴關系,即項目的計劃、系統規模、二次開發程度、工作量、成本、進度、人員配置、其他資源都進行了嚴格的定義,整個項目實施的重點是對問題的預測上,其成本、進度和功能都是可以控制的。
(4)管理級。管理級是在已定義級基礎上對項目目標和實施過程建立起了定量化的質量管理,對於所有項目的重要活動都進行工作量和質量的連續計量。為了達到ERP項目的高質量,首先規定了高層經理必須介入項目的具體層次和具體時間,對項目經理介入項目的時間做了硬性規定,以及項目團隊成員間協作的量化;其次圍繞「培訓」工作,從頭到尾都定義了各級項目人員的培訓內容、培訓進度、培訓時間、培訓質量等。
(5)優化級。優化級是ERP實施的最高級,企業通過引進管理咨詢、業務流程重組和ERP系統對整個企業過程不斷優化,對企業過程中的管理變革進行合理預期,對變革過程合理控制,並獲得預期的變革效果。實施優化級的企業會預期ERP實施對財務、采購、生產、人力資源等關鍵管理領域的變革,能預先判斷變革的阻力,主動尋找出企業現有管理的長處和短處,以達到用西方管理模式改造企業自身管理缺陷的目的;這個級別的公司可以自發地不斷改進企業信息系統的應用,對可能的過程變更和持續改進進行優化。
6.3.3.2 實施能力測度模型
ERP實施能力測度模型的思路是,首先從企業、供應商、咨詢顧問等不同角度分析其影響因素,確定各種因素的衡量指標;然後利用案例分析、專業估計等方法給定各指標的權重,並按照一定的演算法計算不同級別的測度值;最後,比較實施過程中的測試值與預期目標之間的判別,以便對實施能力進行診斷和評測。
(1)評價指標。實施能力評價指標體系設計應包含影響ERP實施結果的所有主要因素,既有企業內部的能力評價指標,也有軟體供應商、咨詢公司等外部主體能力的衡量指標,並按照與實施效果的關聯性進行適當分類與布置。其中內部因素可包括信息化基礎、資金支持能力、企業自身技術力量、企業當前管理水平、企業領導重視程度、項目籌備情況等指標;外部因素必須包括軟體供應商能力、咨詢顧問公司能力,及實施三方的組織能力等指標,如圖6.9所示。
圖6.9 實施能力測度指標體系
(2)測度演算法。這樣,可形成的測度指數分為四級,即總測度指數;內部(企業能力)、外部指數;信息化基礎、資金支持能力、企業自身技術力、企業當前管理水平、企業領導重視程度、項目籌備情況、供應商能力、咨詢顧問公司能力、實施三方組織能力指數;基礎指標指數。各單項指數根據實際情況在內部制定不同等級或級別,以累進形式賦值,並保證最高值為分配的單項峰值。在具體評估過程中,按照項目實施小組的真實能力確定所在的等級,對應的分值即為該項指標的指數值,通過逐級匯總形成各級指數。基礎指標值和各級計算式中權重可以採用模糊評判法、專家打分法或層次分析法等方法確定。值得說明的是,指標基準值的確定需要通過對大量實施企業案例(成功和失敗案例)的分析和研究確定。
為增加評價的可操作性,在指標體系和測算的基礎上,可以採用DSS理論並結合人工智慧、灰色評價理論以及人工神經網路理論,將專家的經驗知識、評價指標的數據信息、多種綜合評價方法、相關的先進技術、計算機軟硬體等有機結合起來,構成集成式智能化ERP系統建設評價決策支持系統。