我正在尝试使用DBSCAN sklearn实现进行异常检测。它适用于小型数据集(500 x 6)。但是,当我尝试使用大型数据集(180000 x 24)时,它会遇到内存问题。我能做些什么来克服这个问题吗?
public function search($params)
{
$query = ContentViewLog::find();
$dataProvider = new ActiveDataProvider([
'query' => $query,
]);
$this->load($params);
if (!$this->validate()) {
// uncomment the following line if you do not want to return any records when validation fails
// $query->where('0=1');
return $dataProvider;
}
$query->andFilterWhere([
'subscriber_id' => $this->subscriber_id,
'type' => $this->type,
'site_id' => $this->site_id,
]);
$query->groupBy("content_id");
$query->orderBy("id desc");
return $dataProvider;
}
答案 0 :(得分:2)
根据您正在处理的问题类型,可以在DBSCAN构造函数中使用此参数:
leaf_size
:int,optional(默认值= 30)
叶子大小传递给BallTree或cKDTree。这可能会影响构造和查询的速度,以及存储树所需的内存。最佳值取决于问题的性质。
如果这不符合您的需求,此问题已经解决here,您可以尝试使用ELKI的DBSCAN实施。