最小二乘法(Least squares)的前世今生

如果你是開始進入機器學習的新手,你的第一節演算法課基本可以肯定:就是最小二乘法。如果你是機器學習的老鳥,那你一定很清楚最小二乘法在機器學習中的地位意味著什麼。

老納既然立志成為一名AI大時代的苦行僧,那麼首要修行的第一門功課,就是最小二乘法!最小二乘法如此重要,這還要從它的前世今生講起。

那是距老納所處的時代的250多年前的德意志王國,有一位名叫約翰·提丟斯(Johann Daniel Titius)的中學教師,他發現了這樣一組數列:0﹐3﹐6 ﹐12﹐24﹐48﹐96﹐192……然後將每個數加上4﹐再除以10﹐就可以近似地得到以天文單位為表示的各個行星同太陽的平均距離。根據提丟斯的推理:

水星到太陽的距離為(0+4) /10=0.4

金星到太陽的距離為(3+4) /10=0.7

地球到太陽的距離為(6+4) /10=1.0

火星到太陽的距離為(12+4)/10=1.6

木星到太陽的距離為(48+4)/10=5.2

土星到太陽的距離為(96+4)/10=10

要知道以250多年的人類科技,在太陽系裡也僅僅只發現了5顆行星:水星、金星、火星、木星、土星,而它們與太陽的距離居然都吻合上了,意不意外?神不神奇?

但是按這個數列排列,在28這個數字上,應該會有一顆行星存在,這裡我們暫且把它稱為行星x,它到太陽的距離應該是:

行星x到太陽的距離為(24+4)/10=2.8

可是在當時,從來沒有人在2.8天文單位的距離處發現這顆行星x,那時的觀星者都振奮了,都想成為第一個發現這個行星x的人,好幾年過去了,這顆謎一般的行星x就沒有被人發現過,反倒是在這個尋找行星x的過程中,太陽系裡另一顆新的行星被找到了:

天王星到太陽的距離為(192+4)/10=19.6

約翰·提丟斯提出行星數列推論後的近30年里,神秘的行星x一直不曾露面,人們都漸漸要忘記這個神秘的行星x時,在1801年元旦,亞平寧半島上,有一位名叫朱賽普·皮亞齊的觀星者,觀察到在白羊座(Aries)附近有光度八等的星移動,這顆小行星在天空出現了41天,掃過八度角之後,就在太陽的光芒下沒了蹤影。當時天文學家無法確定這顆新星是彗星還是行星,必須繼續觀察才能判決,但是皮亞齊只能觀察到它9度的軌道,再後來,它便隱身到太陽後面去了。因此無法知道它的軌道,也無法判定它是行星或彗星。但是皮亞齊堅持認為這可能就是那個一直沒有發現的神秘的行星x。

得而復失的行星x的行蹤,引起了200多年前科學界的關注,也引起了一位德意志青年才俊的注意。這位年輕人就是本文中的主角,未來將與阿基米德,牛頓並稱為世界三大數學家的:卡爾·弗里德里希·高斯。高斯自己獨創了通過前人的觀測結果,就可以來計算星球軌道的方法。根據皮亞齊有限的幾次觀測結果,高斯推斷出了這顆神秘的行星x的運行軌跡。1801年12月31日夜,德國觀星者奧博斯果然在高斯預言的時間裡,用望遠鏡對準了這片天空。不出所料,這顆神秘的行星x,再一次奇蹟般地出現了!

今天,我們都知道這顆神秘的行星x就是穀神星。我們也應該知道,高斯發明的預測穀神星的方法就是本文所說的最小二乘法。讓我們跨越200多年的歲月,重新領略最小二乘法的魅力吧。

高斯的最小二乘法究竟是如何根據觀測數據預測到了穀神星的軌跡呢?老納來闡述下最小二乘法的演算法原理吧。

假設老納所處的宇宙里,有顆不為人知的行星α,它的坐標記為(x,y),老納窮盡洪荒之力,一共觀測到了4次α,並分別記錄了每次α所處的坐標位置,分別是(1,6)、(2,5)、(3,7)、(4,10),老納想,這幾個坐標看起來都有一些不為人知的關係,那能不能找到一個線性函數能貫穿這幾個坐標呢?

老納假設這條線性函數為:

,即找出在某種「最佳情況」下,能夠大致符合如下超定性線性方程組的β1和β2:

老納試著用最小二乘法,解一下上面的超定線性方程。先說明下最小二乘法的定義:

最小二乘法:是通過最小化誤差的平方和尋找數據的最佳函數匹配的方法。也就是說求得未知的數據,並使得求得的數據與實際數據之間的誤差的平方和(殘差平方和)最小。

殘差:觀測值與模型提供的擬合值之間的差距

根據上面的定義:老納重新整理計算式:

要使得殘差平方和最小,那就是要讓最小,因為殘差平方和恆大於等於0,根據偏導數的理論:只要足夠偏離的話,那函數結果肯定是越來越大的,因此在偏導數為0時取到的函數值是最小值,我們可以通過對分別計算β1和β2的偏導數為0的方法,求得的最小值

計算是很苦逼的事情,老納用筆計算了下:

最後的整理的式子是,下面我們對β1和β2分別來求導吧。

求導的過程就比較簡單了,老納在這裡就不贅述了,直接看結果:

好吧,現在是個2元一次方程了,計算很簡單吧:β1=3.5,β2=1.4

本文開頭假設的行星α的坐標函數就已經被老納利用最小二乘法求出來了:y = 3.5+ 1.4x,但是,這條直線是否能最接近行星α的坐標值呢?老納下面就用matplotlib繪圖看看:

看起來,老納求出的這條線性回歸函數確實非常接近行星α的坐標值,應該沒有問題。(最小二乘法怎麼會有問題呢?)

我們跨越了250年,利用最小二乘法,重新模擬了當年高斯大神尋找穀神星的過程。希望大家在這次的時空穿越之旅,能感受到數學和機器學習的無限魅力。

ps:最小二乘法不僅能用來計算線性回歸函數的最優化問題,也可以用來計算非線性回歸函數的最優化問題。但是非線性回歸函數就無法如本文這樣,直接利用偏導數等於0的便利方式來求的最優解。


法國科學家勒讓德於1806年獨立發明「最小二乘法」,但因不為世人所知而默默無聞,淚目。


【本文版權歸「數據江湖」和雷歐納什@老納 共同所有,未經授權,請勿轉載】

老納深知人工智慧學習不易,路艱途遠,山高水長,這裡是人工智慧自學群:692626531,老納願結識更多真正愛好人工智慧演算法的朋友,互相交流。

老納的個人微信號:leoanrd_tia 歡迎大家騷擾。

老納的小站:數據江湖


推薦閱讀:

物聯網新變革,AI 邊緣計算不再是夢
常見的深度學習模型--卷積神經網路概述
未來政治制度是一個「演算法」制度
支持向量機(SVM)——SMO演算法

TAG:人工智慧演算法 | 機器學習 |