思考與改進(KNN演算法)

2021-07-25 12:57:20 字數 1107 閱讀 2988

思考與改進

**題目:k-nearestneighbors on road networks: a journey in experimentation and in-memoryimplementation

一、主要內容

k nearest neighbor問題是機器學習中的最經典、最簡單,同時也相當重要的基礎問題之一,其相關領域的演算法很多。十分有趣的是,實際應用中效果較好的大多是那些思想簡單,正確性很明顯的演算法。這也說明了演算法簡明性的重要意義。

本人通過閱讀相關資料對knn問題的一些演算法有了一定了解,在此提出一些自己的想法和探索。

二、可能的改進

1.新的預處理方式

以上預處理保證了ier演算法中的候選解集合一定包含優化解,避免了ier演算法的最差情況;畫圓可以理解為處理與目標節點q歐氏距離小於一定值的頂點,這點處理起來也很快捷方便;最差情況下每次加入解集合乙個頂點,需要畫k次圓,但是通過調整每次畫圓的半徑大小可以避免這種情況,甚至可以引入二分法不斷放大和縮小圓的半徑大小,來求解。

2.針對複雜街區的對策

如果實際問題抽象出的圖形包含複雜街區,則頂點與頂點之間的距離將無法再使用歐式距離來準確衡量,很多基於歐式距離的演算法將失效。此時可以將圖抽象成點陣,只在同一行或同一列的點之間連線(如果存在傾斜的道路,將這樣的線上的點相連)。同時為了避免邊過於稠密,可以設定抽象的中間點,將所有共線的點連在抽象點上,抽象點之間連線。此時的圖形再使用優先佇列優化過的ine演算法計算時,效果將事半功倍。

以上處理解決了複雜街區問題,並利用中間點去除了圖中很多冗餘的邊,使得優先佇列中重複入隊出隊的頂點數量大大下降,因而有較好的效果。

3.演算法的綜合應用

簡單的演算法經常會有意想不到的效果。ine演算法本身針對於資料規模較小的問題具有良好的時空複雜度,所以可以對輸入資料規模進行初步判斷來決定是否使用ine演算法。此外,針對特殊的稀疏圖,可以引用disbrw演算法,充分發揮優先佇列的優化作用。而大規模資料可以使用穩定的g-tree演算法,同時針對資料分布選擇不同的雜湊表。

測試之道思考與改進(一)

疫情期間,禁足家中,百無聊賴時,也會想想自己的工作 測試,目前是什麼樣的?處於什麼樣的困境?該向何處發展?會不會出現中年危機?1 不可否認,測試在國內的發展屬於整個it行業中的末梢而非翹楚,同樣不容置疑的是測試在發展 2 測試的規模 專業程度 公司中的地位,受制於公司的規模 產品的成熟度,你不能去要...

KNN演算法原理與實現

knn k nearest neighbors 演算法不需要訓練過程,直接利用樣本之間的距離進行分類。演算法的基本過程是 給定乙個測試樣例,分別計算它與訓練集中所有樣本之間的距離,選取距離最小的k個訓練樣本對測試樣例的類別進行投票,最後將得票最多 在k個樣本中最多的類別 作為測試樣例的 類別。需要注...

問題與不足(KNN演算法)

問題與不足 題目 k nearestneighbors on road networks a journey in experimentation and in memoryimplementation 一 主要內容 該 主要研究了k nearest neighbor演算法在主存中的應用,介紹了 五...