機器學習初步瞭解
初學機器學習,作為一個入門的新手,且第一次寫部落格,因為時間比較多同時也為了理解地更加深刻,就把自己的想法寫出來,將來如果需要用到的話,也方便找到,理解地可能不是很準確,望大家理解。
重點內容
對機器學習的理解,所謂機器學習,就是機器從資料中學習,機器從資料中學出規律,然後運用到新的資料中,在機器學習中,前者稱為訓練集,後者稱為測試集。
學機器學習,我們第一個往往學的是線性迴歸(linear regression),在這裡,我從吳恩達教授講的例子說起,吳恩達講的是一個房屋價格與面積的關係,已知一部分房屋的面積與其價格,讓我們預測新的房子的價格。
我們的目的是要找到一條直線,是的這些點儘量要靠攏這條直線。那麼要如何找到這條直線呢?
接下來,我們就要建立一個模型,我們設房屋面積為X,那麼房屋的價格可以用下式來表示:
上面的關係式中,X是特徵,h(x)是標籤,在本例中特徵可以是房屋面積,房屋的臥室數目,房屋所處的樓層,只要是能夠影響或者決定價格的因素都可以算,而theta(抱歉,我找不到Mathtype編輯器在哪)是引數,可以稱之為權重,也就是特徵能夠對標籤的貢獻是多大。
那麼,問題又來了,我們該如何選擇theta才能使得這個模型是相對準確的呢,在這裡我們需要定義一個損失函式,也稱為懲罰函式,損失函式衡量的是預測值與真實值之間的差異。損失函式定義如下:
之所以這樣定義損失是因為用數學問題很好解決,你也可以定義成其他方式,比如差的絕對值函式。
從上式看出,損失函式是一個二次函式,也就是說他是一個凸函式,具有全域性最優解,也是因為它具有凸函式的性質,它才可以用梯度下降演算法來解決,事實上,無論具有多少特徵,也改變不了損失函式具有全域性最優解的本質,例如當具有兩個特徵時,是一個碗狀曲面,在本例中,損失函式是一個二次函式,我畫了一個二次函式:
損失函式就是上面圖的左右上下平移。接下來,我們就要求解theta了,我們的目的是要到達最低點,也就是讓損失函式最小,在這裡我們就想到了梯度,梯度是方向向量,因為某一點的梯度代表的是損失函式下降最快的方向,所以我們用導數更新theta.
為什麼是“減號”,我們來看損失函式,當某處的斜率是負值時,我們要增加theta,這樣就會離目標更近,當斜率是正值時,我們要減小theta,因此是“減號”。注意,損失函式的橫軸代表theta.
我寫了一個程式碼,是用的python.
程式碼如下:
import matplotlib.pyplot as plt
import numpy as np
from numpy import *
# Load the diabetes dataset 載入資料集
diabetes = datasets.load_diabetes()
# Use only one feature 該資料共6維,取第三列
diabetes_X = diabetes.data[:, np.newaxis, 2]
# Split the data into training/testing sets
diabetes_X_train = diabetes_X[:-20] #訓練集為除去後面的20個
##############
diabetes_X_train1=diabetes_X
##############
#diabetes_X_test = diabetes_X[-20:] #測試集為後20個
# Split the targets into training/testing sets
diabetes_y_train = diabetes.target[:-20] #同
############
diabetes_y_train1=diabetes.target
#plt.scatter(diabetes_X_train1, diabetes_y_train1, color='black')
############
#定義loss function
X=diabetes_X_train1
y=diabetes_y_train1
w=np.zeros((2,1))
m=len(X)
X0=np.ones((1,m), dtype='float64')
XX=vstack((X0,X.T))#垂直連線函式
#estimation=np.dot(w.T,XX)
#J=0.5*np.dot(estimation-y,(estimation-y).T)
J0=np.zeros((1000,1),dtype='float64')
#梯度下降
#迭代次數1000,學習率0.1
lamada=0.1
iritation=1000
for i in range(1000):
estimation=np.dot(w.T,XX)
w0=w[0]-0.1/m*np.sum(estimation-y)
w1=w[1]-0.1/m*np.dot((estimation-y),X)
w[0]=w0
w[1]=w1
J0[i]=0.5/m*np.dot(estimation-y,(estimation-y).T)
plt.scatter(diabetes_X_train1, diabetes_y_train1, color='black')
plt.scatter(X.T,np.dot(w.T,XX), color='green', linewidth=1)
#plt.scatter(diabetes_X_train1[-20:], diabetes_y_train1[-20:], color='black')
#plt.plot(X.T[-20:],np.dot(w.T,XX)[-20:], color='green', linewidth=1)
plt.show()
t=arange(1000)
plt.plot(t,J0,color='red',linewidth=3)
plt.xticks(())
plt.yticks(())
plt.show()
print("引數為:" ,w)
#總結一下,迭代過程中,估計值也會隨著引數的迭代而改變,第二,通常會除以一個m,
#雖然我不知道為什麼沒有加m就會迭代不出來,反正我的是這樣,為什麼那條直線用plot畫不出來
#而我要畫scatter圖,為什麼,最終得到的引數是對的。
先寫到這裡,如有錯誤歡迎指正。
相關推薦
機器學習初步瞭解
初學機器學習,作為一個入門的新手,且第一次寫部落格,因為時間比較多同時也為了理解地更加深刻,就把自己的想法寫出來,將來如果需要用到的話,也方便找到,理解地可能不是很準確,望大家理解。 重點內容 對機器學習的理解,所謂機器學習,就是機器從資
機器學習,瞭解一下?
1. 為什麼要學? 老師上課時候就說過:傳統演算法解決確定性問題,而機器學習解決非確定性問題。 好吧,確實激起了我的興趣,所以系統學習一下吧。 文章圖片來源於 GitHub,網速不佳的朋友請點我看原文。 順便軟廣一下個人技術小站:godbmw.com。歡迎常來♪(^∇^*) 2. 機器學習演算法 機器學習
Spring學習——初步瞭解(一)
Spring是於2003 年興起的一個輕量級的Java 開發框架,由Rod Johnson建立。簡單來說,Spring是一個分層的JavaSE/EE full-stack(一站式) 輕量級
機器學習初步探索
**1、什麼是機器學習? **機器學習還有模式識別、計算機視覺、語音識別、統計學習以及自然語言處理等,按其種類來說分為監督學習和非監督學習。 1.1監督學習 1.1.1分類 在文類資訊特徵提取中,向量空間模型(VSM: Vector Space Model),把對文字內容的處理簡化為向量空
機器學習入門-瞭解相關概念
按照了解一個新事物的步驟,學習機器學習時我們首先提出的問題是,什麼是機器學習?機器學習可以幹什麼?我們為什麼需要機器學習? 從人類誕生以來便一直在學習,學習行走,鑽木取火。。。自我們呱呱墜地便開始了一生的學習,人類學習的過程是先觀察後學習最後獲得相關
機器學習應該瞭解的十大演算法
毫無疑問,近些年機器學習和人工智慧領域受到了越來越多的關注。隨著大資料成為當下工業界最火爆的技術趨勢,機器學習也藉助大資料在預測和推薦方面取得了驚人的成績。比較有名的機器學習案例包括Netflix根據使用者歷史瀏覽行為給使用者推薦電影,亞馬遜基於使用者的歷史購買行為來推薦圖書
機器學習01-簡單瞭解
1. 什麼是機器學習 機器學習是一個計算機程式,針對某個特定的任務,從經驗中學習,並且越做越好。對於機器學習來說最重要的是資料和模型(演算法)。機器學習主要應用在 語音識別:把語音作為輸入 把文字作為輸出;自然語言處理:軟體理解檔案的意思並給出相應的迴應(比如說qq的小冰);人臉識別;推薦系
深入瞭解機器學習之降低損失:迭代方法
迭代學習可能會讓您想到“Hot and Cold”這種尋找隱藏物品(如頂針)的兒童遊戲。在我們的遊戲中,“隱藏的物品”就是最佳模型。剛開始,您會胡亂猜測(“w1 的值為 0。”),等待系統告訴您損失是多少。然後,您再嘗試另一種猜測(“ 的值為 0.5。”),看看損失是多少。哎呀,這次更接
深入瞭解機器學習之降低損失 (Reducing Loss):梯度下降法
迭代方法圖(圖 1)包含一個標題為“計算引數更新”的華而不實的綠框。現在,我們將用更實質的方法代替這種華而不實的演算法。 假設我們有時間和計算資源來計算 的所有可能值的損失。對於我們一直在研究的迴歸問題,所產生的損失與 的圖形始終是凸形。換言之,圖形始終是碗狀圖,如下所示: 圖 2
深入瞭解機器學習 (Descending into ML):訓練與損失
簡單來說,訓練模型表示通過有標籤樣本來學習(確定)所有權重和偏差的理想值。在監督式學習中,機器學習演算法通過以下方式構建模型:檢查多個樣本並嘗試找出可最大限度地減少損失的模型;這一過程稱為經驗風險最小化。 損失是對糟糕預測的懲罰。也就是說,損失是一個數值,表示對於單個樣本而言模型預測
瞭解機器學習、資料探勘、人工智慧的關係。
人工智慧是電腦科學的一個分支,機器學習是電腦科學和統計學的交叉學科。資料探勘是機器學習和資料庫的交叉。資料探勘利用機器學習的技術來分析海量資料,人工智慧也用機器學習的方法解決問題。如:個性化推薦,就是通過機器學習的一些演算法、技術分析平臺上的各種購買,瀏覽和收藏日誌的海量資料,得到
不得不瞭解的機器學習面試知識點
機器學習崗位的面試中通常會對一些常見的機器學習演算法和思想進行提問,在平時的學習過程中可能對演算法的理論,注意點,區別會有一定的認識,但是這些知識可能不繫統,在回答的時候未必能在短時間內答出自己的認識,因此將機器學習中常見的原理性問題記錄下來,保持對各個機器學習演算法原理和特點的熟練度。 本文總結了機
機器學習第7天:深入瞭解邏輯迴歸
一、邏輯迴歸是什麼 簡單來說, 邏輯迴歸(Logistic Regression)是一種用於解決二分類(0 or 1)問題的機器學習方法,用於估計某種事物的可能性。比如某使用者購買某商品的可能性,某病人患有某種疾病的可能性,以及某廣告被使用者點選的可能性等。
關於機器學習你必須瞭解的十個真相
作為一個經常向非專業人士解釋機器學習的人,我整理了以下十點內容作為對機器學習的一些解釋說明。 機器學習意味著從資料中學習;而AI則是一個時髦的詞。機器學習並不像天花亂墜的宣傳那樣:通過向適當的學習演算法提供適當的訓練資料,你可以解決無數的難題。把它稱之為AI吧,如果這有
ITK 學習筆記1(初步瞭解)
##1 cmakelists CMakeLists.txt 檔案包括以下內容: PROJECT(HelloWorld) FIND_PACKAGE(ITK) IF(ITK_FOUND) INCLUDE(${ITK_USE_FILE}) ELSE(ITK_FOUND
pygame學習教程(二)初步瞭解pygame
前一篇 使用pygame的第一步是將pygame庫匯入到python程式中,以便來使用它 import pygame 然後需要引入pygame中的所有常量。 from pygame.locals import * 再經過初始化以後我們就可以盡情地使用pygame了。 初始化pygame: p
淺入瞭解深度學習&&機器學習&&模式識別
模式識別->機器學習->深度學習的進化 模式識別(Pattern recognition)、機器學習(machine learning)和深度學習(deep learning)代表三種不同的思想流派。
【GANs學習筆記】(一)初步瞭解GANs
** 第一章 初步瞭解GANs ** ** 1. 生成模型與判別模型 ** 理解對抗網路,首先要了解生成模型和判別模型。判別模型比較好理解,就像分類一樣,有一個判別界限,通過這個判別界限去區分樣本。從概率角度分析就是獲得樣本x屬於類別y的概率,是一個條件概率P(
深入瞭解機器學習之降低損失 (Reducing Loss):學習速率
梯度向量具有方向和大小。梯度下降法演算法用梯度乘以一個稱為學習速率(有時也稱為步長)的標量,以確定下一個點的位置。例如,如果梯度大小為 2.5,學習速率為 0.01,則梯度下降法演算法會選擇距離前一個點
深入瞭解機器學習之使用 TensorFlow 的起始步驟 (First Steps with TensorFlow):工具包
下圖顯示了 TensorFlow 工具包的當前層次結構: 圖 1. TensorFlow 工具包層次結構。 下表總結了不同層的用途: TensorFlow 由以下兩個元件組成: 圖協議緩衝區 執行(分散式)圖的執行時 這兩個元件類似於 Java 編譯器和