机器学习的练功心法(一)——机器学习概述
文章目錄
- 1 機器學習概述
- 1.1 歡迎
- 1.2 什么是機器學習
- 1.3 監督學習
- 1.4 無監督學習
- 1.5 強化學習
- 1.6 機器學習的開發流程
1 機器學習概述
1.1 歡迎
對于機器學習來說,我們需要有一個大局觀,什么是大局觀?你站的比別人高,掌握的就比別人快,對于這門課程,你要掌握的學習方法和你在學數據結構那樣類似,理解其算法思想并且能用代碼敲出來。當然,代碼并不是一定要和例子上的一模一樣,但是實現的功能要一樣。
讓我們來看看機器學習在生活上的例子,當你使用Google搜索引擎上網查找資料的時候,你搜索前面的幾個關鍵詞它就能顯示后面的關鍵詞,這實際上和機器學習分不開的。
同樣地,在蘋果相機自拍后,相冊能夠根據照片識別你和你的朋友,并且將不同的照片放置到不同的照片中,這也是機器學習的一種應用。
還有一種應用是:你打開手機,有時候會發現有很多垃圾信息,而這些信息一般都會放在垃圾信息的分組中,這也是機器學習的功勞,它能夠過濾大量的垃圾信息。
讓我們來看看我們會參考哪些書籍呢?本文博主采用的是以下的教材:
我希望你能這么使用這幾本書。代碼方面使用原書來進行鞏固,并且閱讀其他需要鞏固的知識;數學基礎用李航老師的統計學習方法來補足;而西瓜書作為另類的理解加強你對機器學習的學習。
機器學習近年來之所以這么火的原因是因為網絡和自動化技術的發展,這也意味著我們擁有大量的數據集,通過機器學習對這些大量的數據集進行分析,可以挖掘出有用的信息為我們所用。
還有一個原因是:一些應用程序不能人為編寫,這樣的話利用機器學習就能讓其為我們編寫。如手寫數據集、自然語言處理、計算機視覺。
最后一個原因是:私人定制程序的發展。比如亞馬遜,淘寶的推送商品。通過你購物或者瀏覽過的商品,程序可以推送一些你可能感興趣的內容。
1.2 什么是機器學習
讓我們看一下在1959年Arthur Samuel給出的機器學習的概念,它將機器學習定義為在沒有明確設置的情況下,是計算機具有學習能力的計算領域。
這一切都來源于一個叫Samuel的人,它本身不是很會玩跳棋這種游戲,但是它通過讓機器和自己對弈上萬次,使得機器知道什么布局容易贏什么布局容易輸,到最后機器玩跳棋的水平甚至比Samuel還要高。
讓我們再看一下Mitchell在1998年提出的機器學習的定義,它說從計算機程序從經驗E中學習,解決某一任務T進行某一性能度量P,通過P測定在T上的表現因經驗E而提高。
讓我們拿上面的跳棋游戲來舉例:對于跳棋游戲來說經驗E就是程序和自己上萬次的下棋,任務T就是玩跳棋,性能度量P就是與新對手玩跳棋的概率。
對于機器學習來說有很多分類,最主要的兩類是監督學習和無監督學習,在后面我們會多次提到這些莫名其妙的術語。但簡單來說,監督學習就是我們有某種準則,可以讓機器依照我們的準則去學習;然而在無監督學習中,我們沒有提供任何準則,機器會從海量的數據中自動總結出某種準則。
還有一種是強化學習,這類機器學習常用于計算機視覺,據我所知很多人喜歡拿來做游戲對象捕捉外掛(比如原神釣魚外掛)。
1.3 監督學習
機器學習中最常用的類型即監督學習(supervised learning)。讓我們來體會一個比較簡單的例子:
有一個學生在俄勒岡的波特蘭市收集了一批數據用作房價預測。
其中橫軸的房屋的平方數,豎軸是房屋的價格。如果此時這個學生想要賣掉他在波特蘭的房子,比如是500平方,那么它大概能賣多少錢。
一種比較簡單的思維是,根據收集來的數據,我們認為這些數據可能是線性關系,當然也可以是類如二次函數或二次多項式。當然我們考慮最簡單的,其可能存在一種線性關系即一次函數,那么這個房子賣出的價格y很有可能是500在函數上的映射。
綜上所述,監督學習就是給定算法一個數據集,其中可能包含了正確答案,根據這些數據集我們通過已有的模型訓練出模型對應的函數。以后用這個函數預測更多未知的數據,體現在預測房價問題上就是給出一個房子面積來預測房價。
預測某個價格,這如果用更專業的術語來講,這實際上叫做回歸問題。所謂的回歸問題是指我們想要預測連續的數值輸出,比如我們有了一堆數據集,根據數據集和既定的模型訓練出來的函數可以預測任何一個數值,這個數值可以是標量可以是連續值。
讓我們再看一個例子。
假設你想看醫療記錄,然后設法預測腫瘤是良性的還是惡性的。我們把這種好結果或壞結果給出一個術語叫做標簽。
現在我們現在已經擁有了醫療記錄的往年記錄,那么根據這些往年的記錄來選擇一個既定的模型例如線性模型,然后訓練出一個對應的函數。當一個新的病例出現,這個算法根據腫瘤的大小來判斷腫瘤屬于哪種標簽。
當然了你不能思考的那么死,我們標簽不一定只有兩個對吧。如我們設定0號標簽為良性,沒有癌癥;設定1號標簽為第一種癌癥;設定2號標簽為第二種癌癥。但是當我們標簽只有兩個的時候,我們把這類分類問題叫做二分類問題。
當然上述可以發現我們僅僅根據一個腫瘤大小來判定腫瘤的良惡。實際上這是不夠準確的。在實際開發中,我們會選取多個特征,比如病人的年紀、病人患病的時間長短、腫塊的厚度、腫塊的平均大小。
1.4 無監督學習
讓我們在這一小節探討一下第二種主要的機器學習問題——無監督學習。無監督學習實際上通常用聚類算法來實現。在下面,我們來看看無監督學習的含義是什么。
在上一小節中,我們說過特征可以有多個,當上一小節我們舉的腫瘤例子擁有兩個特征時,我們用x1和x2x_1和x_2x1?和x2?來分別表示兩個特征,其中圈和叉表示腫瘤的良性或惡性。
而在無監督學習中,機器僅僅收到一團數據集,卻沒有被告知要干嘛,如下所示:
通過無監督學習,機器可能判定在數據集中存在兩個簇,并且機器對其自動劃分。對這類應用比較一個顯著的例子是谷歌搜索引擎。
谷歌搜索引擎做了這么一件事,它收集了成千上萬的新聞,然后根據無監督學習讓機器自己總結出某種合適的主題,然后對新聞進行劃分。
讓我們來看看無監督學習在其他方面的應用。
無監督學習可以用于組織大型的計算機集群,其可以試圖找出哪些機器可以更好地進行協同工作。
無監督學習還可以用于社交軟件,通過相同的習性和其他某些特征,社交軟件可以向你推送一些你感興趣的人或者你身邊的人。
無監督學習還可以用于市場分析。許多公司擁有龐大的客戶信息數數據庫,對于一個客戶數據集,大公司常常會讓聚類算法劃分不同的人群,使其歸為不同的市場消費人群。用無監督學習的原因是,我們并不知道實現市場的分類是什么,這個具體的分類是機器幫我們做的事。
最后無監督學習還可以用于天文分析。
1.5 強化學習
最后一個機器學習是強化學習。強化學習類似于激素。為什么這么說呢。強化學習可以通過對環境的交互來提高其預測性能。當前所在的環境狀態通常包含獎勵信息。當機器對某個環境中的內容交互時,獎勵信息會強化機器的學習,這也是為什么它稱為強化學習的原因。
當然,我們這里不會過多講述關于強化學習的知識,因為它實際上不利于新手了解機器學習。
1.6 機器學習的開發流程
機器學習一般是先獲取數據,這些數據一般是公司給你,如果是自己練習的話一般是下載或爬取。
第二步我們要做的是數據處理,對于一些不規則或異常數據我們會做一些簡單的處理,其中刪除或置0比較常見。
第三步是特征工程,這個我們會在第三章細講。
第四步是訓練模型,訓練出來后的模型需要評估其效果。
第五步是將訓練出來的模型應用于開發中。
總結
以上是生活随笔為你收集整理的机器学习的练功心法(一)——机器学习概述的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在MinGW下使用DShow的方法
- 下一篇: 基于ssm java jsp的酒店管理系