智慧應用中八個常見的誤區
智慧應用中八個常見的誤區
17 |
但在開始進入激動人心且充滿經濟利益的智慧應用世界之前,先來看一些帶有智慧功能的專案中常見的錯誤,或者說是誤區。你可能熟悉分散式計算的八大誤區(如果沒有看過,可以參考Van den Hoogen的業界評論),其中列舉了第一次開發分散式應用的程式設計師對分散式應用的常見誤區。同樣,根據這個傳統,我們在這裡也會介紹八個智慧應用開發中常見的誤區。
:資料是可靠的
很多因素會導致你獲取的資料不可靠。在考慮具體的智慧演算法解決方案之前,首先就要判斷資料是否可信。如果資料有問題,就算是最聰明的人,通常也會得出錯誤的結論。
可能導致資料出錯的原因有很多,在此不可能一一列舉,下面列出了部分有代表性的可能導致資料出錯的因素:
· 在開發過程中所使用的資料不能代表產品環境中的資料。例如,對某個社交網路中的使用者按身高分類“高”、“一般”和“矮”。如果開發階段所使用的資料中最矮的使用者的身高是1米84,那就有可能會得出“你太矮了,才1米84”的可笑結論。
· 資料中可能含有缺失值。實際上,除非資料是人造的,否則資料就肯定會含有缺失值。缺失值的處理非常需要技巧,通常,既可以保持缺失值狀態不變,也可以用某種預設值或是計算得到的值來填充。兩種情況都可能導致不穩定的實現。
· 資料可能會改變。資料庫策略可能會變,或者資料庫中資料的語義也有可能發生變化。
· 資料沒有規範化。假如我們關注的是每個人的體重。為了能根據體重得到有意義的結論,所有的單位應該是統一的:磅或是公斤,兩者只能取其一,而不能是兩者的混合。
· 所想的演算法可能不適合資料。資料有不同的形式,也就是資料型別。有些資料集是數值型別的,有些則不是;有些資料集可以排序,有些則不能;有些數值的資料集是離散的(例如,房間中的人數),有些則是連續的(例如氣溫)。
18 |
任何解決方案的計算都需要時間,應用的反饋速度對於業務在經濟方面的成功是至關重要的。不能盲目地假設應用能在限定的反饋時間內在所有的資料集上完成所有的計算,需要仔細測試演算法在各種操作中的效能。
:不用考慮資料規模
當我們討論智慧應用時,規模是很重要的。資料的規模會給整個應用帶來兩方面的影響。其一,是在誤區2中提及的反饋速度問題。其二,則是如何從海量資料中獲得有意義的結果。如果只有100個使用者,系統可能給使用者推薦非常靠譜的電影或音樂。但同樣的演算法在面對100000個使用者時,就有可能變得非常糟糕。
反之,在某些情況下,資料越多,應用就會變得越智慧。所以,資料規模帶來的影響是多方面的,你應該經常問自己:我有足夠的資料嗎?如果資料增加10倍,會給我的智慧應用帶來什麼影響?
:不考慮解決方案的可擴充套件性
另一個與誤區2、3有關,但又有區別的誤區是認為只需要增加計算機的數量就能不斷地擴充套件智慧應用解決方案。不要輕易地認為任何一個解決方案都是可擴充套件的,有些演算法是可擴充套件的,有些則不行。例如,我們要把數十億條新聞新標題按相似性分成若干組,並不是所有的聚類演算法(見第4章)都可以並行。因此,在應用的設計階段就應該考慮到可擴充套件性。在某些情況下,可以分割資料,然後將演算法應用到分割後的較小的資料上,從而實現並行。運氣好的話,在設計中所選擇的演算法可能是有並行版本的,但因為演算法在智慧應用中的重要性,以至於很多基礎設施和業務邏輯都是圍繞演算法展開的,所以在設計的開始階段就要關注所選擇的演算法的可擴充套件性。
:隨處使用同樣的方法
如果能反覆用同樣的成熟技術解決與應用中的智慧行為有關的各種問題,這無疑充滿了誘惑。要盡力拒絕這種誘惑!我曾經見過有人試圖用Lucene搜尋引擎解決世界上所有的問題。如果你也在做同樣的事情,請記住這個經驗:如果你手上握著錘子,所有的東西在你眼裡都像是一顆釘子。
19 |
:總是能知道計算時間
此類誤區的典型例子是涉及最佳化的問題。在某些應用中,引數的細微變化都會帶來計算時間的大幅變動。人們總是希望在改變問題的引數後依然能夠在限定的反饋時間內解決問題。如果只是計算地球上兩個地理位置間的距離,計算時間當然與具體的地理位置沒有關係,但這並不適用於所有的問題。在某些情況下,資料的細微變化就會造成計算時間劇烈變化,有時候甚至是幾秒鐘與幾個小時的差別。
:複雜的模型更好
任何事情都是過猶不及的。我們首先應該從最簡單的模型開始。然後在解決方案中透過逐步新增其他智慧元素改進效果。KISS(Keep It Simple, Stupid)原則永遠都是軟體工程師的好夥伴。
:存在無偏見的模型
如果有人說過這樣的話,原因只有兩個:無知或偏見!在選擇所需的模型和選擇用於訓練演算法的資料時,就已經引入了偏見。在這裡,我們無法從科學的角度深入地討論學習系統中的偏見,但我們應該注意解決方案中的偏見總是傾向於我們模型的描述和我們的資料。換句話說,偏見使我們的方案受到已知的事實或是我們獲得這些事實的方法的限制,而泛化則是試圖從已知的事實中推斷出未知的事情。
本文節選自《智慧WEB演算法》一書。
圖書詳細資訊:http://space.itpub.net/?uid-13164110-action-viewspace-itemid-705377
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/13164110/viewspace-705566/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 常見的5個區塊鏈應用開發錯誤理解區塊鏈
- 常見的ERP系統實施中的10個誤區
- SOCKS代理的常見誤區
- 對web應用程式安全的常見誤解Web
- 【譯】使用 Android Architecture Components 的五個常見誤區Android
- 常見的資料分析誤區
- DevOps實踐中,遇到的常見誤區有哪些?dev
- Linux新手常見的7個認知誤區,你中了幾個?Linux
- 7個前端新手常見誤區,千萬要避開前端
- JavaScript中的bind方法及其常見應用JavaScript
- 談談資料安全常見的誤區
- 使用代理IP常見的三大誤區
- 資料治理常見的誤區有哪些
- 常見資料分析誤區有哪些?
- 那些常見的Web前端學習誤區分享!Web前端
- 整合營銷常見的四大誤區
- 中科三方:關於SSL證書的幾個常見誤區
- 使用Python時常見的9個錯誤Python
- Golang開發常見的57個錯誤Golang
- Code Review 常見的5個錯誤模式View模式
- 區塊鏈和比特幣常見的七大誤區區塊鏈比特幣
- 智慧指標相關:enable_shared_from_this()在開發中的常見應用指標
- 訊息佇列常見的 5 個應用場景佇列
- 訊息佇列常見的5個應用場景佇列
- 5個常見的JavaScript記憶體錯誤JavaScript記憶體
- Excel小技巧-公式和函式使用的常見八種錯誤合集Excel公式函式
- Redis常見應用場景Redis
- Elasticsearch常見的5個錯誤及解決策略Elasticsearch
- 常見的錯誤 SQL 用法SQL
- Apple Search Ads投放中,應該避免的7個誤區APP
- SSH常見錯誤
- MySQL 常見錯誤MySql
- Web前端工程師的一些常見誤區介紹!Web前端工程師
- 美女程式設計師分享資料庫常見17個使用誤區 - Jaana程式設計師資料庫
- 建設手機網站有哪些常見誤區?網站
- 常見的並聯諧振應用案例
- 流的基本概念以及常見應用
- 【常見錯誤】--Nltk使用錯誤
- 快應用稽核常見問題