

摘要:隨著信息技術的發展,工業互聯網技術已經被應用到工業大數據生產的各個環節,基于大數據技術的數據采集、數據存儲、數據處理、數據分析和數據可視化等模塊的技術應用也越來越走向成熟和高端。但是數據異常在生產過程中帶來的風險始終是企業不可忽視的問題。文章對工業大數據的實時數據進行特征提取、數據處理,采用隨機森林算法對工業大數據進行訓練、構建模型,將實時數據輸入模型中,動態更新參數以提高模型的分類精度,輸出分類結果,最終在工業生產過程中對工業大數據進行故障預警并進行故障分析。
關鍵詞:工業大數據;隨機森林;故障預警
中圖分類號:TP311文獻標志碼:A
0 引言
基于大數據的數據存儲、數據分析技術已經被廣泛用于工業互聯網、統籌學等領域。為了實現更加經濟、高效、安全的環境,各大企業對大數據故障檢測的準確率要求越來越高,不僅要求訓練出來的模型故障檢測率高,還要有精準的分析性能,因此研究工業大數據的故障檢測模型具有非常重要的意義。
文章提出一種基于隨機森林算法進行工業大數據故障檢測的方法。首先,該方法對工業大數據進行特征提取以獲取工業大數據的特征值。其次,該方法運用隨機森林算法對特征構建決策樹。最后,該方法依據動態更新決策樹的權重值,提高故障檢測的準確率。
1 隨機森林算法原理
隨機森林[1]是基于決策樹的一種模型,決策樹被廣泛應用于數據挖掘中的分類和回歸問題。以求職者是否會接受所應聘的工作為例,本文建立預測模型以說明隨機森林算法的原理。模型中包含工資、通勤時間和免費咖啡等特征。利用決策樹構建模型如圖1所示。樹的最頂端的節點被稱為樹的根,由于其為第一個特征,因此應該提供最易區分類別的特征。即如果工資低于5000元,大多數求職者將選擇拒絕;但是如果工資高于5000元,將繼續執行下一個最易區分的決策點,即通勤時間。
隨機森林是決策樹的集成,其形成基于單個決策樹的預測結果。分類器的權重決定了模型的性能,當某個決策樹的分類準確率較高時,其權重較大,反之其權重較小。
2 實驗步驟
文章中設置如下實驗步驟[2-3]。
(1)創建一個Scala工程,導入Scala框架支持。
(2)獲取數據源。
val dataFrame: DataFrame = HiveUtils.read(spark, \"dwd.fact_machine_learning_data\")
本實驗采集的工業大數據的字段名稱有:主鍵(machine_record_id),設備id(machine_id),主軸轉速(record_mainshaft_speed),主軸倍率(record_mainshaft_multiplerate),主軸負載(record_mainshaft_load),進給倍率(record_feed_speed),進給速度(record_feed_multiplerate),PMC程序號(record_pmc_code),循環時間(record_circle_time),運行時間(record_run_time),有效軸數(record_effective_shaft),總加工個數(record_amount_process),已使用內存(record_use_memory),未使用內存(record_free_memory),可用程序量(record_amount_use_code),注冊程序量(record_amount_free_code),記錄日期(record_date)。
(3) 提取特征[4]。
val cols: Array[String] = dataFrame.columns.slice(3, dataFrame.columns.length - 5)
val Array(ranting,test) = dataFrame.na.fill(0.0,cols).withColumnRenamed(\"machine_record_state\",\"label\").randomSplit(Array(0.8, 0.2))
val assembler: VectorAssembler = new VectorAssembler()
.setInputCols(cols)
.setOutputCol(\"features\")
(4)創建一個隨機森林分類器。
val rf: RandomForestClassifier = new RandomForestClassifier()
(5)定義要評估的estimator。
創建管道預估器:
val pipeline = new Pipeline()
.setStages(Array(stringIndexer, vecAssembler, rf))
其中,stringIndexer是標簽集,vecAssembler是特征集,rf是上步建立的隨機森林分類器。
(6)使用ParamGridBuilder指定要更改的超參數以及它們各自的有效值。
val paramGrid = new ParamGridBuilder()
.addGrid(rf.maxDepth, Array(2, 4, 6))
.addGrid(rf.numTrees, Array(10, 100))
.build()
在該表達式中,將樹的最大深度maxDepth設置為2、4或6,將隨機森林中樹的數目numTrees設置為10或100,這樣形成了3×2個不同配置的超參數配置網格。
(7)使用CrossValidator進行交叉驗證,評估各個模型。
使用CrossValidator算法來執行k折交叉驗證方法,接收3個參數,estimator是第(5)步創建的預估器pipeline,evaluator指定用于比較各種模型的指標,文章采用多分類器評估器,estimatorParamMaps是第(6)步創建的超參數的值paramGrid,設其并行度為3。
val crossValidator: CrossValidator = new CrossValidator()
.setEstimatorParamMaps(paramGrid)
.setEvaluator(new MulticlassClassificationEvaluator())
.setEstimator(pipeline)
.setParallelism(3)
(8)訓練模型轉換測試數據。
val result: DataFrame = crossValidator.fit(ranting).transform(test)
(9)運行結果如圖2所示。
3 結果分析
為了驗證基于隨機森林算法訓練出來的模型的有效性,文章以模型的準確率、誤判率和精準率作為評價指標,對工業大數據進行實驗[5]。
3.1 準確率
準確率是指在工業大數據中,利用訓練出來的模型對測試樣本進行檢驗,檢驗出結果正確的樣本數量占總測試樣本數量的比例。該指標是衡量大數據故障檢測模型準確性的一個重要指標,數值越高,說明模型的準確性越高;反之,說明模型的準確性越低。準確率的計算公式如下:
a=(TP+FP)/N(2)
其中,a為檢測結果的準確率,TP是正常的樣本數量,FP是異常的樣本數量,N為所有測試樣本的數量。在Spark中,可以使用MuticlassClassification Evaluator來計算準確率,代碼如下:
val evaluator=new MulticlassClassificationEvaluator()
.setLabelCol(“label”)
.setPredictionCol(“prediction”)
.setMetricName(“accuracy”)
val accuracy=evaluator.evaluate(predictions)
3.2 誤報率
誤報率是指對樣本誤報的數量占所有樣本數量的比例,代碼如下:
val error=1-accuracy
3.3 精準率
精準率是模型正確預測為正樣本的數量與預測為正樣本的數量之比,代碼如下:
val evaluator=new MulticlassClassificationEvaluator()
.setLabelCol(“label”)
.setPredictionCol(“prediction”)
.setMetricName(“precision”)
val precision =evaluator.evaluate(predictions)
4 結語
文章基于隨機森林的算法對工業大數據進行了訓練,將訓練模型用于大數據故障檢測,分析了準確率、誤報率等信息的檢測結果。該方法能夠幫助企業在生產過程中進行實時的故障預警,從而達到改善工業生產效率的目的,為提高企業經濟效益提供途徑。
參考文獻
[1]周勇,李君,張旭,等.工業互聯網平臺應用實施關鍵方法研究與發展對策建議[J].科技管理研究,2022(9):174-182.
[2]何文韜.基于Spark的工業大數據能效分析平臺的設計與實現[D].大連:大連理工大學,2018.
[3]劉婷,敖凌文,焦嘉.關于大數據分析在工業故障預警中應用的研究[J].科學技術創新,2021(19):99-101.
[4]宋世軍,樊敏.基于隨機森林算法的大數據異常檢測模型設計[J].吉林大學學報,2023(9):2660-2665.
[5]彭書浙,王旭,衛鴻濤.基于工業互聯網平臺的大數據分析系統研究[J].信息技術,2021(34):21-23.
Fault analysis of industrial big data based on random forest algorithm
Abstract: With the development of information technology, industrial Internet technology has been applied to all aspects of industrial big data production. The technology applications of data acquisition, data storage, data processing, data analysis and data visualization based on big data technology are becoming more and more mature and high-end. However, the risk of data anomalies in the production process is always a problem that enterprises cannot ignore. It is provided in this paper for performing feature extraction and dats processing to real-time data of industrial big data. The random forest algorithm is adopted to train industrial big data and build the model. The real-time data are inputted into the model and the parameters are updated dynamically to improve the classification accuracy of the model,from which the classification results are output. Finally, the fault warning and fault analysis of industrial big data are provided during the industrial production process.
Key words: industrial big data; random forest; fault warning