白話空間統計番外篇 中位數中心演算法

2021-07-04 16:21:12 字數 3313 閱讀 8181

昨天在介紹中位數中心演算法的時候,挖了個巨大的坑,結果導致老夫一夜沒有睡好,腦子裡面飛來飛去全部都是各種選擇和迭代演算法,今天終於下定決心把這個坑給填上。

其實我一直是不願意填演算法坑的……主要是自己的數學水平很一般,很容易出現填坑不成自己反被埋的情況,但是這個坑不填又不行,所以在填坑之前說明:這個僅是蝦神我自己的理解,不代表原文(限於能力問題,數學**確實不怎麼能讀透),如果有疑惑或者錯誤,請自行查閱原始**,蝦神只負責科普。

地理上有若干個點,現在需要尋找乙個到所有點距離總和最小的點,是幾何學和區域學研究中的乙個非常重要和著名的問題,但是最早由乙個經濟學家阿爾弗雷德

·韋伯(德語:alfred weber,2023年6月30日-2023年5月2日

,如下圖

)提出,所以也稱之為「韋伯問題(the weberproblem)」。這位韋伯先生並非是乙個數學家,而是一位經濟學家、社會學家和文化理論家。阿爾弗雷德

·韋伯是馬克斯

·韋伯(組織理論之父)

的弟弟。

他創立了工業區位理論,深刻影響了現代經濟地理學的發展。

在講韋伯問題之前,要涉及到數學裡面的乙個重大的問題,就是所謂的費馬點(

fermat point)

的問題。費馬點是

17世紀的乙個法國律師皮耶

·德·費馬(pierrede fermat

,如下圖

)提出來的,這位專職律師被稱為「業餘數學之王」,在數學的神殿裡面,有他一張王座鎮壓諸天……費馬最後定理在中國習慣稱為費馬大定理,西方數學界原名「最後」的意思是:其它猜想都證實了,這是最後乙個。(

ps:貌似不務正業的人都很厲害,國外有賣縫紉機的托馬斯

.沃森(

ibm的創始人),國內有教英語的馬雲……)

費馬點是啥東西呢?

費馬點,指的是,在三角形內部,有乙個點,這個點到三角形三個頂點的距離之和最短,如下圖:

如果三角形的三個內角都小於

120度,如上圖:三角形

abc內部的乙個點

d,就是離這個三角形三個頂點距離總和最近的乙個點,從這個點向三角形三個頂點連線,得出的三個角正好整分費馬點所在的周角,即均為

120度。所以費馬點也稱為三角形的等角中心。

那麼如果三角形有乙個內角大於等於

120度,那麼這個鈍角的頂點就是費馬點。

要找到這個費馬點,也非常的容易,根本不需要我們去迭代計算(數學是一種追求完美的學科),只需要將三角形的三條邊都做乙個等邊三角形,然後用這個等邊三角形做乙個外接圓,三個外接圓的交點,正好就是這個費馬點。(等邊三角形做外接圓的方法就不詳說了,太簡單了)。

四邊形的費馬點就更容易了,凸四邊形,費馬點就是對角線交點;凹四邊形,費馬點就是凹點。

我們知道,三角形和四邊形這種在數學上非常特殊的情況,在現實生活在確實不多,特別是在多點之間計算費馬點的話。

所以複雜多邊形內的費馬點計算,也一直都是數學界津津樂道的話題。

因為複雜多邊形內的費馬點沒有公式來實現,所以到現在為止想通過乙個公式就計算出費馬點是不可能的事情。當然,初等數論裡面,對正多邊形提出了一些方法,例如分割成多個三角形這種方法,但是僅適用於正多邊形。

而且費馬點的尋找是不涉及到任何權重的,所以算出來的結果是完全幾何結果,幾何圖形的費馬點完全是在圖形內部。

韋伯問題在費馬點的基礎上擴充套件了權重概念,那麼帶來的乙個問題就是:有些點的權重,被設定為了負數,結果就是加權計算的時候,會讓這個中位數中心可能跳出幾何範圍之外。

例如:還是倉庫運輸的問題,我們要計算中位數中心,那麼如果有乙個倉庫不但可以存放中轉貨物,還提供了加油、修車、保養、司機休息的服務……那麼這個倉庫的權重計算可能就會被設定為負數,哪怕他的距離可能很大,但是所有來到這個倉庫的車輛,都會直接忽略距離因素而達到更優化的效果。

1962

年,普林斯頓大學的哈羅德

.威廉.庫恩和羅伯特.e.庫倫

提出了迭代最小二乘法解決韋伯問題的方案。具體的演算法如下:

首先確定起算點,起算點的確定非常簡單,kuhn和kuenne選擇了最簡單的一種起算方法,就是幾何平均數,用所有點的平均中心作為起算點。

接下去就是確定迭代優化方案了。迭代的優化方案主要就是對候選點的選擇,有如下幾個關鍵:

1、以起算點為參照,在什麼地方選擇候選點(

方向)。 2

、候選點選在起算點多遠的地方比較好(

距離)。

先講方向的問題,理論上來說,只需要向任意乙個不同的方向移動,就可以了。隨便向任意方向移動,都會產生不同的距離總和。

生成新的距離總和之後,與原來的起算點的距離總和進行對比,如果大於原來的距離總和,就說明這個候選點是錯誤的,丟棄,重新尋找。如果小於原來的距離總和,說明比起算點要優化,將他設為新的起算點,也就是候選點,然後以這個新的起算點,迭代進行選擇尋找。

然後再講講移動多少距離合適。

kuhn和kuenne在他們的**裡面,設定了一種很實用的距離公式,就是所謂的weiszfeld

演算法,這是一種重複加權最小二乘法,如下所示:

第一次選擇候選點的距離的時候,直接採用所有的點的平均距離y作為移動距離,移動完成之後計算,並且把這個y帶入到公式中,求解出下一次需要移動的距離

根據我們迭代的次數的增加,會發現資料會逐漸的收斂。最後可以計算出最優的候選點,作為最後的位置。

當然,如果有權重的話,在每個點上面,還需要加上權重進行計算,如下公式:

其中wi

就是每個點的權重。

理論上,這個優化可以無限的接近無窮大(與最優點的距離無限接近於

0),但是無論是計算結果還是計算機能表示的結果,都是有乙個極限的,在實際的計算中,這個極限就是我們可以接受的精度。

一般來說,在

gis裡面,就是你建立座標系和要素圖層的

時候指定的精度,就是預設接受的

精度值。

當然,裡面還有很多很多其他的東西,比如各種條件什麼的,我這裡就不一一說明了,有興趣的同學,請參考如下文章:

白話空間統計十九 熱點分析(中)

在前面的話 白話空間統計系列還繼續更新,因為這段時間在對 使用r語言進行空間統計 系列進行翻譯翻譯和編寫,所以白話空間統計系列和使用r語言進行空間統計可能會交替出現,給大家的閱讀帶來的不便,請大家諒解 其實蝦神想說的心裡話是 你們需要的去翻蝦神的歷史文章,複習一下前面的內容吧!喔呵呵呵呵!前文再續,...

演算法導論 9 中位數和順序統計量

乙個中位數是它所屬集合的中點元素 9.1.1 在乙個有n個元素的集合中,需要做多少次比較才能確定其最小元素呢 9.1.2 同時找到最小值和最大值 實現 同時求解最大值和最小值 123 4567 891011 1213 1415 1617 1819 2021 2223 2425 26 def mini...

演算法導論筆記 09中位數和順序統計量

1 n個元素組成的集合,第 i個順序統計量,就是該集合中第 i小的元素。所以,集合中的最小值就是第1個順序統計量,最大值就是第n個順序統計量。中位數是所屬集合的 中點元素 當n是奇數的時候,中位數唯一,位於 n 1 2處。如果n是偶數,中位數有兩個,分別位於n 2和 n 2 1。2 選擇問題,就是選...