摘要:分類問題回到本系列的第一篇文章機器學習從入門到放棄之算法,在里面有這樣的一個問題黃點代表類電影的分布,綠色代表類電影的分布,紫色代表需要分類的電影樣本。
分類問題
回到本系列的第一篇文章機器學習從入門到放棄之KNN算法,在里面有這樣的一個問題
黃點代表1類電影的分布,綠色代表0類電影的分布,紫色代表需要分類的電影樣本。
那么該怎么判別紫色的那顆點所在的類別呢?
之前給出的是KNN算法,通過計算紫色點都周邊的劇場的長短,來判斷紫色點屬于哪個類別。現在有這樣一種極端情況,黃點和綠點在紫點周圍呈圓周分布,距離一樣,咋辦?
圖畫得不是太好,大家理會我的意思就行。
在這種情況,假如像下圖這樣的情況,就容易處理得多了。
紅線的下方是黃色種類,上方時綠色種類。
這種情況我們稱之為線性分類,關于如何擬合出這條線程函數下面會講述?,F在先來說說,既然這叫線性分類,那么必然會有非線性的情況啊,那咋辦呢?
沒錯,如果特征可以被線性函數全部表達,這自然是理想情況,但實際問題中更多的非線性分類。
這時,我們需要將線性函數轉換為非線性函數。那怎么轉換呢,很簡單,將線性函數(假設叫z),扔到某一非線性函數f(x)內,得到新的表達式y = f(z),就是我們所需的非線性分類器了,而f(x)也就作激活函數,它有很多種,本文只介紹邏輯回歸所使用到的sigmoid函數,其表達式是
其圖像有一個漂亮的S型
可見在x的取值范圍足夠大的時候,其從0變1的過程可以忽略不計,因此,我們習慣的把>0.5歸為1類,<0.5歸為0類,那么恰好是0.5怎么辦?這個概率是極低的,如果真的是0.5,那就隨機歸類,然后出門買張彩票吧,說不定就不用繼續當程序員了。 (/≥▽≤/)
算法介紹上面函數圖像引用云深不知處的博客
回到表達式上,可知函數的變量是z其余都是常量,所要要求解該分類函數的值,就是要確定z的值而z是線性方程,基本的數學知識不難知道,
$$z=a1x1+a2x2……an*xn$$
其中[x1……xn]是輸入向量,所以訓練的過程就是確定于[a1,a2……an]的值,使得該表達式對于多個輸入向量的輸出值正確率最高。
下面開始講述求最佳的[a1,a2……an]的方法
顯然,我們可以設計一個函數來衡量[a1,a2……an]是否最佳,比如說這樣的
$$J(a) = sum_{n=0}(f_a(xi)-y)^2$$
顯然當J(a)達到最小值時,a的值最佳。方法如下,
初始化weight,可以使用隨機值
代入式子得到err = y - predict
weight = weight + alpha * error * x_train[i],其中alpha稱為學習速率,太小會影響函數的收斂速度,太大剛才就不收斂了。
為了解決上述問題,在《機器學習實戰中》使用了動態更新alpha的方法,式子為alpha = 4/(1+i)+0.01
上述修改weight的過程稱為梯度下降法,其中我故意略去了數學證明部分,需要的同學請自行查找專業資料。
代碼實現github
文章描述如有錯誤,歡迎指正。
關注我我的個人公眾號開啟啦,微信公眾號搜索肥兔子的碎碎語,你能查看到更多學習心得的分享噢⊙ω⊙。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/38073.html
摘要:總言言之,決策樹第一個是需要從大量的已存在的樣本中推出可供做決策的規則,同時,這個規則應該避免做無謂的損耗。算法原理構造決策樹的關鍵步驟是分裂屬性。這時分裂屬性可能會遇到三種不同的情況對離散值生成非二叉決策樹。對離散值生成二叉決策樹。 算法背景 決策樹故名思意是用于基于條件來做決策的,而它運行的邏輯相比一些復雜的算法更容易理解,只需按條件遍歷樹就可以了,需要花點心思的是理解如何建立決策...
摘要:在這里我分享下我個人入門機器學習的經歷,希望能對大家能有所幫助。相關學習鏈接,,入門后的體驗在入門了機器學習之后,在實際工作中,絕大多數的情況下你并不需要去創造一個新的算法。 機器學習在很多眼里就是香餑餑,因為機器學習相關的崗位在當前市場待遇不錯,但同時機器學習在很多人面前又是一座大山,因為發現它太難學了。在這里我分享下我個人入門機器學習的經歷,希望能對大家能有所幫助。 PS:這篇文章...
閱讀 2291·2023-04-26 00:01
閱讀 796·2021-10-27 14:13
閱讀 1810·2021-09-02 15:11
閱讀 3381·2019-08-29 12:52
閱讀 528·2019-08-26 12:00
閱讀 2569·2019-08-26 10:57
閱讀 3405·2019-08-26 10:32
閱讀 2848·2019-08-23 18:29