SVM 支持向量機 in KDB+
本來這篇是想匯總Machine Learning在KDB+中的應用,但是時間所限就選了SVM中相對簡單的實現。其他用Q語言已實現的ML方法還有kmeans,neural network,LSTM。KDB+中也可以使用embedPy調用Python了。
參考的例子是Python3中的SVM實現,用Q寫了一遍(因為相對簡單,不會打擾過年)。用了隨機梯度下降和Hinge loss。計算結果與參考例子基本一致,迭代次數會有些許影響。
x_:(-2 4 -1f;4 1 -1f;1 6 -1f;2 4 -1f;6 2 -1f)y_:(-1f;-1f;1f;1f;1f)/ Stochastic gradient descent algorithm(SGD)/ Use hinge loss function/ Objective function/ if yi*?xi,w?<1 w=w+η*(yi*xi?2λw) else w=w+η*(?2λw)objf:{[X;Y;epoch;eta;w] i:0; do[count X;$[1 > last Y[i] * X[i] mmu w;w:w + eta * ((X[i] * Y[i]) + -2 * w * 1f % epoch);w:w + eta * -2 * w * 1f % epoch];i+:1]; w}svm_sgd:{[X;Y] w:(count X[0];1)#0f; eta:1f; epochs:50000; epoch:1; do[epochs;w:objf[X;Y;epoch;eta;w];epoch+:1]; w}res:svm_sgd[x_;y_]show res
推薦GUI for Q:
QInsightPad;
qStudio (Timestored公司),免費版有限制;
Webstudio for kdb+;
祝各位新年快樂!
推薦閱讀:
※Kaggle 實戰之數字識別 -- 新手入門SVM分類演算法(Python)
※想研究下SVM,有什麼好的文章或者經驗之談可以分享下不?
※KNN 與 SVM 的區別是什麼?
※採用LibSVM進行分類
※我對於SVM的理解,以及Python實現
TAG:SVM |