關於機器學習的教程確實是太多了,處於這種變革的時代,出去不說點機器學習的東西,都覺得自己落伍了,但總覺得網上的東西並不系統,無法讓人串聯在一起,總有很多人讀了幾篇機器學習的東西,就自以為機器學習就那些東西,認為機器學習也就那麼一回事,想把這幾年關於機器學習的東西做一些總結,能夠跟大家一起學習和交流。
如果需要用幾句話來簡單的總結機器學習是什麼意思,也許可以用:讓機器學會決策
。對比我們人來說,每天都會碰到這個問題,比如菜市場裡買芒果,總要挑出哪些是甜的。這就是所謂的決策,再通俗來講就是分類問題了,把一堆芒果,分出甜和不甜的。而機器學習就是學會把甜和不甜的蘋果分出來,那如何分呢?
模擬人類的思考方式。憑經驗,我們可以按照芒果皮的顏色,大小等來對芒果的酸甜進行分類,對於機器來說,把芒果的顏色,大小等當成變數輸入到電腦模型裡,就能推出芒果的酸甜性,這樣就對芒果進行分類。
機器學習的演算法有非常的多,這篇主要介紹的是logistic
回歸。
從乙個最簡單的數學問題開始。
2023年,義大利天文學家朱賽普·皮亞齊發現了第一顆小行星穀神星。經過40天的跟蹤觀測後,由於穀神星執行至太陽背後,使得皮亞齊失去了穀神星的位置。隨後全世界的科學家利用皮亞齊的觀測資料開始尋找穀神星,但是根據大多數人計算的結果來尋找穀神星都沒有結果。時年24歲的高斯也計算了穀神星的軌道。奧地利天文學家海因里希·奧爾伯斯根據高斯計算出來的軌道重新發現了穀神星。
從這段歷史記錄可以看出,高斯當時觀察了很多小行星穀神星的記錄,也就是我們常說的觀察資料,並使用了最小二乘法模擬了這條線,**了小行星穀神星的軌跡。
高斯最小二乘法的方法發表於2023年他的著作《天體運動論》中。其實在2023年法國科學家勒讓德就提出了最小二乘法相應的想法,所以勒讓德曾與高斯為誰最早創立最小二乘法原理發生爭執。
最小二乘法的思想是什麼呢?
假設觀察資料,,…,,而預設的認為這些資料是符合最常見的規律,既x和y符合線性關係,用方程可以表示為y=
a+bx
y =a
+b
x其中,a,b是我們需要通過觀察資料確定的引數。
所謂最小二乘法就是這樣的乙個法則,按照這樣法則,最好是擬合於各個資料點的最佳曲線應該使個資料點與曲線偏差的平均和為最小。
用數學公式表示為:∑n
=0n(
yi−a
−bxi
)2∑ n=
0n(y
i−a−
bxi)
2的值為最小,這裡的a,b是引數。
這就是我們的評估函式
。
這裡假設:v=
yi−a
−bxi
v =y
i−a−
bx
i要 求出最值問題,我們需要對評估函式進行求導
。
有兩個引數,求最小值,即為求偏差平方和對a和b分別求出偏導數,得:∂∑
ni=1
v2i∂
a=−2
∑(yi
−a−b
xi)=
0 ∂∑i
=1nv
i2∂a
=−2∑
(yi−
a−bx
i)=0
∂∑ni=1v
2i∂b
=−2∑
(yi−
a−bx
i)∗x
=0∂ ∑i
=1nv
i2∂b
=−2∑
(yi−
a−bx
i)∗x
=0
則:∑y
i−na
−b∑x
i=0 ∑yi
−na−
b∑xi
=0
∑yixi−∑
xia−
b∑x2
i=0 ∑yi
xi−∑
xia−
b∑xi
2=
0根據公式可以推出a和b的值:b=
sxys
xxb =s
xysx
xa=y
¯¯¯−
bx¯¯
¯ a=y
¯−bx
¯其中:sx
y=∑x
iyi−
∑xi∑
yin sxy
=∑xi
yi−∑
xi∑y
in
sxx=∑x2
i−(∑
xi)2
n sxx
=∑xi
2−(∑
xi)2
nx¯¯
¯=∑x
inx ¯=
∑xin
這樣就可以求出了a和b的值。
既我們可以通過觀察的資料
,來擬合我們的直線,既可以在給定某個x,有效的**y。通常來說求出的值a和b跟實際本身來說是有一定的誤差了,是不是給定的觀察值越多就越準確呢?這不一定,這也是大學概率論和數值統計中一直討論的問題。
再次的強調最小二乘法是使用誤差最小來進行估計的。
機器學習入門 複習邏輯回歸
取h x 0.5時,y 1。由sigmoid函式的影象可知,當sigmoid函式的引數 tx 0時,h x 的取值即 0.5。由於是複習,不做過多的數學推導,直接給出代價函式的式子。此處的代價函式不是平方差代價函式,而是使用cost函式作以替代,而cost函式是乙個分段函式,實際上,cost函式中的...
機器學習 邏輯回歸
邏輯回歸 線性回歸的式子,作為邏輯回歸的輸入 適用場景 二分類 線性回歸的輸入 sigmoid函式 分類 0,1 概率值 計算公式 當目標值為1時 損失函式的變化 當目標值為0時 損失函式的變化 下面用乙個例項來說明邏輯回歸的用法 癌症概率 部分資料的截圖如下 資料描述 699條樣本,供11列資料,...
機器學習 邏輯回歸
coding utf 8 import pandas as pd import seaborn as sns from sklearn.model selection import train test split import matplotlib.pyplot as plt 用於畫圖 from ...