# 下學期第一堂社課 : <br>機器學習(1)----Intro --- ## 點名表單 ![image](https://hackmd.io/_uploads/BkbOMl1TT.png =60%x) --- # What is machine learning? 當我們有這樣一筆數據時 ![IMG_0731](https://hackmd.io/_uploads/S1JJSIq9p.jpg =60%x) 我們可能會想找出土地面積(左)與房價(右)的關係, 以此**預測**給定面積的房屋價格。 首先,我們將數據描繪在以price為y, 以living area為x的圖表上。 我們可以觀察出x與y之間呈現了某種關係, 可能有條方程式能夠描述。 ![IMG_0732](https://hackmd.io/_uploads/r1yySI99p.jpg =60%x) 所以我們現在要做的就是找出這條方程式。 大家高一時應該會學到求這條方程式的方法(二維數據分析那章), 那就是**最小平方法**。 機器學習同理, 一樣是要用統計方法運算, 最後**擬合**出這條直線。 ![CS229 2](https://hackmd.io/_uploads/Sy_zduq9a.png =60%x) ### 機器學習的目標就是**希望推論出一種方法能夠正確地將$X\mapsto Y$** --- # 學習方法 ![CS229](https://hackmd.io/_uploads/r1yyHLccp.png =60%x) ## Training Set ![IMG_0731](https://hackmd.io/_uploads/S1JJSIq9p.jpg =60%x) 像上面的土地面積與房價的關係就是訓練集, 通常我們把$x$(土地面積)稱為**feature**, $y$(房價)稱為**label**。 我們通常將$(x^{(i)}, y^{(i)})$稱作**training example**, 也就是模型用來學習的資料, $\{(x^{(i)}, y^{(i)}) ; i=1,...,n\}$指的是整個**訓練集**, 上標$(i)$指的是資料的**索引值(index)**。 ## Hypothesis $h$是指**hypothesis**, 也就是機器要算出來(優化)的方程式, 通常我們將$h$表示為: :::success $$h_\theta(x)=\theta_0+\theta_1x_1+\theta_2x_2+...\theta_dx_d$$ ::: ![CS229 2](https://hackmd.io/_uploads/Sy_zduq9a.png =60%x) :::info 紅色那條線就是$h_\theta(x)$ 機器學習的目標就是**希望找出$h(x)$能夠正確地將$X\mapsto Y$**。 ::: > >$\theta$指的是**參數(parameters)**,又叫做**權重(weights)**, >是在訓練模型時會被調整的係數。 >而$d$是指dimention,即特徵的**維度**。 >特別注意,我們一律**令$x_0=1$**。 以下面數據做為例子, 現在這個訓練集的特徵變成了兩個(土地面積和房間數量), 也就是說特徵的$d=2$, ![IMG_0740](https://hackmd.io/_uploads/ryxL8Bjc6.jpg =85%x) 所以假設要用這筆資料做模型的訓練, 就可以設 $$h_\theta(x)=\theta_0+\theta_1x_1+\theta_2x_2$$ :::info $x_1$是放入Living area這個特徵, 而$x_2$是放入bedrooms這個特徵。 ::: 接著就是開始訓練、調整$\theta$, 直到$h(x)$可以很好的以$X$預測$Y$。 我們還可以將此式表示為: $$h(x)=\sum^d_{i=0}\theta_ix_i=\theta^Tx$$ >$\theta^T:$ $\theta$的**轉置矩陣** > >:::spoiler What is 轉置矩陣(動畫) >![Matrix_transpose](https://hackmd.io/_uploads/r1yXOOJop.gif) >就是把矩陣沿45度角線翻轉 >::: 後面那條等式是把$\theta_ix_i$這樣表示: $$h(x)=\sum^d_{i=0}\theta_ix_i=\theta^Tx=\begin{bmatrix} \theta_1\\\theta_2\ \\...\\ \theta_d\end{bmatrix}^T\times\begin{bmatrix}x_1\\x_2\\...\\x_d\end{bmatrix}$$ ## Learning Algorithm learning algorithm是**擬合(優化)方程式的方法**, 我們可以依照任務需求選擇適合的演算法來訓練model, 這會很大程度的影響效率和準確度。 ![1_ZCeOEBhvEVLmwCh7vr2RVA](https://hackmd.io/_uploads/Hy1_84R3p.png) 整體而言分成 * Supervised Learning * Unsupervised Learning * Semi-supervised Learning * Reinforcement Learning 細項: ![1_rbaxTrB_CZCqbty_zv2bEg](https://hackmd.io/_uploads/H1R8LV036.png) --- ### 總之,<br>其實機器學習根本就不是什麼玄奇的科技魔法,<br>只是一台大型的統計計算機罷了。 --- 部分圖片來源: Stanford CS229、網路