原文連接:https://mp.weixin.qq.com/s/nXFVTorYOm5LjRV5Cic2_w 算法
若是你不能用數據表示你所知,那麼說明你對它所知很少;若是你對它所知很少,那麼你就沒法控制它;若是你沒法控制它,那麼就只能靠運氣了。 機器學習
—— 陳希章 工具
不久前,我開始正兒八經地系統地學習人工智能,而且發起了一個結對學習的活動,目前已經有將近20位同窗一塊兒結對,詳情請參考下面文章的說明—— 約你六個月時間一塊兒學習實踐人工智能 。 學習
目前仍接受報名,但我會對人數總量作必定的控制,而且各位在加入以前必須想清楚本身可否真的花時間堅持下去,必定時間沒有學習進度的會被請出羣。 大數據
我以前承諾你們,會將在學習過程當中的筆記分享出來。這是第一篇,也是我完成第一門課《Introduction to Artificial Intelligence》第一單元《Machine Learning》的一些心得。 人工智能
我寫的筆記,只是學習過程當中的一些記錄,或者一些思考,頗有可能會有不少地方有錯誤,歡迎你們指出,幫助我提升。 spa
這門課是人工智能入門,它的內容分爲四個部分:機器學習概述,語音和通訊,計算機視覺,對話平臺。 設計
本節介紹了機器學習的基本概念,主要應用場景,並着重經過以Azure Machine Learning Studio爲載體,講解了導入數據、創建和訓練、驗證模型,發佈成Web Service的全過程,經過完成本節學習,你能夠對Machine Learning有些基本概念,而課後的練習是一個完整的範例,你能夠了解如何經過分類算法創建模型來實現糖尿病的預測。(它分別使用了邏輯迴歸和決策樹算法作比較,並最終選擇了決策樹做爲最優解)。 3d
機器學習的定義,有興趣能夠參考維基百科的說明:https://zh.wikipedia.org/wiki/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0 blog
機器學習是人工智能的一個分支。人工智能的研究歷史有着一條從以"推理"爲重點,到以"知識"爲重點,再到以"學習"爲重點的天然、清晰的脈絡。顯然,機器學習是實現人工智能的一個途徑,即以機器學習爲手段解決人工智能中的問題。機器學習在近30多年已發展爲一門多領域交叉學科,涉及機率論、統計學、逼近論、凸分析、計算複雜性理論等多門學科。機器學習理論主要是設計和分析一些讓計算機能夠自動"學習"的算法。機器學習算法是一類從數據中自動分析得到規律,並利用規律對未知數據進行預測的算法。由於學習算法中涉及了大量的統計學理論,機器學習與推斷統計學聯繫尤其密切,也被稱爲統計學習理論。算法設計方面,機器學習理論關注能夠實現的,行之有效的學習算法。不少推論問題屬於無程序可循難度,因此部分的機器學習研究是開發容易處理的近似算法。
看了這麼一大段的介紹,其實仍是會比較暈。其實最簡單理解的話,機器學習最重要的研究目標就是從大量的數據中找出來一些規律,而且能利用該規律進行預測。
通過這麼多年的發展,解決絕大部分問題的算法都已經存在了,咱們如今不少時候要作的是收集和準備數據(包括清洗和整理),而後根據業務領域經驗建模,而且選擇不一樣的算法去訓練模型、驗證模型,發現和逼近最好的預測模型。下圖是目前Azure Machine Learning 中支持的算法列表。
機器學習根據其原理分爲
監督學習與非監督學習的根本區別在於訓練集數據是否須要人爲地進行標記。典型的監督學習算法包括迴歸和分類,而典型的無監督學習算法是聚類。半監督學習是介於二者之間的。
而關於迴歸(Regression)和分類(Classification),又有一些明顯的區別,我傾向於採納下面知乎網友的回答。
那麼,回到咱們這堂課的命題:經過機器學習來預測某個病人是否爲糖尿病(及其機率),這是一個定性問題,它的預測是離散的,而不是連續的,因此這是一個分類的任務。
假設咱們手工有15000個病例樣本,分別記錄了他們的血糖,血壓,年齡等信息,以及他們是否確診爲糖尿病的數據。(這個Diabetic字段很是重要,而這其實也就是須要人工標記的關鍵信息)
另外,還有一份數據是病人和醫生的對照表,在本課程學習和做業中,雖然並非必須的,但這符合真實場景的須要。
對於人工智能和機器學習而言,相比較看起來很酷炫的建模、訓練、驗證,其實很重要的工做都是在收集數據,有好的數據纔會有真正有價值的人工智能。而收集數據中最關鍵的一個工做是定義哪些數據須要收集,例如上述例子,爲何咱們去分析糖尿病時須要選擇這些數據,而不是其餘的。這裏面其實已經有一個建模的過程,而這部分是計算機科學沒法實現的,它所依賴的是天然科學和專家經驗。
若是隻是作這種預測,那麼我要說,其實我在十幾年前就已經能作出來了,那時候我記得"人工智能(Artificial Intelligence)"或"機器學習(Machine Learning)"並無如今這麼流行,人們更熱衷於討論"商業智能(Business Intelligence)"和"數據挖掘(Data Mining)",我對SQL Server 的BI 和Data Mining還算有一些研究,因此作這種預測仍是比較輕鬆的。
今時不一樣往日,SQL Server仍然還有這些能力。但真正的大數據時代,咱們可能還須要雲端的解決方案。微軟的Azure Machine Learning 解決方案就是其中之一,而Azure Machine Learning Studio會提供你須要的一切。
下圖是我建立好的Training experiment (用來作訓練的實驗)
做爲一個強大的Machine Learning的工具,它預設了上百個組件,而且能夠隨時對數據進行可視化分析。
對於迴歸和分類算法,一般咱們會在進行數據鏈接,規範化處理後,對數據集進行拆分,一部分(一般70%)用於訓練模型,另外一部分(一般30%)用於驗證模型。以下圖所示:
在最後一步是驗證模型,一般咱們會選擇多個算法比對其輸出結果。以下圖所知這種輸出,Accuracy 越高,則表示準確性越高,可信度也就越高。
模型訓練好以後,接下來就是怎麼用於預測了。你能夠經過建立一個Predictive experiment來實現這個需求。請注意,它其實跟以前的Training experiment看起來很像,只不過你仔細看的話,會發現input處不同,並且中間的一些組件,它是引用到了Training experiment中的。
你能夠一鍵將其發佈爲一個Web Service,以便支持客戶端調用。
下圖是在Excel中經過一個Add-in進行預測分析的效果(支持批量對數據集進行預測)
下圖是我經過Python調用REST API進行預測的範例
歡迎你們關注個人《人工智能學習筆記》,請關注本公衆號,並掃描下面二維碼收藏本系列文章。