智慧型應用中八個常見的誤區

2021-09-09 03:57:32 字數 2450 閱讀 4648

智慧型應用中八個常見的誤區

17

到此,我們已經介紹了與智慧型應用相關的基礎知識,現在你應該已經對什麼是智慧型應用,以及應該如何使用智慧型應用有了乙個整體的了解。你很有可能迫不及待地想要開始寫**,我們不會讓你失望的。除了本章之外,每一章都會給你介紹新的有價值的**。

但在開始進入激動人心且充滿經濟利益的智慧型應用世界之前,先來看一些帶有智慧型功能的專案中常見的錯誤,或者說是誤區。你可能熟悉分布式計算的八大誤區(如果沒有看過,可以參考

van den hoogen

很多因素會導致你獲取的資料不可靠。在考慮具體的智慧型演算法解決方案之前,首先就要判斷資料是否可信。如果資料有問題,就算是最聰明的人,通常也會得出錯誤的結論。

可能導致資料出錯的原因有很多,在此不可能一一枚舉,下面列出了部分有代表性的可能導致資料出錯的因素: ·

在開發過程中所使用的資料不能代表產品環境中的資料。例如,對某個社交網路中的使用者按身高分類「高」、「一般」和「矮」。如果開發階段所使用的資料中最矮的使用者的身高是1公尺

84,那就有可能會得出「你太矮了,才1公尺

84」的可笑結論。 ·

資料中可能含有缺失值。實際上,除非資料是人造的,否則資料就肯定會含有缺失值。缺失值的處理非常需要技巧,通常,既可以保持缺失值狀態不變,也可以用某種預設值或是計算得到的值來填充。兩種情況都可能導致不穩定的實現。 ·

資料可能會改變。資料庫策略可能會變,或者資料庫中資料的語義也有可能發生變化。 ·

資料沒有規範化。假如我們關注的是每個人的體重。為了能根據體重得到有意義的結論,所有的單位應該是統一的:磅或是公斤,兩者只能取其一,而不能是兩者的混合。 ·

所想的演算法可能不適合資料。資料有不同的形式,也就是資料型別。有些資料集是數值型別的,有些則不是;有些資料集可以排序,有些則不能;有些數值的資料集是離散的(例如,房間中的人數),有些則是連續的(例如氣溫)。 18

誤區2:計算能馬上完成

任何解決方案的計算都需要時間,應用的反饋速度對於業務在經濟方面的成功是至關重要的。不能盲目地假設應用能在限定的反饋時間內在所有的資料集上完成所有的計算,需要仔細測試演算法在各種操作中的效能。

當我們討論智慧型應用時,規模是很重要的。資料的規模會給整個應用帶來兩方面的影響。其一,是在誤區

2中提及的反饋速度問題。其二,則是如何從海量資料中獲得有意義的結果。如果只有

100個使用者,系統可能給使用者推薦非常靠譜的電影或**。但同樣的演算法在面對

100000

個使用者時,就有可能變得非常糟糕。

反之,在某些情況下,資料越多,應用就會變得越智慧型。所以,資料規模帶來的影響是多方面的,你應該經常問自己:我有足夠的資料嗎?如果資料增加

10倍,會給我的智慧型應用帶來什麼影響?

另乙個與誤區2、

3有關,但又有區別的誤區是認為只需要增加計算機的數量就能不斷地擴充套件智慧型應用解決方案。不要輕易地認為任何乙個解決方案都是可擴充套件的,有些演算法是可擴充套件的,有些則不行。例如,我們要把數十億條新聞新標題按相似性分成若干組,並不是所有的聚類演算法(見第

4章)都可以並行。因此,在應用的設計階段就應該考慮到可擴充套件性。在某些情況下,可以分割資料,然後將演算法應用到分割後的較小的資料上,從而實現並行。運氣好的話,在設計中所選擇的演算法可能是有並行版本的,但因為演算法在智慧型應用中的重要性,以至於很多基礎設施和業務邏輯都是圍繞演算法展開的,所以在設計的開始階段就要關注所選擇的演算法的可擴充套件性。

如果能反覆用同樣的成熟技術解決與應用中的智慧型行為有關的各種問題,這無疑充滿了**。要盡力拒絕這種**!我曾經見過有人試圖用

lucene

搜尋引擎解決世界上所有的問題。如果你也在做同樣的事情,請記住這個經驗:如果你手上握著錘子,所有的東西在你眼裡都像是一顆釘子。 19

智慧型應用軟體跟其他的軟體類似——都有一定的應用領域,也有一定的侷限性。在將你所喜愛的解決方案應用到新領域之前,要徹底地進行測試。此外,對於每乙個問題都應該從新的角度去觀察。不同的演算法或許能更加高效地解決新問題。

此類誤區的典型例子是涉及優化的問題。在某些應用中,引數的細微變化都會帶來計算時間的大幅變動。人們總是希望在改變問題的引數後依然能夠在限定的反饋時間內解決問題。如果只是計算地球上兩個地理位置間的距離,計算時間當然與具體的地理位置沒有關係,但這並不適用於所有的問題。在某些情況下,資料的細微變化就會造成計算時間劇烈變化,有時候甚至是幾秒鐘與幾個小時的差別。

任何事情都是過猶不及的。我們首先應該從最簡單的模型開始。然後在解決方案中通過逐步新增其他智慧型元素改進效果。

kiss

(keep it ******, stupid

)原則永遠都是軟體工程師的好夥伴。

如果有人說過這樣的話,原因只有兩個:無知或偏見!在選擇所需的模型和選擇用於訓練演算法的資料時,就已經引入了偏見。在這裡,我們無法從科學的角度深入地討論學習系統中的偏見,但我們應該注意解決方案中的偏見總是傾向於我們模型的描述和我們的資料。換句話說,偏見使我們的方案受到已知的事實或是我們獲得這些事實的方法的限制,而泛化則是試圖從已知的事實中推斷出未知的事情。

本文節選自《智慧型

web演算法》一書。

圖書詳細資訊

:

對於筆記本電池使用的八個誤區

誤區一 膝上型電腦買回來需要反覆充放電三次以便啟用電池。除非你買到的膝上型電腦是庫存一年以上的產品,否則就不需要這樣做,因為現在的電池電芯在出廠的時候已經經過啟用,而電芯在封裝成筆記本電池的時候又經過一次相當於啟用的檢驗,因此你拿到手的電池,早已是被啟用過的了,再做三次充放電過程只是無謂的增加電池的...

使用者畫像應用中的常見誤區

之前對使用者畫像已經有兩篇部落格輸出,分別是一步一步認識使用者畫像和使用者畫像如何驗證正確性,這兩篇更多的是講解使用者畫像的過程性問題,在實際業務應用中可能遇到的誤區是本篇部落格主要的內容。1.畫像與業務場景關聯度不高 在 使用者畫像 概念之下,很多時候為了跟風而忘了使用的本質是為了什麼,因此在未明...

八個Docker的真實應用場景

在這篇文章中,作者介紹並分享了一些docker的實際應用案例。通過這些docker的使用場景,我們可以了解如何有力地借助docker,在非常低的額外開銷的情況下,打造一致性的環境。在這篇文章中,我想介紹並分享一些docker的實際應用案例。在我們討論docker的使用場景之前,先來看看docker這...