#基礎Machine Learning 算法(上)

機器學習算法的分類

機器學習算法大致可以分為三類:

  • 監督學習算法 (Supervised Algorithms):在監督學習訓練過程中,可以由訓練數據集學到或建立一個模式(函數 / learning model),并依此模式推測新的實例。該算法要求特定的輸入/輸出,首先需要決定使用哪種數據作為范例。例如,文字識別應用中一個手寫的字符,或一行手寫文字。主要算法包括神經網絡、支持向量機、最近鄰居法、樸素貝葉斯法、決策樹等。

  • 無監督學習算法 (Unsupervised Algorithms):這類算法沒有特定的目標輸出,算法將數據集分為不同的組。

  • 強化學習算法 (Reinforcement Algorithms):強化學習普適性強,主要基于決策進行訓練,算法根據輸出結果(決策)的成功或錯誤來訓練自己,通過大量經驗訓練優化后的算法將能夠給出較好的預測。類似有機體在環境給予的獎勵或懲罰的刺激下,逐步形成對刺激的預期,產生能獲得最大利益的習慣性行為。在運籌學和控制論的語境下,強化學習被稱作“近似動態規劃”(approximate dynamic programming,ADP)。

  • 特點監督學習無監督學習
    數據特性數據帶有標簽或期望輸出數據無標簽
    學習目標學習輸入輸出映射關系,用于預測未知數據的輸出(如分類或回歸)發現數據的內在結構和模式(如聚類、降維等)
    學習過程利用標記數據進行訓練,模型通過比較預測輸出和真實標簽來調整參數無標記數據,模型直接分析數據特征,發現模式和結構
    常見算法分類算法:決策樹、支持向量機、樸素貝葉斯等;回歸算法:線性回歸、嶺回歸等聚類算法:k - 均值、層次聚類等;降維算法:主成分分析(PCA)、線性判別分析(LDA)等
    應用場景分類任務:垃圾郵件識別、圖像分類等;回歸任務:房價預測、股票價格預測等聚類任務:客戶細分、文檔聚類等;降維任務:數據可視化、特征工程等
監督學習算法
  1. 線性回歸算法(Linear Regression):用于回歸任務,通過擬合一條直線或超平面來預測連續值。
  2. 支持向量機算法(Support Vector Machine, SVM):用于分類任務,通過找到一個超平面來最大化不同類別之間的間隔。
  3. 最近鄰居/k-近鄰算法(K-Nearest Neighbors, KNN):用于分類和回歸任務,通過查找訓練集中最近的鄰居來預測新樣本的標簽。
  4. 邏輯回歸算法(Logistic Regression):用于分類任務,通過 logistic 函數將線性回歸的輸出映射到概率值。
  5. 決策樹算法(Decision Tree):用于分類和回歸任務,通過構建樹形結構來進行決策。
  6. 隨機森林算法(Random Forest):用于分類和回歸任務,是一種集成學習方法,通過構建多個決策樹并綜合它們的結果來進行預測。
  7. 樸素貝葉斯算法(Naive Bayes):用于分類任務,基于貝葉斯定理,并假設特征之間相互獨立。
無監督學習算法
  1. k-平均算法(K-Means):用于聚類任務,將數據集劃分為 k 個簇,每個簇由其均值表示。
  2. 降維算法(Dimensional Reduction):包括主成分分析(PCA)、t-SNE 等,用于減少數據的特征維度,常用于數據可視化和特征工程。

1. 線性回歸算法 Linear Regression

回歸分析(Regression Analysis)是統計學的數據分析方法,目的在于了解兩個或多個變量間是否相關、相關方向與強度,并建立數學模型以便觀察特定變量來預測其它變量的變化情況。

線性回歸算法(Linear Regression)的建模過程就是使用數據點來尋找最佳擬合線。公式,y = mx + c,其中 y 是因變量,x 是自變量,利用給定的數據集求 m 和 c 的值。
線性回歸又分為兩種類型,即
簡單線性回歸(simple linear regression),只有 1 個自變量;*多變量回歸(multiple regression),至少兩組以上自變量。

img

公式

線性回歸的公式通常表示為:
y = m ? x + c \ y = m \cdot x + c \ ?y=m?x+c?
其中:

  • ( y ) 是因變量(我們想要預測的值)。
  • ( x ) 是自變量(用于預測 ( y ) 的值)。
  • ( m ) 是斜率,表示 ( x ) 變化一個單位時 ( y ) 的變化量。
  • ( c ) 是截距,表示當 ( x = 0 ) 時 ( y ) 的值。

在多變量線性回歸中,公式可以擴展為:
y = m 1 ? x 1 + m 2 ? x 2 + … + m n ? x n + c \ y = m_1 \cdot x_1 + m_2 \cdot x_2 + \ldots + m_n \cdot x_n + c \ ?y=m1??x1?+m2??x2?++mn??xn?+c?
其中
x 1 , x 2 , … , x n \ x_1, x_2, \ldots, x_n \ ?x1?,x2?,,xn??
是多個自變量,
m 1 , m 2 , … , m n \ m_1, m_2, \ldots, m_n \ ?m1?,m2?,,mn??
是對應的系數。

例子

假設有如下數據集,描述了房屋面積(平方米)與房價(萬元)之間的關系:

房屋面積(( x ))房價(( y ))
5060
7080
90100
110120
130140

我們想找到一條直線來描述房屋面積和房價之間的關系,以便預測新房屋的房價。

簡單線性回歸

在這個例子中,我們只有一個自變量(房屋面積),因此使用簡單線性回歸。

  1. 計算平均值

    • x ˉ = 50 + 70 + 90 + 110 + 130 5 = 90 \ \bar{x} = \frac{50 + 70 + 90 + 110 + 130}{5} = 90 \ ?xˉ=550+70+90+110+130?=90?

    • b a r y = 60 + 80 + 100 + 120 + 140 5 = 100 \\bar{y} = \frac{60 + 80 + 100 + 120 + 140}{5} = 100 \ bary=560+80+100+120+140?=100?

  2. 計算斜率(( m ))
    m = ∑ i = 1 n ( x i ? x ˉ ) ( y i ? y ˉ ) ∑ i = 1 n ( x i ? x ˉ ) 2 \ m = \frac{\sum_{i=1}^{n} (x_i - \bar{x})(y_i - \bar{y})}{\sum_{i=1}^{n} (x_i - \bar{x})^2} \ ?m=i=1n?(xi??xˉ)2i=1n?(xi??xˉ)(yi??yˉ?)??
    代入數據:
    m = ( 50 ? 90 ) ( 60 ? 100 ) + ( 70 ? 90 ) ( 80 ? 100 ) + ( 90 ? 90 ) ( 100 ? 100 ) + ( 110 ? 90 ) ( 120 ? 100 ) + ( 130 ? 90 ) ( 140 ? 100 ) ( 50 ? 90 ) 2 + ( 70 ? 90 ) 2 + ( 90 ? 90 ) 2 + ( 110 ? 90 ) 2 + ( 130 ? 90 ) 2 \ m = \frac{(50-90)(60-100) + (70-90)(80-100) + (90-90)(100-100) + (110-90)(120-100) + (130-90)(140-100)}{(50-90)^2 + (70-90)^2 + (90-90)^2 + (110-90)^2 + (130-90)^2} \ ?m=(50?90)2+(70?90)2+(90?90)2+(110?90)2+(130?90)2(50?90)(60?100)+(70?90)(80?100)+(90?90)(100?100)+(110?90)(120?100)+(130?90)(140?100)??
    計算分子和分母:

    • 分子:
      ( ? 40 ) ( ? 40 ) + ( ? 20 ) ( ? 20 ) + ( 0 ) ( 0 ) + ( 20 ) ( 20 ) + ( 40 ) ( 40 ) = 1600 + 400 + 0 + 400 + 1600 = 4000 \ (-40)(-40) + (-20)(-20) + (0)(0) + (20)(20) + (40)(40) = 1600 + 400 + 0 + 400 + 1600 = 4000 \ ?(?40)(?40)+(?20)(?20)+(0)(0)+(20)(20)+(40)(40)=1600+400+0+400+1600=4000?

    • 分母:
      KaTeX parse error: Can't use function '\(' in math mode at position 2: \?(?-40)^2 + (-20)^…

    • 斜率:
      m = 4000 4000 = 1 \ m = \frac{4000}{4000} = 1 \ ?m=40004000?=1?

  3. 計算截距(( c ))
    c = y ˉ ? m ? x ˉ = 100 ? 1 ? 90 = 10 \ c = \bar{y} - m \cdot \bar{x} = 100 - 1 \cdot 90 = 10 \ ?c=yˉ??m?xˉ=100?1?90=10?

  4. 回歸方程
    y = 1 ? x + 10 \ y = 1 \cdot x + 10 \ ?y=1?x+10?

預測

現在,我們可以使用這個方程來預測新房屋的房價。例如,如果房屋面積是 100 平方米,預測的房價為:
y = 1 ? 100 + 10 = 110 萬元? \ y = 1 \cdot 100 + 10 = 110 \text{ 萬元} \ ?y=1?100+10=110?萬元?

多變量線性回歸

如果數據集中包含多個自變量,例如房屋面積和房間數量,我們使用多變量線性回歸:

房屋面積(( x_1 ))房間數量(( x_2 ))房價(( y ))
50260
70380
904100
1105120
1306140
  1. 建立模型
    y = m 1 ? x 1 + m 2 ? x 2 + c \ y = m_1 \cdot x_1 + m_2 \cdot x_2 + c \ ?y=m1??x1?+m2??x2?+c?

  2. 使用線性回歸算法(如梯度下降或最小二乘法)來求解 ( m_1 )、( m_2 ) 和 ( c )。

  3. 預測:使用求得的參數來預測新房屋的房價。

通過這個簡單的例子,可以看出線性回歸如何通過擬合數據點來建立預測模型。

2. 支持向量機算法(Support Vector Machine,SVM)

支持向量機(SVM)是一種用于分類任務的監督學習算法。它的基本思想是將數據點映射到高維空間中,并找到一個最優的超平面分隔不同類別的數據點。這個超平面的選擇不僅要正確分類訓練數據,還要最大化與最近數據點(支持向量)之間的距離,以提高模型的泛化能力。需要注意的是,支持向量機需要對輸入數據進行完全標記,僅直接適用于二分類任務,應用將多類任務需要減少到幾個二元問題。

img

舉例說明

假設有如下數據集,描述了兩類不同類別的點,用 xy 表示兩個特征:

表格

復制

xy類別
12A
23A
33A
67B
78B
89B

我們的目標是找到一個超平面來分隔類別 A 和類別 B。

線性可分情況
  1. 數據可視化

    • 將數據點繪制在二維平面上,類別 A 的點分布在左邊,類別 B 的點分布在右邊。
  2. 尋找最優超平面

    • SVM 會找到一個超平面,使得這個超平面與最近的類別 A 和類別 B 的點之間的距離最大化。

    • 假設找到的最優超平面方程為:

      w1x+w2y+b=0

    • 支持向量是那些離超平面最近的點,例如類別 A 中的點 (3, 3) 和類別 B 中的點 (6, 7)。

  3. 間隔計算

    • 計算支持向量到超平面的距離,并最大化這個距離。
  4. 分類決策

    • 對于新的數據點,根據其在超平面的哪一側來判斷其類別。
非線性可分情況

假設數據集如下,描述了兩類不同類別的點,但這些點在二維空間中無法用一條直線分隔:

表格

復制

xy類別
11A
22A
33A
24B
35B
46B
  1. 數據可視化

    • 將數據點繪制在二維平面上,類別 A 的點分布在左下角,類別 B 的點分布在右上角,但無法用一條直線分隔。
  2. 核技巧

    • 使用徑向基函數核(RBF)將數據映射到高維空間中,使其在高維空間中線性可分。

    • RBF 核函數定義為:

      K(x,x′)=exp(?γx?x′∥2)

      其中,γ 是核函數的參數,控制映射到高維空間的程度。

  3. 尋找最優超平面

    • 在高維空間中找到一個超平面來分隔數據點。
    • 支持向量是那些離超平面最近的點。
  4. 分類決策

    • 對于新的數據點,將其映射到高維空間后,根據其在超平面的哪一側來判斷其類別。

3. 最近鄰居/k-近鄰算法 (K-Nearest Neighbors,KNN)

KNN算法是一種基于實例的學習,或者是局部近似和將所有計算推遲到分類之后的惰性學習。用最近的鄰居(k)來預測未知數據點。k 值是預測精度的一個關鍵因素,無論是分類還是回歸,衡量鄰居的權重都非常有用,較近鄰居的權重比較遠鄰居的權重大

KNN 算法的缺點是對數據的局部結構非常敏感。計算量大,需要對數據進行規范化處理,使每個數據點都在相同的范圍。

img

  • KNN 也可以用于回歸問題。例如,我們有一組房屋,的數據包括房屋的面積、房齡等特征以及房價(目標變量)。當我們想要預測一套新房子的價格時,就找到訓練集中與新房子在面積和房齡等方面最相似的 k 個房子,然后取這 k 個房子價格的平均值作為新房子的預測價格。不過,回歸問題中的 KNN 實現細節和應用場景相對分類問題有所不同,主要在于輸出結果是從連續值中預測而不是分類標簽。

4. 邏輯回歸算法 Logistic Regression

邏輯回歸是一種用于解決二分類問題的監督學習算法(也可以通過一些擴展方法用于多分類)。它的目標是找到一個決策邊界,將不同類別的數據點分開。例如,在一個二維平面上,這可能是一條直線或曲線,用于區分兩類樣本。

邏輯回歸算法(Logistic Regression)一般用于需要明確輸出的場景,如某些事件的發生(預測是否會發生降雨)。通常,邏輯回歸使用某種函數將概率值壓縮到某一特定范圍。

邏輯回歸模型的輸出是一個概率值,表示樣本屬于某個類別的概率。這個概率值通過邏輯函數(也稱為 sigmoid 函數)來計算。邏輯函數的數學表達式為:

img

其中 z 是線性組合(如 z=θ0+θ1x1+θ2x2+?+θnx**n)。

img
在這里插入圖片描述

5.決策樹算法 Decision Tree

決策樹(Decision tree)是一種特殊的樹結構,由一個決策圖和可能的結果(例如成本和風險)組成,用來輔助決策。機器學習中,決策樹是一個預測模型,樹中每個節點表示某個對象,而每個分叉路徑則代表某個可能的屬性值,而每個葉節點則對應從根節點到該葉節點所經歷的路徑所表示的對象的值。決策樹僅有單一輸出,通常該算法用于解決分類問題。

一個決策樹包含三種類型的節點:

  1. 決策節點:通常用矩形框來表示
  2. 機會節點:通常用圓圈來表示
  3. 終結點:通常用三角形來表示

? 簡單決策樹算法案例,確定人群中誰喜歡使用信用卡。考慮人群的年齡和婚姻狀況,如果年齡在30歲或是已婚,人們更傾向于選擇信用卡,反之則更少。
通過確定合適的屬性來定義更多的類別,可以進一步擴展此決策樹。在這個例子中,如果一個人結婚了,他超過30歲,他們更有可能擁有信用卡(100% 偏好)。測試數據用于生成決策樹。
img

img

總結

算法名稱基本原理優點缺點適用場景
線性回歸通過擬合一條直線或多維超平面來預測連續值。簡單易懂,計算高效。只能處理線性關系,對異常值敏感。回歸任務,如房價預測。
支持向量機(SVM)在高維空間中尋找一個最優超平面來分隔不同類別的數據點。分類效果好,泛化能力強。對參數選擇敏感,計算復雜度高。分類任務,尤其是高維數據。
K-近鄰(KNN)基于最近的鄰居來預測未知數據點的類別或值。簡單易懂,適用于非線性數據。計算量大,對數據局部結構敏感。分類和回歸任務。
邏輯回歸通過邏輯函數將線性回歸的輸出映射到概率值,用于二分類問題。模型可解釋性強。假設特征獨立,可能不適用于強相關特征數據。二分類任務,如垃圾郵件識別。
決策樹通過構建樹形結構來進行決策,每個節點表示某個屬性的測試。模型可解釋性強,能處理非線性關系。容易過擬合,對數據波動敏感。分類任務,如客戶細分。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/904277.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/904277.shtml
英文地址,請注明出處:http://en.pswp.cn/news/904277.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

正弦波、方波、三角波和鋸齒波信號發生器——Multisim電路仿真

目錄 Multisim使用教程說明鏈接 一、正弦波信號發生電路 1.1正弦波發生電路 電路組成 工作原理 振蕩頻率 1.2 正弦波發生電路仿真分析 工程文件鏈接 二、方波信號發生電路 2.1 方波發生電路可調頻率 工作原理 詳細過程 2.2 方波發生電路可調頻率/可調占空比 調節占空比 方波產生…

【AND-OR-~OR鎖存器設計】2022-8-31

緣由鎖存器11111111111-硬件開發-CSDN問答 重置1,不論輸入什么,輸出都為0; 重置0,輸入1就鎖住1 此時輸入再次變為0,輸出不變,為鎖住。

力扣-字符串-468 檢查ip

思路 考察字符串的使用,還有對所有邊界條件的檢查 spilt(“\.”),toCharArray,Integer.parseInt() 代碼 class Solution {boolean checkIpv4Segment(String str){if(str.length() 0 || str.length() > 4) retur…

BC8 十六進制轉十進制

題目:BC8 十六進制轉十進制 描述 BoBo寫了一個十六進制整數ABCDEF,他問KiKi對應的十進制整數是多少。 輸入描述: 無 輸出描述: 十六進制整數ABCDEF對應的十進制整數,所占域寬為15。 備注: printf可以使用…

ARM子程序和棧

微處理器中的棧由棧指針指向存儲器中的棧頂來實現,當數據項入棧時,棧 指針向上移動,當數據項出棧時,棧指針向下移動。 實現棧時需要做出兩個決定:一是當數據項進棧時是向低位地址方向向上生 長(圖a和圖b&a…

jwt身份驗證和基本的利用方式

前言 : 什么是jwt(json web token)? 看看英文單詞的意思就是 json形式的token 他的基本的特征 : 類似于這樣的 他有2個點 分割 解碼的時候會有三個部分 頭部 payload 對稱密鑰 這個就是對稱加密 頭部&am…

n8n工作流自動化平臺的實操:利用本地嵌入模型,完成文件內容的向量化及入庫

1.成果展示 1.1n8n的工作流 牽涉節點:FTP、Code、Milvus Vector Store、Embeddings OpenAI、Default Data Loader、Recursive Character Text Splitter 12.向量庫的結果 2.實操過程 2.1發布本地嵌入模型服務 將bge-m3嵌入模型,發布成滿足open api接口…

MATLAB人工大猩猩部隊GTO優化CNN-LSTM多變量時間序列預測

本博客來源于CSDN機器魚,未同意任何人轉載。 更多內容,歡迎點擊本專欄目錄,查看更多內容。 目錄 0 引言 1 數據準備 2 CNN-LSTM模型搭建 3 GTO超參數優化 3.1 GTO函數極值尋優 3.2 GTO優化CNN-LSTM超參數 3.3 主程序 4 結語 0 引言…

git項目遷移,包括所有的提交記錄和分支 gitlab遷移到gitblit

之前git都是全新項目上傳,沒有遷移過,因為遷移的話要考慮已有項目上的分支都要遷移過去,提交記錄能遷移就好;分支如果按照全新項目上傳的方式需要新git手動創建好老git已有分支,在手動一個一個克隆老項目分支代碼依次提…

Photo-SLAM論文理解、環境搭建、代碼理解與實測效果

前言:第一個解耦式Photo-SLAM,亮點和效果。 參考:https://zhuanlan.zhihu.com/p/715311759 全網最細PhotoSLAM的conda環境配置教程,拒絕環境污染!!-CSDN博客 1. 環境搭建 硬件:RTX 4090D wi…

如何使用VSCode編寫C、C++和Python程序

一、首先準備好前期工作。如下載安裝Python、VSCode、一些插件等。寫代碼之前需要先創建文件夾和文件。 二、將不同語言寫的代碼放在不同的文件夾中,注意命名時不要使用中文。 三、打開VSCode,點擊“文件”->“打開文件夾”->“daimalainxi”->…

基于不確定性感知學習的單圖像自監督3D人體網格重建 (論文筆記與思考)

文章目錄 論文解決的問題提出的算法以及啟發點 論文解決的問題 首先這是 Self-Supervised 3D Human mesh recovery from a single image with uncertainty-aware learning (AAAI 2024)的論文筆記。該文中主要提出了一個自監督的framework用于人體的姿態…

Leetcode刷題記錄33——二叉樹的最小深度

題源:https://leetcode.cn/problems/minimum-depth-of-binary-tree/description/ 題目描述: 思路一: 使用 DFS 遞歸遍歷的解法,每當遍歷到一條樹枝的葉子節點,就會更新最小深度,當遍歷完整棵樹后&#x…

有效的括號(20)

20. 有效的括號 - 力扣&#xff08;LeetCode&#xff09; 解法&#xff1a; class Solution { public:bool isValid(string s) {unordered_map<char, char> m {{), (}, {],[}, {}, {}};stack<char> stk;for (int i 0; i < s.size(); i) {if (s[i] ( || s[i…

電子郵件相關協議介紹

0 Preface/Foreword 1 協議介紹 電子郵件包含的主要協議&#xff1a; SMTPPOPIMAP 1.1 SMPT SMPT: Simple Mail Transfer Protocol&#xff0c;電子郵件傳輸的標準協議&#xff0c;負責將郵件從發送方傳輸到接收方郵件服務器。 1.2 POP POP&#xff1a; Post Office Protoc…

Linux壓縮和解壓類

一、gzip/gunzip 壓縮 1、基本語法 gzip 文件 &#xff08;功能描述&#xff1a;壓縮文件&#xff0c;只能將文件壓縮為*.gz文件&#xff09; gunzip 文件.gz &#xff08;功能描述&#xff1a;解壓縮文件命令&#xff09; 2、經驗技巧 &#xff08;1&#…

力扣hot100 (除自身以外數組的乘積)

238. 除自身以外數組的乘積 中等 給你一個整數數組 nums&#xff0c;返回 數組 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘積 。 題目數據 保證 數組 nums之中任意元素的全部前綴元素和后綴的乘積都在 32 位 整數范圍內。 請 不要使用除…

什么是“系統調用”

一、什么是“系統調用”&#xff1f;用生活中的比喻理解 可以把“系統調用”比作你&#xff08;用戶&#xff09;向“管理員”請求幫助完成某件事情的過程。 舉個例子&#xff1a; 你想借書&#xff0c;去圖書館&#xff08;操作系統&#xff09;找管理員&#xff08;內核&a…

三維重建(二十一)——第二步和第三步

文章目錄 一、上一篇5.3.1 train-185.3.2 test-193二、第二步:自己重新寫一個代碼,利用RTK的參數,成功的和gshell的渲染圖片一樣2.1 只能單獨一個圖片,并且需要調整輸入pose\內參問題描述可能原因2.2 批量輸出問題描述可能原因解決方案重新檢查代碼發現錯誤2.3 成功三、第三…

n8n 中 No Operation 節點說明

n8n 中 No Operation 節點說明 當"什么都不做"也是一種設計:n8n No Operation 節點深度解析一、No Operation節點是什么?二、為什么需要"空節點"?1. 流程可視化注釋2. 調試占位符3. 流程拓撲優化三、實戰應用場景場景1:審批流程占位四、設計哲學思考五…