深入理解機器學習

一.前言

本章節開始來講解一下機器學習的知識,本期作為一個了解就大概介紹一下,我們不會從機器學習基礎開始介紹,但是后面會來補充,隨著ai的不斷發展,機器學習在ai的領域里面的占比越來約少,我們還是以應用為主,所以介紹完本章就會開始深度學習。

二.深入理解機器學習

  • 算法模型對象:

    • 一種特殊的對象,特殊之處在于,該對象內部集成/封裝了某種形式的算法/方程。該算法/方程用于找尋數據間的規律。假設某一個模型內部封裝的算法/方程如下:

      • y = w * x + b,這是一個還沒有求出解的方程式。

  • 樣本數據:

    • 特征數據:自變量(一個樣本的描述信息)

    • 標簽數據:因變量(一個樣本數據的結果)

  • 模型的訓練:

    • 將樣本數據帶入到算法模型對象內部的算法/方程中,對算法/方程進行求解操作。

    • 在該算法/方程中 y = w * x + b,如果求出了w和b則方程就可有解。

    • 模型訓練就是在使用算法/方程找尋樣本數據之間的規律。

  • 模型的作用:

    • 對未知樣本實現預測、分類或者決策。

    • 算法/方程的解就是模型實現分類或者預測的結果。

  • 算法模型的分類:

    • 有監督類別:

      • 有監督學習是指使用帶有標簽的樣本數據來訓練模型

    • 無監督類別:

      • 無監督學習是指使用沒有標簽的樣本的數據訓練模型

三.KNN分類算法原理

簡單地說,KNN算法是采用測量不同特征值之間的距離方法進行分類。大家可以類別:近朱者赤近墨者黑這句話進行理解。

下面,我們就詳細來理解下KNN的分類原理,先看下圖:w1(貓)、w2(狗)和w3(兔子)是三個已知類群,X則是一個未知類別的圖片樣本,現在要基于KNN算法將X樣本分到w1、w2和w3其中的一個類別中,以確定X圖片中的動物到底是貓、狗還是兔子。

?

根據我們的直接感受,應該是衡量X樣本距離w1、w2和w3哪個類群最近,則X樣本就應該被分到哪個類別中。這個是不是就好比與:近朱者赤近墨者黑呢。那么,KNN究竟是如何實現的分類呢?

**實現步驟:**

1. 算距離:KNN算法會計算X樣本到其余所有樣本之間的距離。(有幾個其余樣本就會計算幾次距離)
2. 找近鄰:定義一個k值,找出離X最近的k個樣本最為X最近的k個鄰居。注意,k值是需要認為定義的一個數值。
3. 投票:根據k個最近的鄰居樣本的類別標簽進行投票,哪個類別的標簽得票最多(在k個樣本中哪個類別樣本數量最多),則X樣本就歸屬到該類別中。

**注意:不同的k,可能會造成不同的分類結果** ??

在下圖中,如果k為3則小球的分類結果為三角形,k為5則分類結果為正方形。因此,k值的最優選擇在KNN中是比較重要的一個環節,稍后會詳細進行講解說明。

?

距離計算方式: 可以是歐式距離、曼卡頓距離或者閔可夫斯基距離等方式?

?

電影分類

眾所周知,電影可以按照題材分類,然而題材本身是如何定義的?由誰來判定某部電影屬于哪個題材?也就是說同一題材的電影具有哪些公共特征?這些都是在進行電影分類時必須要考慮的問題。下面我們就一起來探究下電影如何實現分類?

電影名稱打斗鏡頭接吻鏡頭電影類型
California Man3104愛情片
He Not Really into Dudes2100愛情片
Beautiful Woman181愛情片
Kevin Longblade10110動作片
Robo Slayer 3000995動作片
Amped 2982動作片
1890未知
采集到了一組電影的樣本數據,每一個電影樣本有兩個特征維度:打斗鏡頭和接吻鏡頭,電影類型為目標數據,有愛情和動作兩種類別。其中有一部未知類別的電影"?",并且提取到了該電影的打斗和接吻鏡頭的數量。接下來,使用KNN來計算電影 “?” 的特征到其他已知類型電影特征之間的距離。

下面可以,觀測下具體的距離顯示:

根據歐式距離,進行距離計算結果如下:

電影名稱與未知類型電影“?”的距離
California Man20.5
He Not Really into Dudes18.7
Beautiful Woman19.2
Kevin Longblade115.3
Robo Slayer 3000117.4
Amped 2118.9

制定k的值,找到電影 “ ?”周圍最近的k個鄰居,假定k的值為3,則離其最近的3個鄰居是:

電影名稱電影類型
California Man愛情片
He Not Really into Dudes愛情片
Beautiful Woman愛情片

投票:最近的3個鄰居種,愛情類別的得票最多,因此 “ ?”電影的類別被KNN劃分到了愛情片類別。

四.何為回歸

  • 回歸問題判定:

    • 回歸問題對應的樣本數據的標簽數據是連續性的值,而分類問題對應的是離散型的值。

    • 在社會中產生的數據必然是離散型或者是連續型的數據,那么企業針對數據所產生的需求也無非是分類問題或者回歸問題。

  • 常見的回歸問題:

    • 預測房價

    • 銷售額的預測

    • 貸款額度指定

    • ......

線性回歸在生活中的映射

  • 學生期末成績制定

    • 總成績 = 0.7 * 考試成績 + 0.3 * 平時成績

    • 則該例子中,特征值為考試成績和平時成績,目標值為總成績。從此案例中大概可以感受到

      • 回歸算法預測出來的結果其實就是經過相關的算法計算出來的結果值!

      • 每一個特征需要有一個權重的占比,這個權重的占比明確后,則就可以得到最終的計算結果,也就是獲取了最終預測的結果了。

        • 那么這個特征對應的權重如何獲取或者如何制定呢?

現在有一組售房數據:

面積售價
55110
76152
80160
100200
120240
150300

對售房數據的分布情況進行展示

?

問題:假如現在有一套房子,面積為76.8平米,那么這套房子應該賣多少錢呢?也就是如何預測該套房子的價錢呢?上圖中散點的分布情況就是面積和價錢這兩個值之間的關系,那么如果該關系可以用一種分布趨勢來表示的話,那么是不是就可以通過這分布趨勢預測出新房子的價格呢??

?

在上圖中使用了一條直線來表示了房子的價格和面積對應的分布趨勢,那么該趨勢找到后,就可以基于該趨勢根據新房子的面積預測出新房子的價格。

線性回歸的作用:找出特征和目標之間存在的某種趨勢,在二維平面中,該種趨勢可以用一條線段來表示,該條線段用一元一次線性方程來表示:y = w * x + b。

將上述的售房數據,帶入到線性方程中,經過求解,w和b變為了已知,現在方程為:y = 2 * x + 0。則發現,在上述售房數據中,面積和價格之間的關系是二倍的關系,其實就可以映射成:價格 = 2 * 面積 ,這個方程就是價格和面積的分布趨勢,也就是說根據該方程就可以進行新房子價格的預測。

五.損失函數?

?如果在房價預測案例中,房子的面積和價格的分布規律如下圖所示(非線性的分布),那是否還可以使用一條直線表示特征和目標之間的趨勢呢?

可以,只要保證直線距離所有的散點距離最近,則該直線還是可以在一定程度上表示非線性分布散點之間的分布規律。但是該規律進行的預測會存在一定的誤差/損失

?

在多數的預測場景中,預測結果和真實結果之間都會存在一定的誤差,那么誤差存在,我們應該如何處理損失/誤差呢?

量化損失/損失函數:真實結果y和預測結果(xw)差異平方的累加和(誤差平方和/殘差平方和):

?

提問:損失函數公式中,誤差的大小和哪個系數有直系的關聯呢?

答案:和權重系數w是有直系關聯。也就是說w的不同會導致誤差大小的不同,那么線性回歸算法迭代訓練過程中最終的問題就轉化成了如何去求解線性方程中的w使得誤差可以最小

六.無監督學習與聚類算法

  • 概述

    • 在此之前我們所學習到的算法模型都是屬于有監督學習的模型算法,即模型需要的樣本數據既需要有特征矩陣X,也需要有真實的標簽y。那么在機器學習中也有一部分的算法模型是屬于無監督學習分類的,所謂的無監督學習是指模型只需要使用特征矩陣X即可,不需要真實的標簽y。那么聚類算法就是無監督學習中的代表之一。

  • 聚類算法

    • 聚類算法其目的是將數據劃分成有意義或有用的組(或簇)。這種劃分可以基于我們的業務 需求或建模需求來完成,也可以單純地幫助我們探索數據的自然結構和分布。比如在商業中,如果我們手頭有大量 的當前和潛在客戶的信息,我們可以使用聚類將客戶劃分為若干組,以便進一步分析和開展營銷活動。

?

七.KMeans算法原理闡述?

  • 簇與質心:

    • 簇:KMeans算法將一組N個樣本的特征矩陣X劃分為K個無交集的簇,直觀上來看是簇是一個又一個聚集在一起的數 據,在一個簇中的數據就認為是同一類。簇就是聚類的結果表現。

    • 質心:簇中所有數據的均值u通常被稱為這個簇的“質心”(centroids)。

      • 在一個二維平面中,一簇數據點的質心的橫坐標就是這一簇數據點的橫坐標的均值,質心的縱坐標就是這一簇數據點的縱坐標的均值。同理可推廣至高維空間。

      • 質心的個數也聚類后的類別數是一致的

  • 在KMeans算法中,簇的個數K是一個超參數,需要我們人為輸入來確定。KMeans的核心任務就是根據我們設定好的K,找出K個最優的質心,并將離這些質心最近的數據分別分配到這些質心代表的簇中去。具體過程可以總結如下:

?

?

  • 那什么情況下,質心的位置會不再變化呢?當我們找到一個質心,在每次迭代中被分配到這個質心上的樣本都是一致的,即每次新生成的簇都是一致的,所有的樣本點都不會再從一個簇轉移到另一個簇,質心就不會變化了。

  • 這個過程在可以由下圖來顯示,我們規定,將數據分為4簇(K=4),其中白色X代表質心的位置:

  • 聚類算法聚出的類有什么含義呢?這些類有什么樣的性質?

    • 我們認為,被分在同一個簇中的數據是有相似性的,而不同簇中的數據是不同的,當聚類完畢之后,我們就要分別去研究每個簇中的樣本都有什么樣的性質,從而根據業務需求制定不同的商業或者科技策略。

    • 聚類算法追求“簇內差異小,簇外差異 大”:

      • 而這個“差異“,由樣本點到其所在簇的質心的距離來衡量。

  • 對于一個簇來說,所有樣本點到質心的距離之和越小,我們就認為這個簇中的樣本越相似,簇內差異就越小。而距離的衡量方法有多種,令x表示簇中的一個樣本點,u表示該簇中的質心,n表示每個樣本點中的特征數目,i表示組成點的每個特征,則該樣本點到質心的距離可以由以下距離來度量:

?

? 八.輪廓系數

  • 在99%的情況下,我們是對沒有真實標簽的數據進行探索,也就是對不知道真正答案的數據進行聚類。這樣的聚 類,是完全依賴于評價簇內的稠密程度(簇內差異小)和簇間的離散程度(簇外差異大)來評估聚類的效果。其中 輪廓系數是最常用的聚類算法的評價指標。它是對每個樣本來定義的,它能夠同時衡量:

    • 1)樣本與其自身所在的簇中的其他樣本的相似度a,等于樣本與同一簇中所有其他點之間的平均距離

    • 2)樣本與其他簇中的樣本的相似度b,等于樣本與下一個最近的簇中的所有點之間的平均距離 根據聚類的要求”簇內差異小,簇外差異大“,我們希望b永遠大于a,并且大得越多越好。

    • 單個樣本的輪廓系數計算為:

  • 很容易理解輪廓系數范圍是(-1,1):

    • 其中值越接近1表示樣本與自己所在的簇中的樣本很相似,并且與其他簇中的樣本不相似,當樣本點與簇外的樣本更相似的時候,輪廓系數就為負。

    • 當輪廓系數為0時,則代表兩個簇中的樣本相似度一致,兩個簇本應該是一個簇。可以總結為輪廓系數越接近于1越好,負數則表示聚類效果非常差。

  • 如果一個簇中的大多數樣本具有比較高的輪廓系數,則簇會有較高的總輪廓系數,則整個數據集的平均輪廓系數越高,則聚類是合適的:

    • 如果許多樣本點具有低輪廓系數甚至負值,則聚類是不合適的,聚類的超參數K可能設定得 太大或者太小。

?九.總結

機器學習前置知識點就介紹這么多了,后面就是要介紹一下深度學習的知識了,還是以實用性為主,到最后才是給大家補充機器學習的細節,?

?

?

?

?

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

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

相關文章

數據結構 順序表(1)

目錄 1.線性表 2.順序表 1.線性表 線性表(linear list)是n個具有相同特性的數據元素的有限序列。線性表是一種在實際中廣泛使用 的數據結構,常見的線性表:順序表、鏈表、棧、隊列、字符串… 線性表在邏輯上是線性結構&#…

openssl 生成國密證書

openssl生成證書生成CA私鑰 openssl ecparam -genkey -name SM2 -out ca.key.pem -noout證書請求 openssl req -new -key ca.key.pem -out ca.cert.req -subj “/CNrtems-strongswan-CA”生成證書 openssl x509 -req -days 3650 -in ca.cert.req -signkey ca.key.pem -out ca.c…

系統架構設計師論文分享-論分布式事務技術及其應用

我的軟考歷程 摘要 2023年9月,我所在的公司通過了研發紗線MES系統的立項,該系統為國內紗線工廠提供SAAS服務,旨在提高紗線工廠的數字化和智能化水平。我在該項目中擔任系統架構設計師一職,負責該項目的架構設計工作。本文結合我…

東土科技智能塔機系統亮相南京,助力智能建造高質量發展

近日,由南京市城鄉建設委員會、江蘇省土木建筑學會主辦的“無人駕駛智能塔機觀摩會”,在中建三局一公司南京揚子江智慧中心項目現場成功舉辦。作為全國首批智能建造試點城市,南京市已出臺20余項支持政策,落地93個試點項目&#xf…

3D Surface Reconstruction with Enhanced High-Frequency Details

3D Surface Reconstruction with Enhanced High-Frequency Details核心問題:當前基于神經隱式表示(如 NeuS)的 3D 表面重建方法,通常采用隨機采樣策略。這種隨機采樣難以充分捕捉圖像中的高頻細節區域(如紋理、邊緣、光…

Science Robotics 耶魯大學開源視觸覺新范式,看出機器人柔性手的力感知

摘要:在機器人視觸覺傳感領域,如何兼顧成本與性能始終是一大挑戰。耶魯大學在《Science Robotics》上發表最新研究,提出了一種“Forces for Free”(F3)新范式。該研究通過觀測一個經過特殊優化的開源柔性手&#xff08…

關于java項目中maven的理解

我的理解:maven是java項目的依賴管理工具,通過pom.xml文件配置要下載的依賴,settings.xml配置maven下載的鏡像沒有就默認在maven中央倉庫下載依賴,本地倉庫是存儲下載好的依賴ai:1. 功能定位局限Maven 不只是依賴管理工具&#xf…

緩存三大問題詳解與工業級解決方案

文章目錄緩存三大問題詳解與工業級解決方案概念總覽問題詳解1. 緩存穿透 (Cache Penetration)問題描述典型場景危害2. 緩存擊穿 (Cache Breakdown)問題描述典型場景危害3. 緩存雪崩 (Cache Avalanche)問題描述典型場景危害工業級解決方案緩存穿透解決方案方案1: 布隆過濾器方案…

FreeRTOS 中主函數 while 循環與任務創建的緊密聯系

FreeRTOS 中主函數 while 循環與任務創建的緊密聯系 在嵌入式開發領域,FreeRTOS 是一款被廣泛應用的輕量級實時操作系統,為開發者提供了高效的多任務調度機制。對于初學者來說,理解主函數中的 while 循環與通過 xTaskCreate 創建的任務之間的…

Flutter基礎(前端教程⑦-Http和卡片)

1. 假設后端返回的數據格式{"code": 200,"data": [{"name": "張三","age": 25,"email": "zhangsanexample.com","avatar": "https://picsum.photos/200/200?random1","statu…

pytorch chunk 切塊

目錄 chunk切塊 chunk???????切塊 import torch# 創建一個形狀為 [2, 3, 4] 的張量 x torch.arange(6).reshape(2, 3) print("原始張量形狀:", x.shape) print("x:", x) # 輸出: 原始張量形狀: torch.Size([2, 3, 4])# 沿著最后一個維度分割成 2 …

PCIe基礎知識之Linux內核中PCIe子系統的架構

5.1 先驗知識 驅動模型:Linux建立了一個統一的設備模型,分別采用總線、設備、驅動三者進行抽象,其中設備和驅動均掛載在總線上面,當有新的設備注冊或者新的驅動注冊的時候,總線會進行匹配操作(match函數),…

2.2 TF-A在ARM生態系統中的角色

目錄2.2.1 作為ARM安全架構的參考實現2.2.2 與ARM處理器內核的協同關系2.2.3 在啟動鏈中的核心地位2.2.4 與上下游軟件的關系與底層固件的協作與上層軟件的接口2.2.5 在ARM生態系統中的標準化作用2.2.6 典型應用場景2.2.1 作為ARM安全架構的參考實現 TF-A(Trusted …

Chrome 開發者警告:`DELETE err_empty_response` 是什么?jQuery AJAX 如何應對?

在Web開發的世界里,我們時常會遇到各種各樣的錯誤信息,它們像一個個謎語,等待我們去破解。今天我們要聊的這個錯誤——DELETE err_empty_response,尤其是在使用 jQuery 的 $.ajax 發送 DELETE 請求時遇到,確實讓人頭疼。它意味著瀏覽器嘗試刪除某個資源,卻收到了一個空蕩…

python作業 1

1.技術面試題 (1)TCP與UDP的區別是什么? 答: TCP建立通信前有三次握手,結束通信后有四次揮手,數據傳輸的可靠性高但效率較低;UDP不需要三次握手就可傳輸數據,數據傳輸完成后也不需要…

centos7 java多版本切換

文章目錄前言一、卸載原來的jdk二、下載jdk三、解壓jdk三、配置環境變量四、切換JAVA環境變量前言 本來是為了安裝jenkins,安裝了對應的java,node,maven,git等環境,然后運行jenkins時候下載插件總是報錯,我下載的jenkins是 2.346.1 版本&…

用Python和OpenCV從零搭建一個完整的雙目視覺系統(四)

本系列文章旨在系統性地闡述如何利用 Python 與 OpenCV 庫,從零開始構建一個完整的雙目立體視覺系統。 本項目github地址:https://github.com/present-cjn/stereo-vision-python.git 在上一篇文章中,我們完成了相機標定這一最關鍵的基礎步驟…

STM32-中斷

中斷分為兩路:12345用于產生中斷;678產生事件外設為NVIC設計流程:使能外設中斷設置中斷優先級分組初始化結構體編寫中斷服務函數初始化結構體:typedef struct {uint8_t NVIC_IRQChannel; 指定要使能或禁用的中斷通道例如: TIM3_I…

Shader面試題100道之(61-80)

Shader面試題(第61-80題) 以下是第61到第80道Shader相關的面試題及答案: 61. 什么是UV展開?它在Shader中有什么作用? UV展開是將3D模型表面映射到2D紋理空間的過程,用于定義紋理如何貼合模型。在Shader中&a…

C#基礎:Winform桌面開發中窗體之間的數據傳遞

1.主窗體using System; using System.Windows.Forms;public partial class MainForm : Form {public MainForm(){InitializeComponent();}// 打開二級窗體private void btnOpenSecondaryForm_Click(object sender, EventArgs e){// 創建二級窗體并訂閱事件SecondaryForm second…