模型在數學上的" />

欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

1-Python與機器學習入門

系統 1916 0
原文鏈接: https://my.oschina.net/pansy0425/blog/3099751

1.1機器學習緒論

(1)什么是機器學習?

機器學習 是一種讓計算機利用數據而非指令來進行各種工作的方法。

機器學習 是一個計算機程序,針對某個特定的任務,從經驗中學習,且越做越好。

機器學習 在統計理論下的、比較深刻的本質:它追求的是 合理的假設空間(Hypothesis Space)的選取 模型的泛化(Generalization)能力 。

  • “假設空間”===>模型在數學上的“適用場合”
  • “泛化能力”===>模型在未知數據上的表現

(2)機器學習常用術語

  • “數據集”(Data Set) ,即數據的集合。其中每一條單獨的數據被稱為“樣本”(Sample)。
    • 數據集中的樣本之間在各個意義下應該相互獨立。
  • 對于每個樣本,它通常具有一些 “屬性”(Attribute)或者說“特征”(Feature) , 特征所具體取的值就被稱為“特征值”(Feature Value)
  • 特征和樣本所生成的空間被稱為 “特征空間”(Feature Space) “樣本空間”(Sample Space) ,可以把它們簡單地理解為特征和樣本“可能存在的空間”。
  • 相對應的, “標簽空間”(Label Space)用于描述模型的輸出“可能存在的空間”;當模型是分類器時,將其稱之為“類別空間” 。

其中,數據集又可以分為以下3類:

  • 訓練集(Training Set):用來訓練模型。
  • 測試集(Test Set):用來測試、評估模型泛化能力。
  • 交叉驗證集(Cross-Validation Set,CV Set):用來調整模型具體參數。

(3)機器學習的分類? 有監督學習/無監督學習

(3-1)有監督學習(Supervised learning)? ? 可分為“回歸”和“分類”

????通過大量已知的輸入和輸出相配對的數據,讓計算機從中學習出規律,從而能針對一個新的輸入做出合理的輸出預測。

  • ???? 在回歸問題(Regression learning)中,我們會預測一個連續值。也就是說我們試圖將輸入變量和輸出用一個連續函數對應起來;
  • ?? ??在分類問題(Classification learning)中,我們會預測一個離散值(0,1,2...N),我們試圖將輸入變量與離散的類別對應起來。

????每個數據點都會獲得標注,如類別標簽或與數值相關的標簽。

  • ??? ?數值標簽的例子如:預測一套二手房的售價。
  • ? ? 類別標簽的例子:將圖片分類為「蘋果」或「橘子」;

????監督學習的目的是通過學習許多有標簽的樣本,然后對新的數據做出預測。例如,預測二手房的售價(回歸)或者準確識別新照片上的水果(分類)。

(3-2)無監督學習(Unsupervised learning) 一般為“聚類”

? ? 通過學習大量的無標記數據,去分析出數據本身的內在特點和結構。

? ? 比如:基于大量用戶購物的歷史記錄信息,從數據中去分析用戶的不同類別。針對這個問題, 最終能劃分為幾個類別?每個類別有那些特點?我們事先是不知道的 ,這稱為 “聚類”(Clustering) 。

(3-3)有監督學習和無監督學習中 “分類”和“聚類” 的區別

  • 有監督學習中的“分類”:是我們已經知道了有哪幾種類別;
    • 分類問題是在已知答案中選擇一個
  • 無監督學習中的“聚類”:是我們在分析數據之前其實是不知道有哪些類別的。
    • 聚類的答案是未知的,需要利用算法從數據里挖掘出數據的特點和結構。

(4)機器學習應用開發的典型步驟

  • 數據采集與標記
  • 數據清洗
  • 特征選擇
  • 模型選擇
  • 模型訓練和測試
  • 模型性能評估和優化
  • 模型使用

(5)“欠擬合”+“過擬合”? ? ?===> “交叉驗證”

  • 泛化能力針對的其實是學習方法,它用于衡量該學習方法學習到的模型在整個樣本空間上的表現。

????????這一點當然是十分重要的,因為我們拿來訓練模型的數據終究只是樣本空間的一個很小的采樣,如果只是過分專注于它們,就會出現所謂的“過擬合”(Over Fitting)的情況。當然,如果過分罔顧訓練數據,又會出現“欠擬合”(Under Fitting)??梢杂靡粡垐D來直觀地感受過擬合和欠擬合(如圖1所示,左為欠擬合,右為過擬合)。

1-Python與機器學習入門_第1張圖片

????????所以需要“張弛有度”,找到最好的那個平衡點。 統計學習中的結構風險最小化(Structural Risk Minimization,SRM)就是研究這個的,它和傳統的經驗風險最小化(Empirical Risk Minimization,ERM)相比,注重于對風險上界的最小化,而不是單純地使經驗風險最小化。 它有一個原則:在使風險上界最小的函數子集中挑選出使經驗風險最小的函數 。而這個函數子集,正是我們之前提到過的假設空間。

????????相比起通過選取合適的假設空間來規避過擬合,進行 交叉驗證(Cross Validation) 則可以讓我們知道過擬合的程度,從而幫助我們選擇合適的模型。常見的交叉驗證有以下三種。

  • S-fold Cross Validation:中文可翻譯成S折交叉驗證,它是應用最多的一種方法,其方法大致如下。?
    • 將數據分成S份:D={D_1,D_2,…,D_S},一共做S次試驗。
    • 在第i次試驗中,使用D-D_i作為訓練集,D_i作為測試集對模型進行訓練和評測。
    • 最終選擇平均測試誤差最小的模型。
  • 留一交叉驗證(Leave-one-out Cross Validation):這是S折交叉驗證的特殊情況,此時S=N。
  • 簡易交叉驗證:這種實現起來最簡單,也是本書(在進行交叉驗證時)所采用的方法。它簡單地將數據進行隨機分組,最后達到訓練集約占原數據70%的程度(這個比例可以視情況改變),選擇模型時使用測試誤差作為標準。

1.2使用Python進行機器學習

  • 使用Anaconda

1.3第一個機器學習樣例

該問題來自Coursera上的斯坦福大學機器學習課程,其敘述如下:現有47個房子的面積和價格,需要建立一個模型對新的房價進行預測。稍微翻譯問題,可以得知:

  • 輸入數據只有一維,亦即房子的面積。
  • 目標數據也只有一維,亦即房子的價格。
  • 根據已知的房子的面積和價格的關系進行機器學習

(1)獲取與處理數據

數據網址:https://github.com/carefree0910/MachineLearning/blob/master/_Data/prices.txt

部分數據展示: 1-Python與機器學習入門_第2張圖片

一般而言,對數據做簡單的處理以期望降低問題的復雜度。在這個例子里,采取常用的將輸入數據標準化的做法,其數學公式為:

1-Python與機器學習入門_第3張圖片

              import numpy as np
import matplotlib.pyplot as plt

x,y=[],[]  # 定義存儲輸入數據(x)和目標數據(y)的數組
infos=open('prices.txt','r')
for sample in infos:  # 遍歷數據集,變量sample對應的正是一個個樣本
    _x=sample.strip('\n').split(',')[0]
    _y=sample.strip('\n').split(',')[1]
    x.append(float(_x))
    y.append(float(_y))  # 將字符串數據轉化為浮點數

x,y=np.array(x),np.array(y)  #讀取完數據后,將它們轉化為Numpy數組以方便進一步的處理
x=(x-x.mean())/x.std()  #標準化
#將原始數據以散點圖的形式畫出
plt.figure()
plt.scatter(x,y,c='g',s=6)
plt.show()
            

1-Python與機器學習入門_第4張圖片

該圖的橫軸是標準化后的房子面積,縱軸是房子價格?!敬藭r算是完成機器學習的第一步:數據預處理】

(2)選擇與訓練模型

? ??通過可視化原始數據,可以非常直觀地感受到:很有可能通過 線性回歸(Linear Regression)中的多項式擬合 來得到一個不錯的結果。

注意:用多項式擬合散點只是線性回歸的很小的一部分,但是它的直觀意義比較明顯。考慮到問題比較簡單,我們才選用了多項式擬合。【此處只是簡單使用】

? ? 其模型的數學表達式: 1-Python與機器學習入門_第5張圖片

  • ????其中f(x|p;n)就是我們的模型,p、n都是模型的參數,其中p是多項式f的各個系數,n是多項式的次數。
  • ????L(p;n)則是模型的損失函數, 即歐氏距離(或說向量的二范數)。
  • ????x、y則分別是輸入向量和目標向量;在我們這個樣例中,x、y這兩個向量都是47維的向量,分別由47個不同的房子面積、房子價格所構成。

在確定好模型后,就可以開始編寫代碼來進行訓練了。對于大多數機器學習算法,所謂的訓練正是最小化某個損失函數的過程,這個多項式擬合的模型也不例外:我們的目的就是讓上面定義的L(p;n)最小。

              x0=np.linspace(-2,4,100)  # 在(-2,4)這個區間上取100個點作為畫圖的基礎

              
                
                  # 利用Numpy的函數定義訓練并返回多項式回歸模型的函數
# deg參數代表著模型參數中的n,亦即模型中多項式的次數
# 返回的模型能夠根據輸入的x(默認是x0),返回相對應的預測的y
def get_model(deg):
    return lambda input_x=x0:np.polyval(np.polyfit(x,y,deg),input_x)
                
              
            

Numpy里面帶的兩個函數:polyfit和polyval的用法。

  • polyfit(x, y, deg) :該函數會返回使得上述(注:該公式中的x和y就是輸入的x和y)最小的參數p,亦即多項式的各項系數。換句話說,該函數就是模型的訓練函數。 70
  • polyval(p, x) :根據多項式的各項系數p和多項式中x的值,返回多項式的值y。

(3)評估與可視化結果

  • 模型做好后,我們就要嘗試判斷各種參數下模型的好壞了。
  • 為簡潔起見,我們采用n=1,4,10這三組參數進行評估。
  • 由于我們訓練的目的是最小化損失函數,所以用損失函數來衡量模型的好壞似乎是一個合理的做法。
              
                
                  # 根據參數n、輸入的x、y返回相對應的損失
def get_cost(deg,input_x,input_y):
    return 0.5*((get_model(deg)(input_x)-input_y)**2).sum()
                
              
              

test_set=(1,4,10)# 定義測試參數集并根據它進行各種實驗
for d in test_set:
    print('test_set:{}--->{}'.format(d,get_cost(d,x,y)))  # 輸出相應的損失
"""
test_set:1--->96732238800.35292
test_set:4--->94112406641.67743
test_set:10--->75874846680.09283
"""
            

那么,怎么最直觀地了解是否出現過擬合了呢?當然還是畫圖了。

              #畫出相應的圖像
plt.scatter(x,y,c="g",s=20)

              
                for d in test_set:
    plt.plot(x0,get_model(d)(),label='degree={}'.format(d))
              
              
plt.xlim(-2,4)
plt.ylim(1e5,8e5)  # 將橫軸、縱軸的范圍分別限制在(-2,4)、(1×〖10〗^5,8×〖10〗^5)
plt.legend()  # 調用legend方法使曲線對應的label正確顯示
plt.show()
            

1-Python與機器學習入門_第6張圖片

所得的結果是:

  • 當n=1,4,10時,損失的頭兩位數字分別為96、94和75。這么看來似乎是n=10優于n=4,而n=1最差,
  • 但從圖可以看出,三條線分別代表n=1、n=4、n=10的情況。可以看出,從n=4開始模型就已經開始出現過擬合現象了,到n=10時模型已經變得非常不合理。似乎直接選擇n=1作為模型的參數才是最好的選擇。

這里矛盾的來源正是前文所提到過的過擬合情況。

【注:該例子結束。因為數據集太少,所以沒有進行交叉驗證?!?

轉載于:https://my.oschina.net/pansy0425/blog/3099751


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。?!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 日本一区视频在线播放 | 人成免费a级毛片 | 成人网在线免费观看 | 杏导航aⅴ福利网站 | 午夜神器18以下不能进免费观看 | 中文一区二区 | 久久久久久久久久免观看 | 国产性色| 亚洲成人福利在线观看 | 亚洲精品成人 | 午夜伦4480yy私人影院 | 国产午夜精品久久久久小说 | 三级黄色片在线免费观看 | 国内精品视频在线观看 | 午夜精品久久久久久99热软件 | 久久精品小视频 | 欧美在线视频一区 | 五月婷婷天堂 | 无码激情做A爰片毛片A片小说 | 亚洲国产一区视频 | 欧美一性一看一免费视频 | 操出白浆在线观看 | 婷婷尹人香蕉久久天堂 | 免费观看毛片 | 性夜影院爽黄a爽在线看香蕉 | 久久91综合国产91久久精品 | 999热这里只有精品 三级在线网站 | 美女污污视频在线观看 | 四虎在线免费观看视频 | 亚洲精品久久久 | 91一区二区三区 | 日日碰狠狠添天天爽五月婷 | 江苏少妇性BBB搡BBB爽爽爽 | 天天插天天射天天干 | 黄色免费毛片 | 国产在线综合网 | 亚洲高清在线观看看片 | 日本一区午夜爱爱 | 好吊日在线视频 | 国产第113页 | 日本在线高清视频 |