MachineLearning(5)-去量綱:歸一化、標準化

去量綱:歸一化、標準化

  • 1.歸一化(Normalization)
    • 1.1 Min-Max Normalization
    • 1.2 非線性Normalization
  • 2.標準化(Standardlization)
    • 2.1 Z-score Normalization
  • 3.標準化在梯度下降算法中的重要性

本博文為葫蘆書《百面機器學習》閱讀筆記。

去量綱化 可以消除特征之間量綱的影響,將所有特征統一到一個大致相同的數值區間內;以便不同量級的指標能夠進行比較和加權處理。

去量綱化的好處:
(1).使得不同量綱之間的特征具有可比性,消除量綱引起的特征數值量級對分析結果的影響;

(2).未歸一化的特征數值太大,將引起數值計算問題;

(3).利用梯度下降算法求解的模型,輸入特征數據通常需要歸一化處理(線性回歸,邏輯回歸,支持向量機,神經網絡模型),可以加速算法的收斂過程。

去量綱化的方法:
兩類常用的方法:歸一化標準化

1.歸一化(Normalization)

1.1 Min-Max Normalization

x′=x?XminXmax?Xminx'=\frac{x-X_{min}}{X_{max}-X_{min}}x=Xmax??Xmin?x?Xmin??

作用: 將原始特征數據線性映射到[0,1]
優點: 線性變換,對數據進行處理,不會改變原有數據的性質
缺點: 新數據加入,Xmin,XmaxX_{min},X_{max}Xmin?,Xmax?可能會發生變化,所有數據需要重新進行歸一化處理。

1.2 非線性Normalization

對數變換:x′=log?xx'=\log xx=logx
反正切變換:x′=2πarctan?xx'=\frac{2}{\pi}\arctan xx=π2?arctanx
適用情況:用于數據分化較大的場景,有些數據很大,有些數據很小 。需要依據數據分布情況,決定使用的非線性函數。

2.標準化(Standardlization)

2.1 Z-score Normalization

零均值標準化
x′=x?μσx'=\frac{x-\mu}{\sigma}x=σx?μ?
其中:μ\muμ 原始數據均值,σ\sigmaσ原始數據標準差 (數據量很大的情況下,這兩個統計量對 加入新數據 不敏感,故可以處理新添加數據的情況);x?μx-\mux?μ 為數據中心化,將數據中心平移到原點。

適用情況: 原始數據分布接近正態分布,將原始數據 標準化 為均值為0 ,方差為1 的分布。
優點: 線性變換,對數據進行處理,不會改變原有數據的性質

3.標準化在梯度下降算法中的重要性

參考博文:通俗易懂理解特征歸一化對梯度下降算法的重要性https://blog.csdn.net/feijie7788/article/details/89812737

涉及數學知識:
1.一個三維曲面z=f(x,y)z=f(x,y)z=f(x,y)被一系列平面z=cz=cz=c所截得到一系列等值線。

2.曲面上某點P 梯度方向 定義:函數在該點增長最快的方向。
通過方向導數與fxf_xfx?fyf_yfy?的關系得出函數在P點增長最快的方向為:(fx,fy)(f_x,f_y)(fx?,fy?),即為梯度方向。

3.等值線上 P點法線方向,垂直于P點切線方向。P點切線方向(dx,dy)(dx,dy)(dx,dy),斜率為dydx\frac{dy}{dx}dxdy?, 由隱函數求導規則可得dydx=?fxfy\frac{dy}{dx}=-\frac{f_x}{f_y}dxdy?=?fy?fx??. 則法線斜率為fyfx\frac{f_y}{f_x}fx?fy??,即,法線方向為(fx,fy)(f_x,f_y)(fx?,fy?) .所以曲線上某點的梯度方向,與過該點的等值線的法線方向相同。

4.c=f(x,y)隱函數求導:(兩邊同時對x求導)
0=?f?x+?f?ydydx=>dydx=?fxfy0=\frac{\partial f}{\partial x}+\frac{\partial f}{\partial y}\frac{dy}{d x}=>\frac{dy}{d x}=-\frac{f_x}{f_y}0=?x?f?+?y?f?dxdy?=>dxdy?=?fy?fx??

5.相互垂直兩個向量a=(x1,y1),b=(x2,y2)a=(x_1,y_1),b=(x_2,y_2)a=(x1?,y1?),b=(x2?,y2?),夾角θ\thetaθ
內積定義垂直關系:∣a∣∣b∣cos?θ=0|a||b|\cos \theta=0abcosθ=0
坐標垂直關系:x1x2+y1y2=0x_1x_2+y_1y_2=0x1?x2?+y1?y2?=0(帶入a=x1i+y1j,b=x2i+y2j,a?b計算a=x_1i+y_1j,b=x_2i+y_2j,a*b計算a=x1?i+y1?j,b=x2?i+y2?j,a?b)
兩向量與x軸夾角正玄值關系:?1=y2x2y1x1-1=\frac{y_2}{x_2} \frac{y_1}{x_1}?1=x2?y2??x1?y1??

參考博文:
1.梯度方向與等高線方向垂直的理解:https://blog.csdn.net/bitcarmanlee/article/details/85275016
2.等值線與梯度的幾何意義:https://jingyan.baidu.com/article/da1091fb475551027849d6b7.html
3.一文讀懂梯度下降算法(各種導數):https://www.cnblogs.com/hithink/p/7380838.html
4.據預處理之中心化(零均值化)與標準化(歸一化):https://www.cnblogs.com/wangqiang9/p/9285594.html
5.歸一化 (Normalization)、標準化 (Standardization)和中心化/零均值化 (Zero-centered)(簡書):https://www.jianshu.com/p/95a8f035c86c

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

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

相關文章

GDB調試技術(一)

啟動GDB的方法有以下幾種: 1、gdb <program> program也就是你的執行文件,一般在當然目錄下。 2、gdb <program> core 用gdb同時調試一個運行程序和core文件,core是程序非法執行后core dump后產生的文件。 3、

GDB調試技術(二)

1) 恢復程序運行和單步調試 當程序被停住了,你可以用continue命令恢復程序的運行直到程序結束,或下一個斷點到來。也可以使用step或next命令單步跟蹤程序。 continue [ignore-count] c [ignore-count] fg [ignore-count] 恢復程序運行,直到程序結束,或是下一個斷點到…

關于Java中String的問題

String 對象的兩種創建方式&#xff1a; String str1 "abcd";//先檢查字符串常量池中有沒有"abcd"&#xff0c;如果字符串常量池中沒有&#xff0c;則創建一個&#xff0c;然后 str1 指向字符串常量池中的對象&#xff0c;如果有&#xff0c;則直接將 st…

學點數學(3)-函數空間

函數空間1.距離&#xff1a;從具體到抽象2.范數3.內積4.拓撲本博文為觀看《上海交通大學公開課-數學之旅-函數空間 》所整理筆記&#xff0c;公開課視頻連接&#xff1a;http://open.163.com/newview/movie/free?pidM8PTB0GHI&midM8PTBUHT0數學中的空間 是 大家研究工作的…

Makefile編寫詳解--項目開發

預備知識&#xff1a; gcc 的3個參數&#xff1a; 1. -o 指定目標文件 gcc sources/main.c -o bin/main 2. -c 編譯的時候只生產目標文件不鏈接 gcc -c sources/main.c -o obj/main.o 3. -I 主要指定頭文件的搜索路徑 gcc -I headers -c main.c -o main.o 4. -l 指定靜…

如何判斷對象已經死亡

引用計數 給對象中添加一個引用計數器&#xff0c;每當有一個地方引用它&#xff0c;計數器就加 1&#xff1b;當引用失效&#xff0c;計數器就減 1&#xff1b;任何時候計數器為 0 的對象就是不可能再被使用的。 這個方法實現簡單&#xff0c;效率高&#xff0c;但是目前主流…

XML常見的操作

1. 創建XML文檔 &#xff08;1&#xff09;創建一個XML文檔非常簡單&#xff0c;其流程如下&#xff1a; ① 用xmlNewDoc函數創建一個文檔指針doc。 ② 用xmlNewNode函數創建一個節點指針root_node。 ③ 用xmlDocSetRootElement將root_node設置為doc的根結點。…

算法(2)-二叉樹的遍歷(遞歸/迭代)python實現

二叉樹的遍歷1.深度優先DFS1.1 DFS 遞歸解法1.1.1先序遍歷1.1.2中序遍歷1.1.3后序遍歷1.2 DFS迭代解法1.2.1先序遍歷1.2.2中序遍歷1.2.3后序遍歷2.廣度優先BFS3.二叉樹的最大深度3.1遞歸3.2迭代4.翻轉二叉樹4.1遞歸4.1迭代5.合并兩棵二叉樹5.1遞歸5.2迭代有兩種通用的遍歷樹的策…

libxml的安裝和相關數據結構詳解

1安裝 一般如果在安裝系統的時候選中了libxml開發庫的話&#xff0c;系統會默認安裝。如果沒有安裝&#xff0c;可以按如下步驟進行手工安裝。 ① 從xmlsoft站點或ftp(ftp.xmlsoft.org)站點下載libxml壓縮包 (libxml2-xxxx.tar.gz) ② 對壓縮包進行解壓縮 tar xvzf …

內核中的 likely() 與 unlikely()

在 2.6 內核中&#xff0c;隨處可以見到 likely() 和 unlikely() 的身影&#xff0c;那么為什么要用它們&#xff1f;它們之間有什么區別&#xff1f; 首先要明確&#xff1a; if(likely(value)) 等價于 if(value) if(unlikely(value)) 也等價于 if(value) 也就是說 likely()…

python外卷(12)-sort(),sorted(),ord(),chr()

Python內置函數1.sort()&#xff0c;sorted()2.ord(), chr()1.sort()&#xff0c;sorted() sort() 是list的方法&#xff0c;對已經存在的列表進行操作&#xff0c;無返回值 a[3,2,4,1] b["c","a","b"] print (a.sort(),b.sort()) # 輸出 (Non…

利用posix_fadvise清理系統中的文件緩存

利用posix_fadvise清理系統中的文件緩存leoncom c/c,unix2011-08-03當我們需要對某段讀寫文件并進行處理的程序進行性能測試時&#xff0c;文件會被系統cache住從而影響I/O的效率&#xff0c;必須清理cache中的對應文件的才能正確的進行性能測試。通常清理內存可以采用下面的這…

空間分配

目前主流的垃圾收集器都會采用分代回收算法&#xff0c;因此需要將堆內存分為新生代和老年代&#xff0c;這樣我們就可以根據各個年代的特點選擇合適的垃圾收集算法。 大多數情況下&#xff0c;對象在新生代中 eden 區分配。當 eden 區沒有足夠空間進行分配時&#xff0c;虛擬…

關于uint32_t uint8_t uint64_t 的問題

怎么又是u又是_t的?u代表的是unsigned相信大家都知道,那么_t又是什么呢?我認為它就是一個結構的標注,可以理解為type/typedef的縮寫,表示它是通過typedef定義的,而不是其它數據類型。 uint8_t,uint16_t,uint32_t等都不是什么新的數據類型,它們只是使用typedef給類型起…

學點數學(4)-協方差矩陣

協方差矩陣協方差矩陣&#xff08;從隨機變量講起&#xff09;隨機變量x&#xff1a;表示隨機試驗各種結果的 實值 單值函數&#xff0c;就是說隨機變量x是一個函數映射&#xff0c;其取值為標量。隨機變量有離散型和連續型&#xff0c;離散型&#xff1a;拋10次硬幣&#xff…

RedLock

概念 Redis 官方站這篇文章提出了一種權威的基于 Redis 實現分布式鎖的方式名叫 Redlock&#xff0c;此種方式比原先的單節點的方法更安全。它可以保證以下特性&#xff1a; 安全特性&#xff1a;互斥訪問&#xff0c;即永遠只有一個 client 能拿到鎖避免死鎖&#xff1a;最終…

GCC中常用的優化的參數

-pipe 的作用&#xff1a; 使用管道代替編譯中臨時文件&#xff0c; -pipe 加速編譯 gcc -pipe foo.c -o foo 加速 在將源代碼變成可執行文件的過程中,需要經過許多中間步驟,包含預處理、編譯、匯編和連接。這些過程實際上是由不同的程序負責完成的。大多數情況下 GCC 可以為 …

Linux與時間相關的結構體及相關用法

1. Linux下與時間有關的結構體 struct timeval { int tv_sec; int tv_usec; }; 其中tv_sec是由凌晨開始算起的秒數&#xff0c;tv_usec則是微秒(10E-6 second)。 struct timezone { …

算法(3)-數據結構-數組和字符串

leetcode-explore-learn-數據結構-數據結構-數組和字符串1. 一維數組1.0 概況1.1 尋找數組的中心索引1.2 搜索插入位置1.3 合并區間1.4 至少是其他數字兩倍大的最大數1.5 加一2. 二維數組2.1旋轉矩陣本系列博文為leetcode-explore-learn子欄目學習筆記&#xff0c;如有不詳之處…

redis的入門/原理/實戰大總結

入門 Redis是一款基于鍵值對的NoSQL數據庫&#xff0c;它的值支持多種數據結構&#xff1a; 字符串(strings)、哈希(hashes)、列表(lists)、集合(sets)、有序集合(sorted sets)等。 ? Redis將所有的數據都存放在內存中&#xff0c;所以它的讀寫性能十分驚人&#xff0c;用作數…