數據科學---優化+matlab中安裝cvx,mosek,gurobi
文章主要內容是:
1, 在matlab中安裝解凸優化的軟體cvx,mosek, gurobi以及使用幫助
2, 優化方面的資料
3,其他演算法,如隨機演算法,在線演算法等
4. 其他工具:git
一. Win10環境下(或mac) 在matlab2017a中安裝 cvx 與mosek, gurobi流程
- matlab2017a的下載和安裝: 見北大軟體下載中心 ,如圖所示
入門可以看matlab文檔( 商業化軟體確實服務很好!)。
一些高級的用法:
有哪些讓人相見恨晚的 MATLAB 命令?波特:[MATLAB R2017a 搶鮮報道] : 自動駕駛工具箱(1)2. matlab_cvx和gurobi :
Matlab中凸優化工具包CVX的安裝、註冊與使用 - CSDN博客
http://blog.csdn.net/u012705410/article/details/78196927 (以mac為例)
http://blog.csdn.net/u012705410/article/details/78196927
3. mosek 的安裝:注意!mosek安裝系統定義在program file文件里,最好不要自己挪到其他文件夾。似乎第二次再打開matlab時mosek需要重新 addpath C:Program FilesMosek8 oolbox
2014a
MOSEK Optimization Toolbox for MATLAB 8.1.0.38
MOSEK Installation Guide 8.0.0.94
總之,注意讀收到的郵件說明就好。
安裝成功後應該是這種樣子:
接下來可以用matlab程序測試一下,是一個稀疏優化的例子: 鏈接: https://pan.baidu.com/s/1jJ5HznS 密碼: zzwf
主程序是 Test_l1_regularized_problems.m文件,其他幾個(除othertest.m)是函數文件。 而othertest.m是另一個測試文件。
------貌似 mac 中 matlab2017b 安裝 cvx 會出現問題,如下圖:
解決方案可以是使用低版本的matlab。
cvx入門教程:
http://ee364a.stanford.edu/lectures/cvx_tutorial.pdfWhy isnt CVX accepting my model? READ THIS FIRST!
直接調mosek解問題:
17.1 Command Reference6.2 Linear Optimization最後特別提醒下,cvx工具箱只能解決特定形式的問題,如對於包含除號的目標函數,就無能為力了,即使你證明了這個OP是凸的,這時可以考慮使用fmincon函數。
二. 優化方面的資料:
book1: Boyd凸優化 Convex Optimization - Boyd and Vandenberghe
book2: Jorge Nocedal 和 Stephen Wright 的 《Numerical Optimization》
復旦大學吳立德老師講授數值優化,優酷上有公開課(鏈接:吳立德《數值優化》 - 播單 - 優酷視頻)
建議是先讀第二本書的無約束優化基礎,線搜索,牛頓法,共軛梯度法,擬牛頓法,約束優化理論。第一本書推薦只讀理論的部分。後續再補充第二本書的其他內容。book3: 進階 Optimization Theory and Methods - Nonlinear Programming | Wenyu Sun | Springer 書講得很全面,可以作為補充。最近我也在讀trust-region和least square problem部分。
survey1: Optimization Methods for Large-Scale Machine Learning (https://arxiv.org/pdf/1606.04838.pdf)
三. 零散演算法:
對Steepest Descent, Conjugate Gradient, Newtons Method, Quasi-newton (BFGS), l-BFGS演算法的python實現:stormmax/non-convex
Numerical Optimization: Understanding L-BFGS Hessian Free Optimizationpython的scipy optimization庫: SciPy v0.18.1 Reference Guide
matlab 中 的libsvm庫: LIBSVM -- A Library for Support Vector Machines
***************************** 2018.4.20
最近在mnist,covertype數據集上實現了logistic回歸,用的是Adagrad, Adam, 在線學習演算法FTRL, 隨機方差遞減的方法SVRG, 以及SVRG-BB, 感覺公司對在線學習演算法還比較關注。代碼和文檔放到github上:Terrywjx/stochastic_optimization
關於FTRL的一些參考資料:
1. 《Online Learning and Online Convex Optimization1》section 2.2,2.3
URL: url{http://www.cs.huji.ac.il/~shais/papers/OLsurvey.pdf}
3. 原始論文
URL: url{https://www.eecs.tufts.edu/~dsculley/papers/ad-click-prediction.pdf}
2. from 美團點評技術團隊
URL: url{Online Learning演算法理論與實踐}
4. 其他:
URL: url{http://www.datakit.cn/blog/2016/05/11/ftrl.html}
5. url: 麵包君:數據挖掘系列篇(8):在線機器學習FTRL(Follow-the-regularized-Leader)演算法介紹
##自己的一點思考:由於subgradient descent 不是單調下降,而且convergence rate 是 O(1/sqrt(t)),拿壓縮感知問題舉例,OGD並不能很好的產生稀疏解,因為兩個數做差基本不可能為0。所以需要proximal gradient,FTRL 這種能直接把一部分分量直接置為0的方法。當然,subgradient descent 配合 continuation trick也能產生不錯的稀疏解。##
FTRL 在處理非光滑正則化項的凸優化問題上性能非常出色。說到nonsmooth 凸優化問題,最近看到林宙辰老師的一個關於這類問題解決方法的一個非常系統性的概述,感覺非常棒,在這裡與大家分享。資料:鏈接: https://pan.baidu.com/s/1WGUki5gYheFkdhruzdKrzA 密碼: wrvq
優化問題在三個方面進行relax:
目標函數:MM演算法,proximal gradient,CCCP
約束:罰函數法,障礙函數法,ALM,linearized ALM
迭代過程:FISTA, SVRG, parallel
這樣一想,幾乎囊括了所有的凸優化的演算法。
##git 使用速查:上傳:上傳本地代碼及更新代碼到GitHub教程 - 張梨賢 - 博客園
刪除:一定要注意,刪除文件夾要使用-r 參數
git rm --cached -r useless
git commit -m "remove directory from remote repository"git push##
有時候雖然很辛苦,但還是想成為專業的人。----專業粽
作者介紹: 北京大學數據科學專業研究生,外號 湯圓,方向為機器學習,優化,強化學習等。
郵箱:Jinxin_Wang@pku.edu.cn 歡迎交流!
推薦閱讀:
※【學界/編碼】凸優化演算法 I: 內點法(interior point method)求解線性規劃問題
※凸優化筆記(1)Why凸優化以及幾個基本概念
※凸優化筆記(2)幾類標準問題以及Linear Programming簡介
※【學界】關於KKT條件的深入探討