问题标签 [machine-learning]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
algorithm - 算法根据其他用户的喜好来寻找用户喜欢的东西
我正在考虑编写一个应用程序来根据家庭成员的喜好对 HTPC 中的电影进行分类。
我不知道统计或人工智能,但这里的东西看起来很有趣。我不知道从哪里开始做。
这是我想要完成的事情:
根据每个用户的喜好组成一组样本,分别对每个样本属性进行评分。例如,也许一个用户非常喜欢西方电影,所以西方类型对该用户来说会带来更多的权重(对于其他属性,如演员、导演等)。
用户可以根据其他用户的喜好获得建议。例如,如果用户 A 和 B 都喜欢 Spielberg(用户之间的联系),并且用户 B 喜欢 Batman Begins,但用户 A 讨厌 Katie Holmes,则相应地为用户 A 权衡电影(同样,每个属性单独,例如,也许用户 A 不太喜欢动作片,所以稍微降低评分,因为凯蒂·霍姆斯不是主要明星,所以不要像其他属性一样考虑这一点)。
基本上,将用户 A 的集合与用户 B 的集合进行比较,然后得出用户 A 的评分。
我对如何实现这个有一个粗略的想法,但我敢肯定一些聪明的人已经想到了一个更好的解决方案,所以......有什么建议吗?
实际上,经过快速研究,贝叶斯过滤器似乎可以工作。如果是这样,这会是更好的方法吗?会不会像“规范化”电影数据、为每个用户训练分类器、然后对每部电影进行分类一样简单?
如果您的建议包括一些令人费解的概念(我在这些主题方面没有经验,特别是在 AI 方面),如果您还包括一些基础知识列表供我在深入研究肉类之前进行研究,我将不胜感激。
谢谢!
machine-learning - 如何测试概率估计器的质量?
我创建了一个启发式(ANN,但这并不重要)来估计事件的概率(体育比赛的结果,但这也不重要)。给定一些输入,这个启发式告诉我事件的概率是多少。类似于:鉴于这些输入,B 队有 65% 的机会获胜。
我有大量输入数据,现在我得到了结果(以前玩过的游戏)。我可以使用哪个公式/指标来限定我的估算器的准确性。
我看到的问题是,如果估计者说事件有 20% 的概率并且事件确实发生了。我无法判断我的估算器是对还是错。也许这是错误的,事件的可能性更大。也许它是正确的,事件发生的几率大约为 20%,并且确实发生了。也许是错的,事件发生的机会非常低,比如说千分之一,但这次恰好发生了。
幸运的是,我有很多这些实际测试数据,所以可能有一种方法可以使用它们来限定我的启发式方法。
有人有想法吗?
c# - C# 中的机器学习库
C# 中是否有任何机器学习库?我追求类似WEKA的东西。谢谢你。
algorithm - 求解最近邻的最佳性能关键算法
我们有一个 x,y 对的列表。每对代表二维空间上的一个点。我想从这个列表中找到离特定点 xq,yq 最近的点。这个问题的最佳性能关键算法是什么?Lisp of points 不会改变;这意味着我不需要执行插入和删除。我只想找到这个集合中目标 xq,yq 点的最近邻居。
编辑1:谢谢大家!正如 Stephan202 猜对的那样,我想反复这样做;像一个函数。列表不一定是排序的(实际上我不明白它是如何排序的?就像一个具有 2 列 a 和 y 的主键的表?如果这有帮助,那么我会对其进行排序)。
我会根据列表构造一次数据结构,然后我会在函数中使用这个生成的数据结构(如果这个过程本身是相关的)。
谢谢雅各布;KD-Tree 数据结构似乎是一个很好的答案候选者(我觉得确实如此。当我得到一些相关结果时,我会更新)。
编辑2:我发现,这个问题被命名为“最近的邻居”!
编辑 3:第一个标题是“In Search of an Algorithm (for Spatial-Querying and Spatial-Indexing) (Nearest Neighbor)”;我选择了一个新标题:“解决最近邻的最佳性能关键算法”。由于我不想对我的初始数据执行插入和删除操作,而我只想要离它们最近的一个到一个新点(不会被插入),我选择(当前)在 KD-Trees 上工作。谢谢大家!
matlab - 如何在 Matlab newff 方法中设置输出大小
摘要: 我正在尝试根据身体部位之间的角度对一些图像进行分类。
我假设人体由 10 个部分组成(作为矩形)并找到每个部分的中心并通过参考躯干计算每个部分的角度。我有三个动作类别:手波-步行-跑步。我的目标是找出哪些测试图像属于哪个动作类别。
事实: TrainSet:1057x10 特征集,1057 代表图像数量。测试集:821x10
我希望我的输出是 3x1 矩阵,每行显示动作类别的分类百分比。第 1 行:手挥 第 2 行:步行 第 3 行:跑步
代码:
问题: 我正在使用 Matlab newff 方法。但我的输出始终是 Nx10 矩阵而不是 3x1。我的输入集应分为 3 个类,但它们分为 10 个类。
谢谢
algorithm - 在社交网络中对朋友进行分类
我面临以下问题:
假设你是一个社交网络用户,因此有一个朋友列表F(u)。分区是函数F->G,其中G是一组组,例如高中、大学、工作等。
我需要想出算法来划分F:
- 输入是F以及F中每个f的F (f)(每个u的朋友的朋友列表)。
- 在运行期间,允许算法向u提问(例如,“对于某些特定用户v的最佳组是什么?”)。
- 问题的数量应保持在最低限度(什么是最低限度并不是一个明确的数字,但我会说 5% 的朋友数量似乎是正确的)。
显然,生成的分区不会是最佳的,但它应该可以作为以后改进的起点。
任何想法将不胜感激
编辑:不,这不是家庭作业。我相信家庭作业会有更明确的要求和目标功能。无论如何,不,这实际上是我面临的现实世界问题。
我也可能已经简化了一点,但实际上用户可能是许多组的一部分(所以它更像是F->P(G),其中P(G)是权力组,如果G),所以更好的算法将能够做到这一点。
matlab - MATLAB:自组织图 (SOM) 聚类
我正在尝试根据身体部位之间的角度对一些图像进行聚类。
从每张图像中提取的特征是:
因此输入数据是一个大小为 1057x10 的矩阵,其中 1057 代表图像数量,10 代表身体部位与躯干的角度。类似地,测试集是 821x10 矩阵。
我希望输入数据中的所有行都用 88 个集群进行聚类。那我就用这些集群来查找TestData属于哪些集群呢?
在之前的工作中,我使用了非常简单的 K-Means 聚类。我们只是要求 K-Means 将数据聚类到 88 个聚类中。并实现另一种方法,计算测试数据中每一行与每个集群中心之间的距离,然后选择最小值。这是相应输入数据行的集群。
我有两个问题:
是否可以在 MATLAB 中使用SOM来做到这一点?AFAIK SOM 用于视觉聚类。但是我需要知道每个集群的实际类,以便以后可以通过计算它属于哪个集群来标记我的测试数据。
你有更好的解决方案吗?
statistics - 如何根据少量证据有效地估计概率?
几个月来我一直试图找到这个问题的答案(用于机器学习应用程序),这似乎不是一个非常困难的问题,但我是一名软件工程师,数学从来都不是我的强项之一。
这是场景:
我有一个(可能)重量不均匀的硬币,我想弄清楚它出现正面的概率。我知道来自同一个盒子的硬币的平均概率为p,我也知道这些概率的标准差(称之为s)。
(如果除均值和标准差之外的其他硬币概率的其他摘要属性有用,我可能也可以得到它们。)
我掷硬币n次,结果正面h次。
天真的方法是概率只是h/n - 但如果 n 很小,这不太可能是准确的。
是否有一种计算有效的方法(即不涉及非常大或非常小的数字)来考虑p和s以得出更准确的概率估计,即使n很小?
如果任何答案可以使用伪代码而不是数学符号,我将不胜感激,因为我发现大多数数学符号都是难以理解的;-)
其他答案: SO 上还有其他一些类似的答案,但提供的答案并不令人满意。例如,这在计算上效率不高,因为它很快涉及到比双精度浮点数更小的数字。而这个结果是不正确的。
c - 感知器学习算法不收敛到 0
这是我在 ANSI C 中的感知器实现:
我正在使用的训练集:数据集
我已经删除了所有不相关的代码。基本上它现在所做的就是读取test1.txt
文件并将值从其中加载到三个数组中:x
, y
, outputs
.
然后有一个感知器学习算法,由于某种原因,它没有收敛到 0(globalError
应该收敛到 0),因此我得到了一个无限的 do while 循环。
当我使用较小的训练集(如 5 分)时,效果很好。任何想法可能是问题所在?
我写的这个算法与这个C# Perceptron 算法非常相似:
编辑:
这是一个较小训练集的示例: