使用Nelder-Mead方法选择参数

161 views
Skip to first unread message

Zero

unread,
May 2, 2012, 11:36:04 AM5/2/12
to Resys
在《Netflix Prize 中的协同过滤算法》这篇论文中,说可以用Nelder-Mead算法确定参数的值。但是我Google了下
Nelder-Mead算法,只找到求函数极值的例子,找不到用来确定参数的例子。
对此,我做以下猜测:
随便给待训练变量一个值,然后用这个方法确定参数。
不知这样做对吗?

注:这里的参数特指learning algorithm中需要预先设定的参数

Jinlong Wu

unread,
May 9, 2012, 10:42:58 AM5/9/12
to re...@googlegroups.com
NM一般用来确定超参数的取值。比如你用KMeans,首先需要给定一个聚类数量K。如果你不知道K取什么值最好,最简单的方法就是撒网,比如尝试K=1到10,然后选一个结果最好的K。NM其实主要是简化了这种搜索过程,它可以少算几次,定位出一个好的K。当然,就像你说的,NM是求函数极值的,所以需要给定一个目标函数。

NM一般只适用确定少量超参数的取值,它的计算量还是挺大的。初始的取值往往是一些边界值,比如之前的例子,你可以给定K=1和K=10作为初始值。

Jinlong Wu(吴金龙) @ 世纪佳缘
----------------------------------------------------------------------
Old Homepage: http://dsec.pku.edu.cn/~jinlong




2012/5/2 Zero <qkhh...@gmail.com>

Zero

unread,
May 19, 2012, 12:16:29 PM5/19/12
to Resys
能给出一个具体的使用例子吗?我没搜到这方面的例子

Quan Yuan

unread,
May 19, 2012, 10:42:19 PM5/19/12
to re...@googlegroups.com
Neader-Mead和模拟退火都常用来调参,在很多情况下,如矩阵分解时,调参的目标就是找到函数的最小值. Koren还实现了个并行版的来快速调参. 比如对SVD++模型中的regulization系数lambda, learning rate等,都可以一次性的交给NM去调。尤其是有些算法,如SocialMF等,人手工很难调出来,但NM都能有个不错的结果.

NM 基本思想:  http://www.slideshare.net/AshishKhetan/nelder-mead-search-algorithm 

2012/5/20 Zero <qkhh...@gmail.com>
能给出一个具体的使用例子吗?我没搜到这方面的例子




Zero

unread,
May 21, 2012, 9:13:40 AM5/21/12
to Resys
感谢LS的资料。
嘛,果然是直接将算法本身作目标函数来用。

On May 20, 10:42 am, Quan Yuan <quanyuan...@gmail.com> wrote:
> Neader-Mead和模拟退火都常用来调参,在很多情况下,如矩阵分解时,调参的目标就是找到函数的最小值. Koren还实现了个并行版的来快速调参.
> 比如对SVD++模型中的regulization系数lambda, learning
> rate等,都可以一次性的交给NM去调。尤其是有些算法,如SocialMF等,人手工很难调出来,但NM都能有个不错的结果.
>
> NM 基本思想:http://www.slideshare.net/AshishKhetan/nelder-mead-search-algorithm
> NM java code: http://www.ee.ucl.ac.uk/~mflanaga/java/Minimisation.html
>

> 2012/5/20 Zero <qkhhdn...@gmail.com>
>
>
>
>
>
>
>
> > 能给出一个具体的使用例子吗?我没搜到这方面的例子

Reply all
Reply to author
Forward
0 new messages