私は現在、機械学習には新しく、Machine Learningライブラリを使用して起こりうる異常について警告するプロジェクトに取り組んでいます。私はApache Sparkを使用する予定で、KMeansメソッドを使用してプロジェクトを解決することにしました。K-Meansアルゴリズムを使用して異常/異常値を見つける方法
主なプロジェクトは、毎日のファイルを分析し、いくつかのレコードの変動を検出し、それらを可能な異常として報告します(モデルに基づいて考えられる場合)。ファイルは1日の終わりに生成され、私のプログラムは翌日の朝に異常をチェックする必要があります。しかし、ファイル内ではなく、ファイルとファイルの異常をチェックする必要があります。つまり、すべてのファイルのデータを比較して、特定のアルゴリズムに従って作成するモデルに適合するかどうかを確認する必要があります。私が言うことは、モデルを訓練するためにアルゴリズムを適用する有効なデータがあるということです。それで、私はこの同じモデルを同じフォーマットの他のファイルに適用する必要がありますが、明らかに異なるデータです。私は予測列を探しているのではなく、むしろこれらの他のファイルの異常を検出しています。異常がある場合、プログラムはどの行/列に異常があるのかを教えて、特定のファイルに異常がある可能性があるという電子メールを送信するようプログラムする必要があります。
私は機械学習に新しいと言いました。私はKMeansアルゴリズムを使ってファイル上の異常値/異常を検出する方法を知りたいと思います。
これまでのところ私は、モデルを作成しました:
SparkConf conf = new SparkConf().setAppName("practice").setMaster("local");
JavaSparkContext sc = new JavaSparkContext(conf);
SparkSession spark = SparkSession
.builder()
.appName("Anomaly Detection")
.getOrCreate();
String day1txt = "C:\\Users\\User\\Documents\\day1.txt";
String day2txt = "C:\\Users\\User\\Documents\\day2.txt";
Dataset<Row> day1 = spark.read().
option("header", "true").
option("delimiter", "\t").
option("inferSchema", "true").
csv(day1txt);
day1 = day1.withColumn("Size", day1.col("Size").cast("Integer"));
day1 = day1.withColumn("Records", day1.col("Records").cast("Integer"));
VectorAssembler assembler = new VectorAssembler()
.setInputCols(new String[]{"Size", "Records"})
.setOutputCol("features");
Dataset<Row> day1vector = assembler.transform(day1);
KMeans kmeans = new KMeans().setK(5).setSeed(1L);
KMeansModel model = kmeans.fit(day1vector);
私は外れ値を検出するために、この時点から、何をすべきかわかりません。私は "正規化された"データを持っている必要がありますいくつかの他の.txtファイルを持って、また私は "改ざん/非正規化"データを持っているファイルのカップルを持っています。私が利用可能なすべてのテストデータを使用してモデルを訓練する必要がありますか?その場合、異なるデータセットを使用してモデルを訓練するにはどうすればよいですか?あるいは、私は1つのデータセットでそれを訓練し、他のものと一緒にそれをテストすることができますか?
EDIT:これは私が使用するファイル(day1.txt)のサンプルである
(トップコースのダミーデータ/ 10)
Name Size Records
File1 1000 104370
File2 990 101200
File3 1500 109123
File4 2170 113888
File5 2000 111974
File6 1820 110666
File7 1200 106771
File8 1500 108991
File9 1000 104007
File10 1300 107037
これは、通常のデータを検討し、そしてIれます同じフォーマットではあるが同じ範囲の異なる値を持つ異なるファイルを持つことになります。次に、サイズ:1000、レコード:50000のような外れ値をいくつか追加したファイルがあります。
KMeansでどのように検出できますか? KMeansが完璧なモデルではない場合は、どのモデルを使用する必要がありますか?