#当前主机日志分析现状
一般主机系统有三种日志:系统日志、安全日志和应用程序日志。系统日志记录了操作系统组件产生的事件,包括系统组件操作、应用程序崩溃及数据丢失、驱动程序等;安全日志记录了各种类型的账户登录信息、服务信息、访问信息、策略变更信息、特权使用信息及进程追踪信息等;应用程序日志则记录了与应用程序运行相关的事件。
#关联分析技术
数据挖掘能够在海量数据中发现有价值的信息,从而为分析、判断、决策提供支持。关联分析是众多数据挖掘技术的
其中一种,运用该技术能够找到一些对主机行为性质进行正确判断的规则或模型。
常 用 的 关 联 分 析 算 法 有 Apriori、FP-Tree、Eclat、灰度关联法等。
##Apriori算法详解与实现
https://blog.csdn.net/qq_44753451/article/details/117814258
代码实现
import java.io.File;
import java.io.FileNotFoundException;
import java.util.*;
public class Apriori {
// 数据集
private static ArrayList<ArrayList> DATASET = new ArrayList<>();
// 待选集区域
private static HashMap<ArrayList, Double> PRE = new HashMap<>();
// 频繁集区域
private static HashMap<ArrayList, Double> LATER = new HashMap<>();
// 缓存项集支持度
private static HashMap<ArrayList, Double> CACHE = new HashMap<>();
// 提前算好加数单元
private static double ADD_UNIT;
// 最小支持度
private static double MIN_SUPPORT = 0.5;
// 最小置信度
private static double MIN_CONFIDENT = 0.8;
/**
* 加载数据
*
* @param filePath 文件路径
*/
private static void loadData(String filePath) {
Scanner scanner;
try {
scanner = new Scanner(new File(filePath));
while (scanner.hasNext()) {
DATASET.add(new ArrayList<>(Arrays.asList(scanner.nextLine().split(" "))));
}
scanner.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
// 单元加数
ADD_UNIT = 1.0 / DATASET.size();
}
/**
* 枝剪,过滤掉小于最小支持度的项集
*/
private static void pruning() {
LATER.clear();
// 先全加过来等待删除不满足最小支持度的项集
LATER.putAll(PRE);
// 删除少于最小支持度的元素
ArrayList<ArrayList<String>> deletedKeys = new ArrayList<>();
for (ArrayList<String> key : LATER.keySet()) {
if (LATER.get(key) < MIN_SUPPORT) {
deletedKeys.add(key);
}
}
for (ArrayList<String> key : deletedKeys) {
LATER.remove(key);
}
}
/**
* 加载数据并求得一项集
*/
private static void init() {
loadData("E:\\data_mining_lab\\src\\data\\test.txt