# [Note] CS229 Lecture 1 : Introduction
# Part I Supervised Learning
---
Online lecture: https://youtube.com/playlist?list=PLoROMvodv4rMiGQp3WXShtMGgzqpfVfbU&si=vuAUi_ytVYB1Jc8V
Main notes: https://cs229.stanford.edu/main_notes.pdf
Other resources: https://github.com/maxim5/cs229-2018-autumn/tree/main
---
## 機器學習
當我們有這樣一筆數據時

我們可能會想找出土地面積(左)與房價(右)的關係,
以此**預測**給定面積的房屋價格。
首先,我們將數據描繪在以price為y,
以square feet為x的圖表上。
我們可以觀察出x與y之間呈現了線性關係(即可以將x與y的關係以y=ax+b這樣的方程式表示)。

所以我們現在要做的就是找出這條方程式。
大家高一時應該會學到求這條方程式的方法(二維數據分析那章),
那就是**最小平方法**。
機器學習同理,
一樣是要用統計方法運算,
最後擬合出這條直線。

不過擬合直線的方法有很多種,
甚至能拓展至高維特徵,
不只用於單變量數據,
之後會再提到。
---
## 學習方法

training set就是**資料集**,
就像上面的土地面積與房價的關係就是資料集,
通常我們把$x$(土地面積)稱為**feature**,
$y$(房價)稱為**label**。
也就是說,$X$為資料輸入(the space of input values),
$Y$為預測輸出(the space of output values)。
learning algorithm是**擬合方程式的方法**,
我剛剛有提到擬合直線的方法有很多種,
所以我們可以依照任務需求選擇適合的演算法來訓練model,
這會很大程度的影響效率和準確度。
$h$是指**hypothesis**,
也就是機器要算出來(優化)的方程式,
通常我們將h表示為:
$$h_\theta(x)=\theta_0+\theta_1x_1+\theta_2x_2+...\theta_dx_d$$
為了避免誤會,我們會將$h_\theta(x)$寫作$h(x)$。
機器學習的目標就是**希望找出$h(x)$能夠正確地將$X\mapsto Y$** (將$X$映射(map)至$Y$)。
$\theta$指的是**參數(parameters)**,又叫做**權重(weights)**,
是在訓練模型時會被調整的係數。
而$d$是指dimention,即特徵的**維度**。
我們通常將$(x^{(i)}, y^{(i)})$稱作**training example**,
也就是模型用來學習的資料,
$\{(x^{(i)}, y^{(i)}) ; i=1,...,n\}$指的是整個**訓練集**,
上標$(i)$指的是資料的**索引值(index)**。
以下面數據做為例子,
現在這個訓練集的特徵變成了兩個(土地面積和房間數量),
也就是說特徵的$d=2$,
所以特徵$x^{(i)}_1$指的是第$i$筆資料的土地面積,
$x^{(i)}_2$指的就是第$i$筆資料的房間數量了。
這裡特別注意,我們一律**令$x_0=1$**。

所以假設要用這筆資料做模型的訓練,
就可以設
$$h_\theta(x)=\theta_0+\theta_1x_1+\theta_2x_2$$
$x_1$是放入Living area這個特徵,
而$x_2$是放入bedrooms這個特徵。
接著就是開始訓練、調整$\theta$,
直到$h(x)$可以很好的以$X$預測$Y$。
最後有一個東西要提醒,
假如這條擬合曲線是非線性的,
那$\theta_dx_d$可能會像是$\theta_d(x_d)^2$、$\theta_dlog(x_d)$之類的,
整個$h(x)$就可能變成像是$h(x)=\theta_0+\theta_1(x_1)^2+\theta_2(x_2)^3+\theta_3log(x_3)+...$
---
## 總結
其實人工智慧根本就不是什麼玄奇的科技魔法,
只是一台大型的統計計算機罷了。