概論
gap的**,是建立在乙個擬合函式上的。也有一些機器學習的味道。
總的gap函式 = 函式(時間,地區)
交通流量和時間有關,乙個地方的擁堵程度和時間有關係
不同的地區,各種設施配置不同。
天氣和時間有關。
gap函式 = 函式(交通擁擠度函式(時間,地區編號),poi函式(地區編號),天氣函式(時間))
這裡可以認為,乙個地方的打車人數,交通越堵,則打車的gap越大。天氣不好,打車的人則越多,gap也越大。設施越多的地方,打車的需求也越多,gap可能也越大。但是這一切都只是可能性。
(題外話,其實真實的情況也要考慮節假日的問題,在節假日的時候,gap可能會變大。當然這是乙個人文的考量了)
zhihu網友的演算法
利益不相關,不是參賽選手,不是滴滴工作人員,純粹覺得題目好玩。交通擁堵我的分析:
這個題目的目標是**,**的核心是發掘資訊,資訊才是消除不確定性的唯一途徑。資訊存在於乘客與司機的幾種行為模式,以及poi的不同功能型別。
乘客的行為基本上有三類模式,週期性的(每天上下班、每週去上補習班)、集中偶發性的(**會)和隨機性的(各類雜事)。司機的行為模式包括出車、收車、找活、趴活、午休。poi型別也可以分為週期性的(工作單位)、集中偶發性(電影院、體育館、演播大廳)、隨機性的(醫院、車站),當然每個poi的功能型別不是絕對的。
gap是用車需求和供給的差,那麼分別為需求和供給建立模型。
簡單說,乙個完整的打車需求包括出發地、目的地、時間。首先任意兩個poi之間都存在一條線路,每條線路的**量可以按照乘客的行為模式進行分解,這樣也就包含了時間因素。這樣最終就可以算出從每個poi出發的人數。由於資料只有方格的總數,這看起來是乙個隱馬爾科夫鏈。至於天氣則基本可以看成線路**量的乙個係數。
司機接單在全天大多數時間裡都是找活的狀態,也就是附近有單就搶,那麼某個方格某個時間片司機接單數應該是空車數量*乙個係數,空車數量=上乙個時間片到達的乘客數+其他司機漫無目的找活出入方格的淨值+趴活司機數(找活、趴活數應該和poi型別有關,這得問問老司機拉活的竅門),係數就是搶單成功率。
非專業人士,以上只是粗淺的想了一下,還有很多細節沒有考慮,拋磚引玉,達人莫笑!非專業人士,以上只是粗淺的想了一下,還有很多細節沒有考慮,拋磚引玉,達人莫笑!
交通擁堵函式:
這裡的交通擁堵函式是使用4個等級表示的。
在上文中 滴滴演算法大賽演算法解決過程 - 資料分析 提過了通過統計分析可以得知,lv1的路大約佔2/3強,估計lv4,lv3的路是變化的關鍵。
由於資料量非常龐大,所以這裡建議將中間的計算結果也放入資料庫中備用。
不支援放大功能,如果您想更好的檢視,也可以使用以下**獲得更好的閱讀體驗:
我們嘗試使用最小二分法擬合 lv4和 訂單總量
從圖中可以看到,大部分的點在乙個 y = ax+ b 的直線函式中。
(未去噪點)
a:4.67355309006603
b:18.931303546517
(去除1500以上的噪點)
a:1.08888907683687
b:192.700547917395
(這裡使用的是2016-01-01 #51 的資料)
#region 最小二乘法擬合
//////用最小二乘法擬合二元多次曲線
///例如y=ax+b
///其中multiline將返回a,b兩個引數。
///a對應multiline[1]
///b對應multiline[0]
//////已知點的x座標集合
///已知點的y座標集合
///已知點的個數
///方程的最高次數
public static double multiline(double arrx, double arry, int length, int dimension)//二元多次線性方程擬合曲線
guass[i, j] = sumarr(arrx, i, arry, 1, length);
}return computgauss(guass, n);
}private static double sumarr(double arr, int n, int length) //求陣列的元素的n次方的和
return s;
}private static double sumarr(double arr1, int n1, double arr2, int n2, int length)
return s;
}private static double computgauss(double[,] guass, int n)
}if (k != j)
}if (0 == max)
for (i = j + 1; i < n; i++)}}
//結束for (j=0;j= 0; i--)
x[i] = (guass[i, n] - s) / guass[i, i];
}return x;
}//返回值是函式的係數
#endregion
滴滴演算法大賽演算法解決過程 機器學習
按照前面文章的方法進行資料 完全不使用poi,天氣,交通情況的資料,可以達到0.43的成績。不過如果想要獲得更好的成績,簡單的 方法顯然無法滿足要求了。說可以使用gbdt的方法來進行資料 所以,我們先來聊聊gbdt演算法的一些基礎知識。熵熵 entropy 指的是體系的混亂的程度,它在控制論 概率論...
滴滴演算法大賽演算法解決過程 機器學習
按照前面文章的方法進行資料 完全不使用poi,天氣,交通情況的資料,可以達到0.43的成績。不過如果想要獲得更好的成績,簡單的 方法顯然無法滿足要求了。說可以使用gbdt的方法來進行資料 所以,我們先來聊聊gbdt演算法的一些基礎知識。熵熵 entropy 指的是體系的混亂的程度,它在控制論 概率論...
滴滴演算法大賽演算法解決過程 方案設計
上面兩篇文章講了一些分析情況,整個模型變得很不確定了 資料分析 擬合演算法 滴滴演算法大賽到底需要什麼樣子的答案?我一開始的想法是建立乙個模型,通過天氣,poi,交通擁堵的引數來推導出訂單數和gap數。但是通過現有的資料發現,這個模型很難建立。其實看一下題目,這是乙個 題 給定每個區域在時間片tj,...