Java開發人員的機器學習

自駕車,人臉檢測軟件和語音控制揚聲器都建立在機器學習技術和框架之上,而這些只是第一波。在接下來的十年中,新一代產品將改變我們的世界,開創新的軟件開發方法以及我們創造和使用的應用和產品。

作為Java開發人員,您希望在現在開始高科技公司開始對機器學習進行投資之前,先獲得這個曲線。你今天學到了什麼,你可以在未來五年內建立起來,但你必須從某個地方開始。

本文將讓您開始。您將首先了解機器學習的工作原理,然後是實施和訓練機器學習算法的簡短指南。學習內部學習算法和功能後,您可以使用它來訓練,評分和選擇最適合的預測功能,您將瞭解如何使用JVM框架Weka來構建機器學習解決方案。本文著重於監督機器學習,這是開發智能應用程序的最常用方法。

機器學習和人工智能

機器學習從人工智能領域演變而來,它尋求生產能夠模仿人類智力的機器。雖然機器學習是計算機科學的新興趨勢,人工智能不是一個新的科學領域。20世紀50年代初由Alan Turing開發的圖靈測試是為確定計算機是否具有真實智能而開發的首個測試之一。根據圖靈測試,一臺電腦可以通過欺騙人類相信它也是人類來證明人的智慧。

許多最先進的機器學習方法是基於幾十年的概念。在過去十年中發生了什麼變化,計算機(和分佈式計算平臺)現在具有機器學習算法所需的處理能力。大多數機器學習算法需要大量的矩陣乘法和其他數學運算來處理。管理這些計算的計算技術甚至在二十年前就不存在,但今天卻沒有。

機器學習使程序能夠執行質量改進過程並擴展其功能,而無需人為參與。通過機器學習構建的程序能夠更新或擴展自己的代碼。

監督學習與無監督學習

監督學習和無監督學習是機器學習最流行的方法。兩者都需要給機器提供大量的數據記錄來關聯和學習。這種收集的數據記錄通常被稱為特徵向量。在個別房屋的情況下,特徵向量可能包括房屋總面積,房間數量和房屋年齡等特徵。

在監督學習中,訓練機器學習算法以正確地迴應與特徵向量有關的問題。為了訓練算法,機器被饋送一組特徵向量和相關聯的標籤。標籤通常由人類註釋器提供,並且表示給定問題的正確“答案”。學習算法分析特徵向量及其正確的標籤,以找到它們之間的內部結構和關係。因此,機器學習正確地響應查詢。

例如,智能房地產應用程序可能會使用特徵向量進行訓練,其中包括房屋的大小,房間數量以及各種房屋的年齡。根據這些因素,人類標籤商將按照正確的房價對每個房屋進行標籤。通過分析數據,房地產應用將受到培訓,以回答“ 我可以得到這個房子多少錢 ”的問題。

培訓過程結束後,新的輸入數據將不會被標記。該機器將能夠正確響應查詢,即使對於未看到的未標記的特徵向量也是如此。

在無人值守學習中,該算法被編程為預測沒有人標籤的答案,甚至是問題。無監督學習不是預先確定標籤或結果,而是利用大量數據集和處理能力來發現以前未知的相關性。例如,在消費者產品營銷中,無監督學習可用於識別隱藏的關係或消費者分組,最終導致新的或改進的營銷策略。

本文著重於監督機器學習,這是當今最常見的機器學習方法。

監督機器學習

所有機器學習都是基於數據。對於受監督的機器學習項目,您將需要以有意義的方式為您尋求的結果標註數據。在表1中,請注意,房屋記錄的每一行都包含“房價”標籤。通過將行數據與房價標籤相關聯,該算法最終將能夠預測不在其數據集中的房屋的市場價格(注意,房屋面積基於平方米,房價基於歐元)。

在早期階段,您可能會手動標註數據記錄,但最終可能會對您的程序進行自動化處理。你可能已經看到這樣的電子郵件應用程序,其中移動電子郵件到您的垃圾郵件文件夾導致查詢“這是垃圾郵件?” 當您回覆時,您正在對該程序進行培訓,以識別您不想看到的郵件。應用程序的垃圾郵件過濾器可以學習將來自同一來源的郵件或具有類似內容的未來郵件標籤,並將其處理。

標記的數據集僅用於培訓和測試目的。在此階段結束之後,機器學習算法用於未標記的數據實例。例如,您可以為預測算法提供新的未標記的房屋記錄,並根據培訓數據自動預測預期房價。

機器如何學習預測

監督機器學習的挑戰是為特定問題找到適當的預測功能。在數學上,挑戰是找到輸入輸出函數,其輸入變量x並返回預測值y。該假設函數(hθ)是訓練過程的輸出。假設函數通常也稱為目標或預測函數。

Java開發人員的機器學習

在大多數情況下,x表示多數據點。在我們的示例中,這可以是由房屋大小值和房間數值定義的單獨房屋的二維數據點。這些值的數組被稱為特徵向量。給定具體的目標函數,該函數可用於對每個特徵向量x進行預測。要預測個別房屋的價格,您可以使用包含房屋面積和房間數量的特徵向量{101.0,3.0}來調用目標函數:

//目標函數h(它是學習過程的輸出) 函數< Double [],Double > h = ...;//設置與房子的大小= 101數的室和= 3的特徵向量雙 [] X = 新 雙 [] { 101.0,3.0 };//並預測房價(標籤)double y = h.apply(x);

在清單1中,數組變量x值表示房子的特徵向量。目標函數返回的y值是預測的房價。

機器學習的挑戰是定義一個目標函數,儘可能準確地處理未知的,不可見的數據實例。在機器學習中,目標函數(hθ)有時被稱為模型。這種模式是學習過程的結果。

Java開發人員的機器學習

基於標記的訓練示例,學習算法在訓練數據中尋找結構或模式。從這些,它產生一個從該數據中普遍化的模型。

通常,學習過程是探索性的。在大多數情況下,通過使用學習算法和配置的不同變體,該過程將被多次執行。

最終,所有模型將根據性能指標進行評估,最好的模型將被選中。然後,該模型將用於計算未來未標記數據實例的預測。

線性迴歸

要訓練一臺機器來思考,第一步是選擇你要使用的學習算法。線性迴歸是最簡單和最受歡迎的受監督學習算法之一。該算法假設輸入特徵和輸出標籤之間的關係是線性的。以下通用線性迴歸函數通過彙總乘以θ參數(θ)的特徵向量的每個元素來返回預測值。在訓練過程中使用θ參數以根據訓練數據適應或“調整”迴歸函數。

Java開發人員的機器學習

在線性迴歸函數中,theta參數和特徵參數由訂閱號列舉。訂閱號表示矢量中θ參數(θ)和特徵參數(x)的位置。注意特徵x 0是為計算目的設定值為1的常數偏移項。因此,諸如房屋大小的域特定功能的索引將從x 1開始。作為示例,如果為House特徵向量的第一個值設置x 1,則房屋大小,則將為下一個值,房間數量等設置x 2。

清單2顯示了這種線性迴歸函數的Java實現,數學上顯示為hθ(x)。為了簡單起見,使用數據類型進行計算double。在該apply()方法中,期望數組的第一個元素的值設置為1.0以外的函數。

清單2. Java中的線性迴歸

public class LinearRegressionFunction implements Function < Double [],Double > { private final double [] thetaVector; LinearRegressionFunction(double [] thetaVector){ this .theTVector = Arrays.copyOf(thetaVector,thetaVector.length); }public Double apply(Double [] featureVector){ //由於計算原因,第一個元素必須為1.0 assert featureVector [ 0 ] == 1.0 ;//簡單,順序實現雙重預測= 0 ; for(int j = 0 ; j <thetaVector.length; j ++){ 預測+ = thetaVector [j] * featureVector [j]; }回報預測; }public double [] getThetas(){ return Arrays.copyOf(thetaVector,thetaVector.length); }}

為了創建一個新的實例LinearRegressionFunction,您必須設置theta參數。θ參數或向量用於將通用迴歸函數適應於底層訓練數據。程序的theta參數將根據訓練示例在學習過程中進行調整。訓練有素的目標功能的質量只能與給定訓練數據的質量一樣好。

在下面的示例中,LinearRegressionFunction將根據房屋大小來實例化預測房價。考慮到x 0必須為1.0的常數值,則使用兩個θ參數來實例化目標函數。θ參數是學習過程的輸出。創建新實例後,預計房屋面積1330平方米的房屋價格如下:

//這裡使用的θ向量是一個列車過程的輸出雙 [] thetaVector = 新 雙 [] { 1.004579,5.286822 };LinearRegressionFunction targetFunction = new LinearRegressionFunction(thetaVector);//創建具有X0特徵矢量函數= 1(用於計算的原因)和X1 =房子大小雙 [] featureVector = 新 雙 [] { 1.0,1330.0 };//使預測double predictionPrice = targetFunction.apply(featureVector);

目標函數的預測線在下圖中以藍線顯示。該行已通過執行所有房屋大小值的目標函數來計算。圖表還包括用於培訓的價格尺寸對。

Java開發人員的機器學習

到目前為止,預測圖似乎足夠好。圖形座標(截距和斜率)由θ矢量定義{ 1.004579, 5.286822 }。但是你怎麼知道這個theta矢量是最適合你的應用程序?如果您更改了第一個或第二個theta參數,函數是否更適合?要確定最適合的theta參數向量,您需要一個效用函數,它將評估目標函數的執行情況。

評分目標功能

在機器學習中,使用成本函數(J(θ))來計算給定目標函數的平均誤差或“成本”。

Java開發人員的機器學習

成本函數表示該模型與訓練數據的吻合度。要確定上面訓練的目標函數的成本,您可以計算每個房屋示例(i)的平方誤差。該誤差是所計算的距離ÿ值與實際ÿ房子示例的值我。

線路圖

Java開發人員的機器學習

Java開發人員的機器學習

Java開發人員的機器學習

1、具有1-5工作經驗的,面對目前流行的技術不知從何下手,

需要突破技術瓶頸的。2、在公司待久了,過得很安逸,

但跳槽時面試碰壁。需要在短時間內進修、跳槽拿高薪的。

3、如果沒有工作經驗,但基礎非常紮實,對java工作機制,

常用設計思想,常用java開發框架掌握熟練的。

4、覺得自己很牛B,一般需求都能搞定。

但是所學的知識點沒有系統化,很難在技術領域繼續突破的。

5. 群號:高級架構群 606187239備註好信息!

6.阿里Java高級大牛直播講解知識點,分享知識,

多年工作經驗的梳理和總結,帶著大家全面、

科學地建立自己的技術體系和技術認知!

相關推薦

推薦中...