1. 程式人生 > >機器學習(一)線性迴歸

機器學習(一)線性迴歸

  哇!耽擱了兩天,今天來把第一篇正兒八經的機器學習的演算法部落格補上,其實我也是在校學生一枚,看了很多演算法和別人的總結,寫了很多筆記。所以現在想試著把自己之前整理過的筆記和思考之後的注意點寫下來,如果有問題歡迎給我指出來哦~

1.什麼是線性迴歸

  對於所有接觸機器學習的小夥伴來說,幾乎都被安利過大神吳恩達的機器學習入門視訊,而課程講的第一個機器學習演算法就是線性迴歸。實際上,線性迴歸屬於監督學習的內容,監督學習分為分類和迴歸兩部分;而線性迴歸又是迴歸內容中基礎又經典的部分。
  機器學習的實質說白了就是通過資料之間的關係找出某種對映f:Xy。而針對線性迴歸來說就是假定X與y之間有線性相關關係。(注意,一定是線性相關關係,和多項式關係區分開啊!)
  迴歸的最明顯特徵就是輸出的結果y

i為連續變數(這個連續變數一般都是浮點數,但是有的也是整數哦)。而線性迴歸的經典原型是:

hθ(x⃗ )=θ0+θ1x1+θ2x2+...+θnxn=i=0nθixi
  而向量形式表示為:hθ(x⃗ )=θ⃗ Tx⃗ 
  但是我們必須明確的一點是,θ⃗ 的取值是有很多種的,也就是說沒有限定條件下是不確定的,那麼這個時候我們想要找出最佳的模型則需要通過損失來幫忙。

2.線性迴歸的損失函式

  損失函式(有時也被成為代價函式),是我們尋找最佳模型的一種依據。線上性迴歸這裡,對應的就是找出最符合資料的權重引數θ⃗ ,即[θ0,θ1,...,θn]T。針對線性迴歸,損失函式一般誰用均方差MSE,即:

J(θ1,θ2,...,θn)=12mi=1m(hθ(x⃗ (i))y(i))2
  其中,m代表樣本個數,前面的12m是為了求導方便,不影響最後的計算結果的。
  實際上,這個就是預測值和實際值的距離的平方的均值,為什麼選用這個為損失函式呢?一反面是能正常的反應預測值和實際值的差距,更重要的一點是這個函式是凸函式!(感覺找出了凸函式就等於找到了家一樣,各種安全有木有~~)
  而通過損失函式求解我們的最優權重引數一般有兩個思路:最小二乘法 和 迭代法
  先來說最小二乘法,使用最小二乘法是線性迴歸特有的,可以一步到位直接解出引數的,具體過程就先不寫啦,直接給出引數的解:θ⃗ =(
XTX)1XTY⃗ 

  接下來是使用迭代法,而迭代法就有大家都很熟悉的梯度下降法、牛頓法、擬牛頓法等。迭代法是通過一步一步的不斷優化更新權重引數,使其最後達到最優解的(因為我們的損失函式是凸函式,所以是全域性最優解)。我們以梯度下降法為例,通過對損失函式求偏導並令其為零可以得到需要更新的部分,如下:θ⃗ =θ⃗ αXT(Xθ⃗ Y⃗ )
  其中,α是學習率(也叫步長),是超引數,在訓練模型的時候需要手動調整的引數。不宜太大,也不宜太小。
  實際中,我們一般不會真的計算到準確的最小值點的位置,所以迭代次數一般會設限制以防止機器執行的太久。而且針對α,在實際工程中會呼叫一些包進行自適應處理,也就是說,α一般會自己進行調整,不會固定不變的。
  針對線性迴歸的損失函式一般使用的是梯度下降,實際上牛頓法和擬牛頓法也可以。牛頓法在小資料量級上速度會很快,但是當資料量非常大的時候,對記憶體的耗用會很嚴重,所以可能會採用BFGS或者L-BFGS。而這個時候還會出現能否平行計算的問題,就算可以進行平行計算 ,那麼計算速度也會下降。

3.過擬合與欠擬合

  欠擬合比較好理解,主要就是模型學習的不到位,資料本身該有的特性沒學到導致的模型效能不好,這個問題也比較好解決。一般通過提高資料量就能解決。
  過擬合問題是我們在機器學習當中考慮最多的一個問題。何之謂過擬合?通俗點講也就是說,如果我們有特別多的特徵,那麼我們假設的函式可以對訓練資料擬合的非常好,即J(θ1,θ2,...,θn)=12mi=1m(hθ(x⃗ (i))y(i))20,但是這樣的話會喪失一般性,從而導致對新給的預測樣本會預測的非常差。(其實也就是說把不應該學習的也學習來了,這樣的話對於帶預測樣本來說就是噪聲了)。為了解決過擬合問題,在損失函式中引入了正則化。我們常用的正則化一般是L1正則化和L2正則化。而線性迴歸因為引入的正則化項不同,從而出現了Ridge迴歸、Lasso迴歸以及ElasticNet迴歸。(這三隻放在後面單獨總結)
  那麼,為什麼引入正則化項就能防止過擬合呢?其實主要原理就是通過引入權重引數來限制模型的複雜度,在李航的《統計學習方法》中稱為降低結構風險,而結構風險小的模型一般泛化能力都是較好的。關於三種迴歸之間的差別和風險降低的原理之後再說哦!

4.多項式迴歸

  最開始學線性迴歸的時候我也出現過把多項式迴歸當做線性迴歸的情況。。。多項式迴歸的假設函式假設為:

hθ(x⃗ )=θ0+θ1x1+θ2x2+θ3x21+θ4x22+θ5x1x2
  此時就不再是線性迴歸,而是多項式迴歸。其實看這個很像是特徵的對映。但是如果我們令x0=1,

相關推薦

機器學習線性迴歸

  哇!耽擱了兩天,今天來把第一篇正兒八經的機器學習的演算法部落格補上,其實我也是在校學生一枚,看了很多演算法和別人的總結,寫了很多筆記。所以現在想試著把自己之前整理過的筆記和思考之後的注意點寫下來,如果有問題歡迎給我指出來哦~ 1.什麼是線性迴歸

機器學習 線性迴歸演算法分析概覽

前言        前面介紹了迴歸家族中的邏輯迴歸,本篇部落格我們開始介紹線性迴歸演算法相關的問題,正所謂不同的特徵資料有不同的演算法來對待,今天我們要研究的這個演算法正好是具有線性特徵的資料所具有的特徵,與前面演算法的一個

機器學習邏輯迴歸與softmax迴歸及程式碼示例

本文適合已經對機器學習、人工智慧有過一定了解,但是還沒有自己寫過程式碼,或者一直在使用現有框架的同學。不用框架自己寫一次程式碼的過程還是很有必要的,能讓你真正地理解原理與機器學習中各個步驟的實現過程,而不是停留在“好像懂了”、只會調庫的階段。 目錄

機器學習線性迴歸、正規方程、邏輯迴歸的正規化

問題:過分擬合  為了片面追求對已知樣本的識別率,擬合過於高階的函式輸入,導致出現很多區域性最優情況 解決方法:為代價函式引入新的引數項 1)線性迴歸        代價函式       梯度 2)正規方程       方程 3)邏輯迴歸       代價函

機器學習筆記線性迴歸模型

一、線性迴歸模型 (一)引入—梯度下降演算法 1. 線性假設: 2. 方差代價函式:   3. 梯度下降:   4. : learning rate (用來控制我們在梯度下降時邁出多大的步子,值較大,梯度下降就很迅速) 值過大易造成無法收斂到minimum(每一步邁更大)

用python來實現機器學習線性迴歸linear regression

需要下載一個data:auto-mpg.data 第一步:顯示資料集圖 import pandas as pd import matplotlib.pyplot as plt columns = ["mpg","cylinders","displacement","horsepowe

槓精的機器學習線性迴歸

主要參考資料為《小象學院-機器學習IV》 打個廣告,這套視訊真的非常贊,建議大家看三遍以上,每一遍都有新的收穫,BiliBili上有免費資源,感謝鄒博!!!   前言:在實際應用中,迴歸是非常常見的一類問題,當然用於解決迴歸問題的方法也有很多,例如線性迴歸(

pytorch自我學習基礎 線性迴歸

pytorch 版本 0.2.0 #coding=utf-8 from matplotlib import pylab as plt import numpy as np import random import torch.nn as nn import torch fr

機器學習:快速入門線性分類器

定義 假設特徵與分類結果存線上性關係的模型,這個模型通過累加計算每個維度的特徵與各自權重的乘積來幫助類別決策。 線性關係公式 :f(w,x,b)=w^tx+b x=(x1,x2,…xn) 代表n維特徵列向量,w=(w1,w2,…wn)代表對應的權

機器學習

無限 size mage 計算機 博客 對數 png 表示 獲得 對學習的定義 學習經驗E 完成任務T 績效指標P 對於某類任務T和性能度量P,如果一個計算機程序在完成T上以P來衡量完成的好壞,並隨著經驗E而自我完善,那麽我們稱這個計算機程序在從經驗E中學習

機器學習梯度下降算法的實現及過程分析

回歸 vnc 分布 AC HA 向量 med mar size 機器學習(一)梯度下降算法 因為算法最好能應用到實際問題中才會讓讀者感到它的真實的用處,因此首先我來描述一個實際問題(梯度下降算法用以幫助解決該問題):給定一個指定的數據集,比如由若幹某一

機器學習線性回歸、邏輯回歸、Softmax回歸 的區別

樣本 自變量 進行 方便 線性回歸 https 參數 常用方法 等價 1、什麽是回歸?   是一種監督學習方式,用於預測輸入變量和輸出變量之間的關系,等價於函數擬合,選擇一條函數曲線使其更好的擬合已知數據且更好的預測未知數據。 2、線性回歸   代價函數(平方誤差代價函

Python機器學習

這是對《Python機器學習(Sebastian Raschka)》的學習知識點的總結。 本人學習沒啥好辦法,就是喜歡做筆記,做了好多筆記,後續有時間分欄分享一下。 # -*- coding: utf-8 -*- """ Created on Wed Sep 19 23:04:53 2018

機器學習——Linear Regression

機器學習課程中做的一些實驗題目,拿來和大家分享一下。 實驗步驟與內容: 載入資料集並繪製散點圖 MATLAB中載入資料集的方法是“load”函式,繪製散點圖的方法是“plot”函式,並且還可以使用“label”函式來為座標軸做標註。 得出結果如圖:

機器學習--------簡介

首先,人工智慧(Artificial Intelligence)有很多領域: 包括機器學習(Machine Learning)、專家系統、、進化計算、模糊邏輯、計算機視覺、自然語言處理、推薦系統等。 所以機器學習是一種實現人工智慧的技術,而另一個深度學習(Deep Learning)是一種實現機器學習的技

TensorFlow 學習 線性迴歸模型

線性迴歸演算法的主要優點是它的簡單性,線性迴歸的損失函式是平方損失。一般處理連續性問題,比如預測房價等,在本文中,使用 TensorFlow 訓練一個簡單線性迴歸模型。 線性迴歸模型 y = wx + b: 準備好特徵和目標值資料集 import tensorflow as tf i

演算法工程師修仙之路:吳恩達機器學習

吳恩達機器學習筆記及作業程式碼實現中文版 第一章 緒論:初識機器學習 什麼是機器學習 Machine Learning(機器學習)是研究計算機怎樣模擬或實現人類的學習行為,以獲取新的知識或技能,重新組織已有的知識結構使之不斷改善自身的效能。 機器學習被用

機器學習 numpy的函式以及基本用法

新開一個篇章,記錄一下機器學習與資料科學的學習過程。 1.np.getnfromtxt 從txt檔案中讀資料,np.getnfromtxt('filename.txt', delimiter=',', dtype='...', skip_header=1) 2.np

機器學習邏輯迴歸模型訓練

本篇不講演算法 只講用Python (pandas, matplotlib, numpy, sklearn) 進行訓練的一些要點 1.合併index np.concatenate([index1,index2]) 2.from sklearn.cross_va

線性迴歸與特徵歸化(feature scaling)

吳恩達機器學習視訊 https://study.163.com/course/courseMain.htm?courseId=1004570029   線性迴歸是一種迴歸分析技術,迴歸分析本質上就是一個函式估計的問題(函式估計包括引數估計和非引數估計),就是找出因變數和自變數之