python學智能算法(二十九)|SVM-拉格朗日函數求解中-KKT條件

引言

前序學習進程中,對拉格朗日函數執行了初步求導,并獲得了簡化后的拉格朗日函數極值計算式:
L(w,b,α)=∑i=1mαi?12∑i,j=1mαiαjyiyjxiTxjL(w,b,\alpha)=\sum_{i=1}^{m}\alpha_{i}-\frac{1}{2}\sum_{i,j=1}^{m}\alpha_{i}\alpha_{j}y_{i}y_{j}x_{i}^Tx_{j}L(w,b,α)=i=1m?αi??21?i,j=1m?αi?αj?yi?yj?xiT?xj?
這個計算式遵循的約束是:
∑i=1mαiyi=0\sum_{i=1}^{m}\alpha_{i}y_{i}=0i=1m?αi?yi?=0
上述結果其實還有一個專用名稱:烏爾夫對偶。
不過我們就不對這個名稱進行細說,因為還有大事要辦:理解KKT條件。

KKT條件

對于尋找最佳分割超平面的拉格朗日函數: L(w,b,α)=12∥w∥2?∑i=1mαi[yi(w?xi+b?1)]L(w,b,\alpha)=\frac{1}{2}{\left\|w\right\|}^2-\sum_{i=1}^{m}\alpha_{i}[y_{i}(w\cdot x_{i}+b-1)]L(w,b,α)=21?w2?i=1m?αi?[yi?(w?xi?+b?1)]
首先我們證明它是個凸優化問題:
凸優化問題滿足兩個條件,第一個是目標函數為凸函數,第二個是約束條件是凸集。
凸函數,最經典的形式為拋物線函數y=x2y=x^2y=x2,滿足函數圖像上任取兩個點后連線,這兩個點之間的所有函數取值都在這條線下方;
凸集,函數的取值范圍內,取任意兩個點連線后,這條線上的所有點依然在函數的取值范圍內。
然后,回到拉格朗日函數,第一部分12∥w∥2\frac{1}{2}{\left\|w\right\|}^221?w2是典型的拋物線函數,是凸函數;
第二部分yi(w?xi+b?1)=w?(yixi)+byi?yiy_{i}(w\cdot x_{i}+b-1)=w\cdot(y_{i}x_{i})+by_{i}-y{i}yi?(w?xi?+b?1)=w?(yi?xi?)+byi??yi,因為變量是wwwbbb,所以實際看下來這是一條關于wwwbbb的線性函數(二維的時候理解為就是一根直線),線性函數既是凸函數也是非凸函數,而這一部分屬于約束條件,所以約束條件是凸集。綜合上述分析可知尋找最佳分割超平面的拉格朗日函數是個凸優化函數。
解決凸優化函數是在求解凸優化問題,找凸優化問題的極值要用到KKT條件。
平穩性條件:拉格朗日函數關于原始變量(w,b)(w,b)(w,b)的梯度為0,
?L?w==w?∑i=1mαiyixi=0\frac{\partial L}{\partial w}==w-\sum_{i=1}^{m}\alpha_{i}y_{i}x_{i}=0?w?L?==w?i=1m?αi?yi?xi?=0
?L?b=?∑i=1mαiyi=0\frac{\partial L}{\partial b}=-\sum_{i=1}^{m}\alpha_{i}y_{i}=0?b?L?=?i=1m?αi?yi?=0互補松弛條件:對于每個樣本,拉格朗日乘子與約束的松弛量乘積為0,
αi[yi(w?xi+b)?1]=0\alpha_{i}[y_{i}(w\cdot x_{i}+b)-1]=0αi?[yi?(w?xi?+b)?1]=0這表明,
αi=0\alpha_{i}=0αi?=0,樣本對超平面無影響;

αi>0\alpha_{i}>0αi?>0,樣本必須滿足yi(w?xi+b)=1y_{i}(w\cdot x_{i}+b)=1yi?(w?xi?+b)=1,樣板剛好在超平面上;
原問題可行條件,樣本必須滿足分類約束:
yi(w?xi+b≥1)(i=1,2,...,m)y_{i}(w\cdot x_{i}+b≥1)(i=1,2,...,m)yi?(w?xi?+b1)(i=1,2,...,m)
對偶可行條件,拉格朗日橙子非負,
αi≥0(i=1,2,...,m)\alpha_{i}≥0(i=1,2,...,m)αi?0(i=1,2,...,m)
KKT條件是判斷拉格朗日函數存在最優解的核心準則,最優解一定滿足KKT條件,滿足KKT條件一定是最優解。

總結

初步學習了KKT條件。

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

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

相關文章

【AI論文】MiroMind-M1:通過情境感知多階段策略優化實現數學推理的開源新進展

摘要:近期,大型語言模型已從流暢的文本生成發展至能在多個領域進行高級推理,由此催生了推理語言模型(RLMs)。在眾多領域中,數學推理堪稱代表性基準,因為它需要精確的多步驟邏輯與抽象推理能力&a…

《使用Qt Quick從零構建AI螺絲瑕疵檢測系統》——6. 傳統算法實戰:用OpenCV測量螺絲尺寸

目錄一、概述1.1 背景介紹:從“看見”到“看懂”1.2 學習目標二、圖像預處理:讓目標更突出三、輪廓發現與尺寸測量四、總結與展望一、概述 1.1 背景介紹:從“看見”到“看懂” 在上一篇文章中,我們成功地為應用程序安裝了“眼睛…

《人性的弱點》重構【01】

手上有本《人性的弱點》(韓文橋 譯,浙江文藝出版社,2017.1出版),前些年買的,近期翻出來看看。這門書雖成書于80多年前,但卡耐基對人性洞察之深刻,時至今日,并未覺得過時。…

k8s開啟審計日志

k8s默認是關閉審計功能的,想看的話需要到apiserver的pod中才可以。 開啟此功能是為了進行k8s審計日志的收集,方便我們查看k8s中用戶的各自操作。 開啟此功能之前,我們要先創建個審計策略文件audit-policy.yaml 例如以下的測驗文件 apiVersion…

Kafka MQ 消費者應用場景

Kafka MQ 消費者應用場景 1 消費者自動提交的時機 在 Kafka 中默認的消費位移的提交方式是自動提交,這個由消費者客戶端參數 enable.auto.commit 配置,默認值為 true。當然這個默認的自動提交不是每消費一條消息就提交一次,而是定期提交,這個定期的周期時間由客戶端參數 …

Git版本控制系統

Git作為目前最流行的分布式版本控制系統,已經成為開發者必備的技能之一。本文將全面介紹Git的核心概念、基本操作、分支管理以及與GitHub的協作開發,幫助讀者從零開始掌握Git的使用。 一、Git概述 1.1 Git發展歷史 Git誕生于2005年,由Linu…

如何編譯RustDesk(Unbuntu 和Android版本)

編譯Linux版本的RustDesk備注:官方文檔上,一邊都是基于sciter,這個在后面已經不建議使用了,但是依然可以編譯剛開始的時候看官方的文檔,涉及的東西比較多,也搞的一頭霧水,通過B站上一個視頻&…

Spring中的循環依賴:解密、破局與架構啟示

> 當兩個Bean緊緊相擁,Spring容器卻陷入死鎖——這是Java開發者的經典噩夢 某電商平臺凌晨上線時突然宕機,日志里反復滾動著`BeanCurrentlyInCreationException`的報錯。經排查,**優惠券服務與庫存服務在初始化時相互依賴**,形成致命閉環。這個價值百萬的故障案例,揭開…

DataFrame?(數據框)

一種二維表格型數據結構,類似于電子表格(如 Excel)或 SQL 表,由行(記錄)?和列(字段)?組成。它是數據分析、機器學習和科學計算中最常用的數據結構之一,尤其在 ?Python…

B站視頻評論數據爬取

爬取B站視頻評論數據爬取與分析 如果只要單純的腳本可以直接看項目結構里的b_comments.py 一、技術架構 1、環境配置 Python 3.8PyCharm 2、模塊配置 requests:用于發送HTTP請求time:用于處理時間相關的操作csv:用于讀寫CSV文件json&#xff…

OpenAI最新大模型GPT-4o體驗之Code Copilot AI編程大模型

一、前言GPT-4o("o"代表"全能")具備處理各種文本、聲音和圖像資料的能力,能夠輸出多種格式的文本、聲音和圖像。GPT-4o 的推出標志著 AI 技術的重大突破。它不再局限于單一媒介,而是首次實現了文本、語音和圖…

社交電商推客系統全棧開發指南:SpringCloud+分潤算法+Flutter跨端

一、推客系統概述與市場背景推客系統(TuiKe System)是一種基于社交關系的營銷推廣平臺,通過用戶分享商品或服務鏈接,實現裂變式傳播和精準營銷。近年來,隨著社交電商的蓬勃發展,推客系統已成為企業獲客的重…

網安-中間件-Redis未授權訪問漏洞

目錄 Redis Redis持久化 動態修改配置 使用反彈連接的情況 常見監聽端口的方式 常見建立反彈連接的方式 流程 Linux crontab cron文件存儲路徑 利用Redis實現攻擊 1.webshell提權案例 2.定時任務shell反彈案例 3.SSH Key getshell案例 ?編輯Redis其他利用方式 …

【c++深入系列】:萬字詳解棧和隊列和deque(附模擬實現的源碼)

🔥 本文專欄:c 🌸作者主頁:努力努力再努力wz 💪 今日博客勵志語錄: 石頭能被水滴穿,不是因為水有多強,而是因為它從未停過。 ★★★ 本文前置知識: 模版 棧 那么棧這個…

速通python加密之RSA加密

RSA加密 RSA加密是一種非對稱加密算法(與AES等對稱加密不同),由羅納德李維斯特(Ron Rivest)、阿迪薩莫爾(Adi Shamir)和倫納德阿德曼(Leonard Adleman)于1977年提出&…

Java BeanUtils 類詳解:作用、語法與示例

一、BeanUtils 的核心作用BeanUtils 是 Apache Commons 和 Spring Framework 提供的工具類,主要用于簡化 JavaBean 的操作。核心功能包括:屬性拷貝:對象間同名屬性自動復制動態訪問:通過字符串名稱操作屬性類型轉換:自…

PyCharm高效開發全攻略

安裝與基礎配置下載PyCharm專業版或社區版(免費)并完成安裝。首次啟動時選擇默認設置或自定義主題、字體大小等界面偏好。配置Python解釋器路徑(推薦使用虛擬環境),確保項目依賴隔離。快捷鍵與導航熟悉核心快捷鍵能大幅…

Pycharm 給 python 程序打包EXE的配置和方法

前言: Python 語言的設計變得越來越簡單,它有很多可以使用的庫,所以尤其在人工智能時代,Python語言被廣泛應用。但是Python語言和windows系統的兼容性稍微偏弱,如何生成windows可以執行的exe文件。是要一個很復雜的配置過程,本文就會做一個介紹。 本文,通過一個Python…

【Linux | 網絡】傳輸層(UDP和TCP)

目錄一、再談端口號1.1 端口號1.2 端口號的范圍劃分1.3 常見知名端口號1.4 netstat 命令1.5 進程與端口號的關系1.6 pidof 命令二、UDP協議2.1 UDP協議段格式2.2 如何理解UDP報頭和UDP報文2.2.1 UDP報頭2.2.2 UDP報文和UDP報文的管理2.2.3 UDP封裝過程2.3 UDP的特點2.4 UDP的緩…

mybatisX的自定義模板生成

在idea中使用mybtais的自定義模板生成,可以幫我們省去很多重復的代碼。 打開一個項目,我們要修改的主要就兩個文件,一個是生成的mapper接口,另一個是xml文件: 相應的mapper接口模板為: package ${mapper…