使用scikit-learn規劃團隊工時 系統的經驗分享2019/10/2 3 羅引嘉-自我介紹...

88
使用 Scikit - Learn 規劃團隊工時 系統的經驗分享 所属 集創科技股份有限 公司 ( 台湾 ) 作家 : Yin - Chia Lo, Sheng - Yu Yang , Li - Lun Wang 發表人 : 引嘉 Yin - Chia Lo

Upload: others

Post on 17-Aug-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

使用Scikit-Learn規劃團隊工時系統的經驗分享

所属: 集創科技股份有限公司 (台湾)

作家: Yin-Chia Lo, Sheng-Yu Yang ,Li-Lun Wang

發表人 : 羅引嘉 (Yin-Chia Lo )

Scikit-Learn を用いた機械学習による過去プロジェクトデータ活用の試み~ ソフトウェア開発の見積もりへの機械学習の適用 ~

所属: 集創テクノロジー株式会社(台湾)

著者: Yin-Chia Lo, Sheng-Yu Yang ,Li-Lun Wang

発表者 : 羅引嘉 (Yin-Chia Lo )

2019/10/2 3

羅引嘉-自我介紹

學歷:逢甲大學資訊工程學系碩士(FCU IECS)

經歷:軟體的產業工作21年經驗-金氏電腦套裝事業群系統工程師 (KING)-啟台國際技術部專案經理 (TIC)-思邦科技技術部協理(SponTech)

現任:-集創科技台中辦事處協理(GCT )-國立台中科技大學資訊工程系兼任講師(Department of Computer Science and Information Engineering)

-台灣軟體流程改善協會 秘書長(TSPIC)

專長:軟體工程、專案管理、系統分析、6家CMMIML2 導入認證經驗

CMMI導入經驗:-參與啟台國際 CMMI ML2的認證並

擔任EPG流程改善小組及ATM成員(CMMM Dev V1.1,2002-2005)

-參與台南軟協洪肇奎輔導團隊對中部5家CMMI M2輔導認證的助教與

參與認證(CMMM DevV1.3 2009-2011)

2019/10/2 4

羅引嘉-自己紹介

学歴:逢甲大学情報工学・コンピュータ科学学院修士(FCU IECS)

経歴:ソフトウェア産業に21年間従事-KING社コンピュータ関連ビジネスグループ システムエンジニア-啟台(Tai-develop)国際技術社 プロジェクトマネージャー-思邦(SponTech)科学技術社 技術部長

現在:-集創(Globe Creation)科学技術社台中支店長-国立台中科技大学情報工学系学院非常勤講師-台湾ソフトウェアプロセス改善コンソーシアム(TSPIC)秘書長

専門技術:ソフトウェア工学、プロジェクト管理、システム分析

CMMI導入経験:-啟台国際技術社 CMMI ML2 アプレイザルに参加

プロセス改善グループEPGメンバーおよびアプレイザルチームメンバー(CMMM Dev V1.1 2002-2005)

-リードアプレイザ洪博士と共に台湾の小規模ソフトウェアハウス5社における CMMI ML2 アプレイザルに参加

(CMMM Dev V1.3 2009-2011)

報告大綱

5

項目 時程 時間

1 開發背景與動機 6分鐘

2 機械學習的學習與分析 4分鐘

3 開發的步驟 7分鐘

4 Scikit-Learn與LDA的實作與實驗 20分鐘

5 開發工時系統的執行 8分鐘

6 結論 5分鐘

2019/10/2

タイムスケジュール

6

項目 発表内容 所要時間

1 開発背景と動機 6分

2 機械学習の学習内容と分析 4分

3 開発の進め方 7分

4 Scikit-LearnとLDAの実装と実験 20分

5 開発工数予測システム実現の勧め 8分

6 結論 5分

2019/10/2

2019/10/2 7

壹、背景-新團隊建立

總經理

業務部

業務推廣

銷售

工程部

程式開發

系統支援

客戶服務

管理部 台中辦事處

軟體開發實驗室

顧問團隊

集創科技股份有限公司成日立期 :2003年4月

產業領域別:資訊服務業IBM Domino Notes開發與顧問營業地址 :台北市士林區承德路四段33巷6號1樓

2018成立

2019/10/2 8

1.背景-新チーム立上げ

社長

業務部

業務推進

営業

工程部

プロセス開発

システム支援

顧客サービス

管理部 台中支店

ソフトウェア

開発実験室

取締役会

集創(Globe Creation)科学技術社会社設立 :2003年4月

主要事業:ソフトウェア開発IBM Domino Notes開発・コンサル本社所在地 :台北市士林區承德路四段33巷6號1樓

2018設立

9

制度初步建立

• 軟體開發文件SOP

• 工時系統建立

軟體架構

• 軟體開發生命周期

• Q部門成立

• 軟體架構建立

軟體標準

• 軟體開發SOP建立

• 開發系統導入管理

• 軟體元件庫建立

• 軟體元件利用率提升

• 教育訓練標準建立

軟體運用

• 軟體顧問服務

• 軟體自動測試

• 開發成本降低

• 軟體開發效率提升

• 軟體利潤上升

• 部門競爭力提高

中部技術團隊的軟體開發方向:將由制度建立到開發標準化逐漸建立軟體Framework,套裝產品開發、企業軟體服務 、顧問服務

軟體開發技術能力

軟體開發成熟度

2019/10/2

壹、背景-新團隊建立

10

制度開発の初步

• ソフトウェア開発SOP文書

• 工数システム開発

ソフト構想

• ソフトウェア開発ライフサイクル

• Q部門立ち上げ

• ソフトウェア構想立案

ソフト標準

• ソフトウェア開発SOP制定

• 開発システム導入管理

• ソフトウェア部品データベース開発

• ソフトウェア部品利用率向上

• 教育訓練標準制定

ソフト運用• ソフトウェアコンサルサービス

• ソフトウェア自動テスト

• 開発コスト削減

• ソフトウェア開発効率向上

• ソフトウェア利益率向上

• 部門競争力向上

台中チームのソフトウェア開発方針:徐々にソフトウェアFrameworkを開発して開発制度を標準化し,主力製品を開発し,ソフトウェアサービスやコンサルサービスを立ち上げる.

ソフトウェア開発の

技術能力

ソフトウェア開発の成熟度

2019/10/2

1.背景-新チーム立上げ

11

ASP.NET

Core(MVC)

Framework元件開發

機械學習整合(C# &

Python)

支援公司的專案軟體的開發與整合

2019/10/2

壹、背景-新團隊工作

12

ASP.NET

Core(MVC)

Framework部品開発

機械学習整備(C# &Python)

会社プロジェクトのソフトウェア開発と整備を支援

2019/10/2

1.背景-新チームの作業

開發團隊的想法是開發給軟體開發團隊的專案數據管理系統,以軟體工程、數據科學管理為理論的工具基礎提供系統服務來解決公司內部工程師與外包商共同溝通專案管理的問題:

不同軟體的公司專案資料庫

媒合不同公司產出最大化的價值

統一平台專案管理與監控

共同的軟體工程語言(CMMI & Agile)

132019/10/2

壹、背景-開發動機

ソフトウェア開発チームの考え方は,チーム用のプロジェクトデータ管理システムを開発し,ソフトウェアプロセスにより,データの科学的管理のための理論的基礎となるツールとしてシステムサービスを提供することで,各社内部工程とアウトソーシングを含むプロジェクト管理問題を共有し,解決する:

ソフト会社共有のプロジェクト管理データベース

会社間連携による産出価値の最大化

統一プラットフォームによるプロジェクト管理と監視

ソフトウェアプロセスの共通言語(CMMI & Agile)

142019/10/2

1.背景-開発動機

2019/10/2 15

學習型專案數據管理平台

輸入專

案的參

開發團

隊的歷

史資料

工時紀錄

與未來工

時預測的

模型持續機械學習建模

客戶加入外部資訊

專案數據管理系統(資料)

軟體工程理論

壹、背景-開發動機

2019/10/2 16

学習型プロジェクト管理プラットフォーム

入力パラ

メータ

開発チームの作業

記録

工数実績+

工数予測モデル

モデル構築用持続的機械学習

顧客固有の外部情報

プロジェクトデータ管理システム(ビッグデータ)

ソフトウェア工学理論

1.背景-開発動機

機械學習的學習與分析

機械学習の学習内容と分析

2019/10/2 19

貳、機械學習的學習

「人工智慧」的概念是由美國科學家John McCarthy於1955年提出,目標為使電腦具有類似人類學習及解決複雜問題、抽象思考、展現創意等能力,能夠進行推理、規劃、學習、交流、感知和操作物體,應用領域非常廣泛,近年大行其道的個人語音助理如蘋果Siri、微軟Cortana,以及分別擊敗人類西洋棋與圍棋高手的IBM Deep Blue、Google DeepMind AlphaGo都是人工智慧研究的結晶,同時電腦作畫譜曲寫劇本等創造性事物也陸續出現。隨著研發技術飛速進展,人工智慧深入如醫療、金融等生活層面指日可待。 (來源: 維基百科 、 ColdFusion )

2019/10/2 20

2.機械学習とは

「人工知能」の概念は米国の科学者John McCarthyが1955年に提示した.目標は人間同様に学習して複雑な問題を解決できるコンピュータを使い,抽象思考,創意工夫,推理,描画,学習,交流,物体を感知して操作するなど応用範囲が広い.近年アップルのSiri,マイクロソフトのCortanaは会話能力を持ち,IBM Deep Blueはチェスで,Google DeepMind AlphaGoは囲碁で人間を破り,さらに絵画や作曲,脚本など創造的な活動に進出するコンピュータの出現など研究成果が現れている.技術の急速な進展に伴い,医療や金融など生活面にも人工知能の進出は間近である. (出展:ウィキペディア,ColdFusion)

2019/10/2 21

資訊的預測(機械學習)

整理的資料

(統計分析)

專案的數據透過機械學習可以提供預估的資訊

貳、機械學習的學習

2019/10/2 22

データ予測(機械学習)

状況把握

(統計分析)

2.機械学習とは

機械学習を通じ,プロジェクトデータからの予測が可能に

2019/10/2 23

貳、機械學習的學習

專案管理系統數據

不同系統的語意資料

公司的不同種類專案數據資料收集

1.關聯資料庫的資料

2.系統查核與備註自

然語言資料

3.傳統問題單或系統

的問題內容所產生自

然語言資料

資料整理&規劃

2019/10/2 24

2.機械学習とは

プロジェクト管理システムの

データ

異なるシステムの用語データ

会社内での異なった種類のプロジェクトデータの収集

1.データベースに格納

した情報を関連付ける

2.システムが本文と注

を備えた自然言語情報

を調査

3.過去発生課題または

システム発見課題を

自然言語情報に追加

データ収集&計画立案

2019/10/2 25

貳、機械學習的分析

我們要採

用那些技

術與資源?

機械學習

的方式

基礎的資

料來源

採用那演

算法

分類資料

能力

選擇工具

2019/10/2 26

2.機械学習の分析

我々が採用す

べき技術や

資源は何か?

機械学習

の方式

基礎とな

る資料の

提供

演算法の

採用

データ分

類の能力

ツールの

選択

開發的步驟

開発の進め方

2019/10/2 29

參、開發的步驟

開發團隊建立 整理工時資料分類、分群統

計資料

清洗資料與整合

選擇演算法與工具

資料的實作機械學習

實驗結果提供給SA來規劃工時系統

2019/10/2 30

3.開発の進め方

開発チームの設立開発工数データの

整理

統計データのグルーピングと

分類

データ洗浄と整合化

演算法とツールの選択

データを使い機械学習を実践

実験結果工数見積システム実現のため,結果を分析し,要件提供

2019/10/2 31

參、開發的步驟

開發團隊

建立

整理

工時資料

分類、分群統計資料

清洗資料與整合

選擇演算法與工具

專案經理

羅引嘉

逢甲軟工(楊盛宇)

集創科技(羅引嘉)

羅文楷 王利倫

雲科大數據(陳奕中教授)

雲科大數據(周映均、王怡婷)

2019/10/2 32

3.開発の進め方

開発チームの設立

開発工数データの整理

統計データのグルーピングと分類

データ洗浄と整合化

演算法とツールの選択

プロマネ羅引嘉

逢甲大ソフト(楊盛宇)

集創科技(羅引嘉)

羅文楷 王利倫

雲科大データ(陳奕中教授)

雲科大データ(周映均、王怡婷)

2019/10/2 33

參、開發的步驟-FCU Software Lab

https://www.iecs.fcu.edu.tw/

FCU Software Lab

探討軟體工程理論、工具和流程改善,研究可以準時完成高品質、符合預算、滿足需求的軟體開發與專案管理技術,以及運用資料分析與人工智慧的方法和實務練習,來發展能夠促進科學研究和社會進步、提高工作效率,並且提升生活品質和永續環境的各種智慧型應用系統。

台日軟體技術學術交流

2019/10/2 34

3.共同研究先-FCU Software Lab

https://www.iecs.fcu.edu.tw/

FCU Software Lab

1969年設立の逢甲大学情報工学・コンピュータ科学学院は,

台湾で最も早く設立されたコンピュータ科学系学部であり,コンピュータ科学分野の学部生,修士,

博士を育成している.ソフトウェア工学理論を探求してツールやプロセスを改善し,高品質・短納期を実現すると共に,ビッグデータ分析や人工知能分野の研究を進め,持続的な社会発展に貢献中.

日台ソフトウェア技術の学術交流

2019/10/2 35

參、開發的步驟-YunTech BigData Lab

本系自1991年成立至今已邁入20多個年頭,現有學士、碩士、博士等完整一貫學制。

陳奕中 博士最高學歷國立成功大學資訊工程學系博士個人經歷逢甲資訊電機學院智慧聯網產業博士學位學程助理教授中央研究院地理資訊研究中心訪問學人逢甲資訊工程學系助理教授研究領域巨量資料、社群網路、資料庫系統、時空資料庫、人工智慧、系統鑒別

http://www.iem.yuntech.edu.tw/english/

台日軟體技術學術交流

台日軟體技術學術交流

2019/10/2 36

3.共同研究先-YunTech BigData Lab

1991年設立以来,二十数年を越える歴史の中で,多数の学士,修士,博士を育成している.現状,12名の教授,5名の準教授,4名の助教授からなる21名の常勤スタッフは,全員国内や海外の大学で博士号を獲得している.

陳奕中 博士最終学歴国立成功大学情報工学系博士個人経歴逢甲情報電機学院知能ネットワーク開発博士課程助理教授中央研究院地理情報研究センター客員研究員逢甲情報工学系助理教授研究領域ビッグデータ、クラウド、データベースシステム、時空データベース、人工知能、システム監査

http://www.iem.yuntech.edu.tw/english/

台日軟體技術學術交流

日台ソフトウェア技術の学術交流

SCIKIT-LEARN與LDA的實作與實驗

SCIKIT-LEARNとLDAの実装と実験

2019/10/2 39

肆、Scikit-Learn與LDA的實作

開發團隊

建立

整理

工時資料

分類、分群統計資料

清洗資料與整合

選擇演算法與工具

• 工時資料(Notes)

• 專案資料(Notes)

• 非關聯式資料庫

舊工時系統

• 欄位整理

• 資料統計

SQL資料庫• CVS

• EXCEL

Excel

2019/10/2 40

4.Scikit-LearnとLDAの実装

開発チームの設立

開発工数データの整理

統計データのグルーピングと分類

データ洗浄と整合化

演算法とツールの選択

•工数データ(Notes)

•プロジェクト情報(Notes)

•非連動型データベース

旧工数実績システム

•型/桁の調整

•統計データ

SQLデータベース • CVS

• EXCEL

Excel

2019/10/2 41

肆、Scikit-Learn與LDA的實作

工程師的撰寫內容的轉換與整理

開發團隊建立

整理

工時資料

分類、分群統計資料

清洗資料與整合

選擇演算法與工具

2019/10/2 42

4.Scikit-LearnとLDAの実装

記載者の記述内容の変換作業と型合わせ

開発チームの設立

開発工数データの整理

統計データのグルーピングと分類

データ洗浄と整合化

演算法とツールの選択

2019/10/2 43

肆、Scikit-Learn與LDA的實作

LDA演算法:

•收集多篇欲解析的文章,•取得所有文章中的字詞,•再由電腦解析這些字詞的類別,•最後再由一篇文章中字詞的類別的歸屬,判斷該篇文章主題為何。

線性區別分析(Linear Discriminant Analysis,LDA)開發團隊建立

整理

工時資料

分類、分群統計資料

清洗資料與整合

選擇演算法與工具

2019/10/2 44

4.Scikit-LearnとLDAの実装

LDA演算法:

•解析対象となる複数の文章を集める•全ての文章の中から語句を抽出する•これらの語句の種別をコンピュータ解析する•最後に文章中の語句の種別属性に基づいて文章の主題を決定する

線形判別分析(Linear Discriminant Analysis,LDA)開発チームの設立

開発工数データの整理

統計データのグルーピングと分類

データ洗浄と整合化

演算法とツールの選択

2019/10/2 45

開發團隊建立

整理

工時資料

分類、分群統計資料

清洗資料與整合

選擇演算法與工具

Year 專案規模 專案型態 程式語言 公司軟體架構

2009 3 維護專案 java 無

2009 3 維護專案 java 無

2009 3 維護專案 java

2009 3 維護專案 java 無

2009 3 維護專案 java 無

2009 3 外部專案開發

2009 3 維護專案 java 無

2009 3 外部專案開發

2009 3 維護專案 java 無

2009 3 維護專案 無 無

2009 3 內部專案開發

系統總共功能作業數 參與人數 考勤核心元件修改 薪資核心元件修改 人員成熟度

132 3 0 1 1

132 3 0 1 3

2 0 0 3

132 3 0 1 1

132 3 0 1 1

2 0 0 3

132 3 0 1 1

逢甲軟工小組的資料人工分類及註記

肆、Scikit-Learn與LDA的實作

2019/10/2 46

開発チームの設立

開発工数データの整理

統計データのグルーピングと分類

データ洗浄と整合化

演算法とツールの選択

Year 專案規模 專案型態 程式語言 公司軟體架構

2009 3 維護專案 java 無

2009 3 維護專案 java 無

2009 3 維護專案 java

2009 3 維護專案 java 無

2009 3 維護專案 java 無

2009 3 外部專案開發

2009 3 維護專案 java 無

2009 3 外部專案開發

2009 3 維護專案 java 無

2009 3 維護專案 無 無

2009 3 內部專案開發

系統總共功能作業數 參與人數 考勤核心元件修改 薪資核心元件修改 人員成熟度

132 3 0 1 1

132 3 0 1 3

2 0 0 3

132 3 0 1 1

132 3 0 1 1

2 0 0 3

132 3 0 1 1

FCU Software Labメンバーが人手で分類し,

注記を記入した.

4.Scikit-LearnとLDAの実装

2019/10/2 47

開發團隊建立

整理

工時資料

分類、分群統計資料

清洗資料與整合

選擇演算法與工具

雲科大數據小組的資料分類

原有欄位

新增欄位 • 建立資料編碼對照

LDA主題模型-語意分析資料(雲科大小組)

肆、Scikit-Learn與LDA的實作

2019/10/2 48

開発チームの設立

開発工数データの整理

統計データのグルーピングと分類

データ洗浄と整合化

演算法とツールの選択

YunTech BigData Labがデータを分類

元の表(テーブル)

追加テーブル • データをコード比較して照合

LDA主題(テーマ)モデル-語意分析データ(YunTech BigData Lab)

4.Scikit-LearnとLDAの実装

2019/10/2 49

開發團隊建立

整理

工時資料

分類、分群統計資料

清洗資料與整合

選擇演算法與工具

TF-IDF

LDA

斷詞

第一次清洗資料-雲科大小組(語意分析的方面)

LDA主題模型-語意分析資料(雲科大小組)

肆、Scikit-Learn與LDA的實作

2019/10/2 50

開発チームの設立

開発工数データの整理

統計データのグルーピングと分類

データ洗浄と整合化

演算法とツールの選択

TF-IDF(頻度×特殊度)

による重み付け

LDA(線形判別分析)による主題分類

語意の断定

第1次データ洗浄 –

Yun Tech Big Data Lab

(意味解析の観点で)

4.Scikit-LearnとLDAの実装LDA主題(テーマ)モデル-語意分析データ(YunTech BigData Lab)

従来LDA法では効果が出ない

語句データベースを作成

2019/10/2 51

開發團隊建立

整理

工時資料

分類、分群統計資料

清洗資料與整合

選擇演算法與工具

欄位清洗

獨熱編碼(OneHotEncoder)

特徵擷取

隨機森林

LDA

LDA主題模型-語意分析資料(雲科大小組)

肆、Scikit-Learn與LDA的實作

2019/10/2 52

開発チームの設立

開発工数データの整理

統計データのグルーピングと分類

データ洗浄と整合化

演算法とツールの選択

表データの洗浄 (前処理)

OneHotEncoderによる独立数値化

特徴抽出により学習データ作成

Random Forest法による機械学習

LDA(線形判別分析)による主題分類

4.Scikit-LearnとLDAの実装LDA主題(テーマ)モデル-語意分析データ(YunTech BigData Lab)

2019/10/2 53

開發團隊建立

整理

工時資料

分類、分群統計資料

清洗資料與整合

選擇演算法與工具

關鍵字搜索+

人工觀察

操作上行為

LDA主題模型-語意分析資料(雲科大小組)

肆、Scikit-Learn與LDA的實作

2019/10/2 54

開発チームの設立

開発工数データの整理

統計データのグルーピングと分類

データ洗浄と整合化

演算法とツールの選択

キーワード検索+

人手による観察

操作上の振る舞い

4.Scikit-LearnとLDAの実装LDA主題(テーマ)モデル-語意分析データ(YunTech BigData Lab)

人により表記が異なる同じ意味の語句を抽出

2019/10/2 55

開發團隊建立

整理

工時資料

分類、分群統計資料

清洗資料與整合

選擇演算法與工具

第二次資料效果不好還是需要再一次用人工觀察來修正

LDA主題模型-語意分析資料(雲科大小組)

肆、Scikit-Learn與LDA的實作

2019/10/2 56

開発チームの設立

開発工数データの整理

統計データのグルーピングと分類

データ洗浄と整合化

演算法とツールの選択

4.Scikit-LearnとLDAの実装LDA主題(テーマ)モデル-語意分析データ(YunTech BigData Lab)

語意の断定、属性種別の判別

会社データベース構築(部門網羅+自己成長)

行為の分析

Random Forest 学習

ニューラルネットワーク

第2次データも良い効果が得られず,再度1次データを人手で観察して修正する必要あり.他手法によるモデル改良

2019/10/2 57

開發團隊建立

整理

工時資料

分類、分群統計資料

清洗資料與整合

選擇演算法與工具

⚫4 月在逢甲小組將資料表清洗完後選擇工具與演算法

機器學習分為:1. 監督式學習2. 非監督式學習3. 半監督式學習4. 強化學習

Python可使用的機器學習工具1. Scikit-learn

2. Caffe2

3. Tensorflow

4. Keras

Scikit-learn TensorFlow

定位 通用機器學習 深度學習

處理資料的方式 更傾向於使用者可以自行對資料進行處理

自動從資料中抽取有效特徵,而不需要人為的來做這件事情

自由度 相對低 相對高

抽象化、封裝程度 相對高 相對低

適合專案 適合中小型,資料量不大且需要使用者手動對資料進行處理,並選擇合適模型的專案

已經明確瞭解需要用深度學習,且資料處理需求不高的專案

Scikit-Learn的實作

肆、Scikit-Learn與LDA的實作

2019/10/2 58

開発チームの設立

開発工数データの整理

統計データのグルーピングと分類

データ洗浄と整合化

演算法とツールの選択

⚫4 月に,FCU Software Labはデータ洗浄を終え,適用ツールと演算法を選定した.

機械学習の分類:1. 教師あり学習2. 教師なし学習3. 半教師あり学習4. 強化学習

Pythonで使用できる機械学習ツール1. Scikit-learn

2. Caffe2

3. Tensorflow

4. Keras

Scikit-learn TensorFlow

位置付け 機械学習に適用 深層学習

データ処理方式 ユーザ自身が自らデータ処理を行わなければならない傾向がある

人手が介入する必要なく,自動でデータから有効な特徴を抽出できる

自由度 相対的に低い 相対的に高い

抽象化,カプセル化の度合い

相対的に高い 相対的に低い

適用に向いているプロジェクト

人手でデータを処理し,適切なモデルを選択する必要があるので,データ量が少ない中小のプロジェクト向き

深層学習を適用する必要性を明確に理解しており,かつデータ処理要求が高くないプロジェクト向き

Scikit-Learnの実装

4.Scikit-LearnとLDAの実装

2019/10/2 59

肆、Scikit-Learn與LDA的實作

◼ scikit-learn是一個開源專案,遵守BSD協議,可以將專案應用於商業開發。目前主要由社群成員自發進行維護。可能是由於維護成本的限制,scikit-learn相比其他專案要顯得更為保守,這主要體現在兩個方面:

1. scikit-learn從來不做除機器學習領域之外的其他擴充套件。

2. scikit-learn從來不採用未經廣泛驗證的演算法。

◼ scikit-learn在官網把他提供的功能分為六大塊,分別是1. 監督式學習的分類(Classification)2. 回歸演算法(Regression)3. 非監督式的分群演算法(Clustering)4. 降低維度(Dimensionality reduction)5. 模型選擇(Model selection)6. 資料預處理(Preprocess)

開發團隊建立

整理

工時資料

分類、分群統計資料

清洗資料與整合

選擇演算法與工具

2019/10/2 60

4.Scikit-LearnとLDAの実装

◼ scikit-learnは,Python言語のための機械学習用フリーソフトウェアライブラリで,社員がBSDライセンスを守れば商業利用も可能である. 多くの分類,回帰,クラスタリング演算を持つことが特徴で,数理ライブラリNumPyやSciPyと相互運用する様設計されている.scikit-learnは保守性を重視して以下の方針をとる.

1. scikit-learnはこれまで機械学習領域外の機能は拡充してこなかった

2. scikit-learnはこれまで広範な検証を経ていない演算法は採用してこなかった

◼ scikit-learnが公式Webサイトで提供する機能は6つに大別1. 教師あり学習での分類(Classification)2. 回帰演算(Regression)3. 教師なし学習でのクラスタリング演算(Clustering)4. 次元の削減(Dimensionality reduction)5. モデルの選択(Model selection)6. データの前処理(Preprocess)

開発チームの設立

開発工数データの整理

統計データのグルーピングと分類

データ洗浄と整合化

演算法とツールの選択

2019/10/2 61

開發團隊建立

整理

工時資料

分類、分群統計資料

清洗資料與整合

選擇演算法與工具

圖片來源:https://scikit-learn.org/stable/tutorial/machine_learning_map/index.html

Scikit-Learn的實作

肆、Scikit-Learn與LDA的實作

2019/10/2 62

開発チームの設立

開発工数データの整理

統計データのグルーピングと分類

データ洗浄と整合化

演算法とツールの選択

図の出展:https://scikit-learn.org/stable/tutorial/machine_learning_map/index.html

4.Scikit-LearnとLDAの実装Scikit-Learnの実装

2019/10/2 63

開發團隊建立

整理

工時資料

分類、分群統計資料

清洗資料與整合

選擇演算法與工具

目前安裝Python有2種主流的選擇,分別為:

1. Python(https://www.python.org/) :僅提供最基本功能,大多數的功能需下指令做安裝(pip/pip3 install

套件),因此整體檔案較輕巧。2. Anaconda(https://www.anaconda.com/) :提供多種

方便的功能(開設虛擬環境、支援多種程式編輯器),在預設環境底下已經先幫使用者安裝了大多數實用的功能套件,可為使用者省下許多麻煩。在此我們選擇使用Anaconda

在Anaconda的預設環境中已經提供了,分別是:1. scikit-learn 0.20.3:機器學習套件2. pandas 0.23.4:是 python 的一個數據分析 lib,提供

高效能、簡易使用的資料格式(Data Frame)讓使用者可以快速操作及分析資料

3. numpy 1.15.4:Python 的一個重要模組,主要用於資料處理上,Numpy 底層以 C 和 Fortran 語言實作,所以能快速操作多重維度的陣列

Scikit-Learn的實作

肆、Scikit-Learn與LDA的實作

2019/10/2 64

開発チームの設立

開発工数データの整理

統計データのグルーピングと分類

データ洗浄と整合化

演算法とツールの選択

現在,Pythonをインストールするための2つの主要な選択肢:

1. Python(https://www.python.org/) :最も基本的な機能を提供するのみ.(pip/pip3 install は含むが)多くの機能を含まないため,容量が少なく比較的軽快.

2. Anaconda(https://www.anaconda.com/) :各種エディターなど使用環境を含め,デフォルトで多くの便利な機能がインストールされるため,使用者は手間を掛けることなくそれらの実用的な機能を活用可能である.

そのため,我々はAnacondaを選択して使用する

Anacondaのデフォルト環境で既に以下が使用可能:1. scikit-learn 0.20.3:機械学習キット2. pandas 0.23.4:python libのデータ分析キット

ユーザが素早く操作してデータを分析できる高性能で使いやすいデータフレームを提供する

3. numpy 1.15.4:主要なデータ処理上Pythonの重要なlibで,Numpy の最下層は CとFortranで実装され,多次元の行列を高速に処理できる.

Scikit-Learnの実装

4.Scikit-LearnとLDAの実装

2019/10/2 65

方法 介紹

Linear Regression

最常見的線性回歸,損失函數也是最簡單的,但是由於沒有用到交叉驗證之類的驗證方法,需要我們自己把數據分成訓練集合測試及然後訓練優化

Ridge基於LinearRegression,加入L2範數正則化項在不拋棄任何一個特徵的情況下,縮小了回歸係數,使得模型相對而言比較的穩定,不至於過擬合

Lasso基於LinearRegression,加入L1範數正則化項可以使得一些特徵的係數變小,甚至還是一些絕對值較小的係數直接變為0。增強模型的泛化能力。

ElasticNetElasticNet可以看做Lasso和Ridge的中庸化的產物。它也是對普通的線性回歸做了正則化,但是它的損失函數既不全是L1的正則化,也不全是L2的正則化,而是用一個權重參數ρ來平衡L1和L2正則化的比重

開發團隊建立

整理

工時資料

分類、分群統計資料

清洗資料與整合

選擇演算法與工具

肆、Scikit-Learn與LDA的實作

2019/10/2 66

手法 内容紹介

Linear Regression

線形回帰は最も一般的な予測分析.1つの従属変数(予測値)と1つ以上の独立変数(特徴量)の関係を1次関数の予測モデルで表現.予測と正解の平均二乗誤差を損失関数として最小となる重みとバイアスを求めることでモデルを構築.試行と検証を繰り返して最適化する.

Ridge過学習を防ぎ汎用性を高めるための正則化項を加えた線形回帰手法. 重みの二乗和(L2正則化項)を加えて重みの影響を緩和する.完全には重み0とならないため,特徴量が多い場合はモデル解釈が複雑になる.

Lasso過学習を防ぎ汎用性を高めるための正則化項を加えた線形回帰手法.重みの和(L1正則化項)を加えて重みの影響を緩和する.不要と判断した特徴量は重み0となって無視されるため,単純化するが予測精度は落ちる.

ElasticNetElasticNetは,LassoとRidgeの中間を狙ったもの.重みの二乗和(L2正則化項)を加えて重みの和(L1正則化項)を引くことで,考慮できる特徴量の数を確保しながらモデル解釈の複雑化を避けている.

開発チームの設立

開発工数データの整理

統計データのグルーピングと分類

データ洗浄と整合化

演算法とツールの選択

4.Scikit-LearnとLDAの実装

2019/10/2 67

資料的實作機械學習

實驗結果

提供給SA來規劃工時系統

使用資料進行學習接著設定各數據代表意義,以利之後使用OneHotEncoder

為各個資料設定自己的權重,在下一步驟將會利用權重計算各個專案所需時間目標資料形成公式

Scikit-Learn的實作

肆、Scikit-Learn與LDA的實作

2019/10/2 68

データを使い機械学習を実践

実験結果

工数見積システム実現のため,結果を分析し,要件提供

データを使い学習を進める各データに意味付けし,OneHotEncoderで独立数値化各特徴量に重みを設定し,次にその重みを使って各々のプロジェクトに必要な工数を計算するターゲットデータよりモデルを生成する

Scikit-Learnの実装

4.Scikit-LearnとLDAの実装

2019/10/2 69

資料的實作機械學習

實驗結果

提供給SA來規劃工時系統

Scikit-Learn的實驗

LinearRegression-未正規化

LinearRegression-正規化

肆、Scikit-Learn與LDA的實驗

目標資料形成公式-各欄位之間相乘

2019/10/2 70

データを使い機械学習を実践

実験結果

工数見積システム実現のため,結果を分析し,要件提供

Scikit-Learnの実験

LinearRegression-未正規化

LinearRegression-正規化

4.Scikit-LearnとLDAの実験

モデル生成の目標値-各データ間の相関

データ差異の分布図

データ差異の分布図

学習曲線

学習曲線

2019/10/2 71

資料的實作機械學習

實驗結果

提供給SA來規劃工時系統

Scikit-Learn的實驗

實驗結果

• 從以上的實驗結果來說,當欄位之間是乘除關

係的話,對於4種演算法來說,似乎並不合適

實驗檢討

• 目前推測失敗原因:演算法選擇錯誤:應該先查

看參數與結果之間的關係圖來判斷要選擇哪種

演算法

肆、Scikit-Learn與LDA的實驗

2019/10/2 72

データを使い機械学習を実践

実験結果

工数見積システム実現のため,結果を分析し,要件提供

Scikit-Learnの実験

実験結果

• 前述の実験結果からは,収集データ間の関係性から特徴量

を抽出してモデル化し,工数を予測する線形回帰演算に関

して,4種の演算法を試したが,何れも期待する結果を得る

ことができなかった.

実験結果の検討

• 現在の状況を眼前にして失敗原因を推測すると,演算法の

選択ミスが考えられる. : しかし : 演算法を選択す

る前に,収集した各種データと工数実績の間の関係性の確

からしさを先ず確認する必要があると思われる.

4.Scikit-LearnとLDAの実験

2019/10/2 73

資料的實作機械學習

實驗結果

提供給SA來規劃工時系統

Scikit-Learn的實驗

• 提供開發系統新的欄位

• 協助系統開發的流程檢驗

流程與資料結構

• 分析專案&工時所需要數據資料

• 幫助工時系統自動化開發的參考依據

公司自動化管理

• 加強公司度量數據資料精準度

• 提高公司專案數據量化管理專案管理

肆、Scikit-Learn與LDA的實驗

2019/10/2 74

データを使い機械学習を実践

実験結果

工数見積システム実現のため,結果を分析し,要件提供

Scikit-Learnの実験

•開発記録に必要なデータ項目を追加

•システム開発のプロセス履行検証を支援する仕組みの提供

プロセスとデータ構造

•プロジェクトと工数見積に必要な数値データを分析する

•分析結果を工数見積自動化システム開発の参考として提供し,拠り所とさせる

会社管理システムの自動化

•会社の基準となる測定データの精度を高める

•会社の定量的プロジェクト管理方法を改善する

プロジェクト管理

4.Scikit-LearnとLDAの実験

開發工時系統的執行

開発工数予測システム実現の勧め

2019/10/277

伍、開發工時系統的執行

工時系統 專案數據管理系統

專案團隊 PM & Sale

工時預估模組機械學習

專 專 專 專 專

專 專 專 專 專 專 專

待辦事項

開始

PM700

專 專 專 專專 專 專 專 專 專

結束

專 專 專 專 專 專業務人員專案經理

專 專 專 專 專 專

專 專

專案經理

MA人員專案成員PM與主管

專案管理暨工時管理系統

專 專 專 專 專 專

MA專 專

專 專 專

1.廠商基本資料

2.專案編號

3.工作項目編號

PM100

專 專 專 專 專 專 專 專

PM200

專 專 專 專 專 專 專 專

PM300

專 專 專 專WBS專 專

PM400

專 專 專 專 專 專 專 專 專

專 專 專 專 專

PM500

專 專 專 專 專 專 專 專

廠商基本資料

專案編號資料

工作項目編號資料

業務人員專案經理

1.專案編號2.工作項目編號

3.待辦事項與周

報資料

PM600

專 專 專 專 專 專 專 專 專

專 專 專 專 專

專 專 專 專 專

公司成員

公司成員

專案經理

專 專 專 專 專

專 專 專 專 專 專

MA專 專

專 專 專

2019/10/278

5.開発工数予測システム実現の勧め

工数システム プロジェクトデータ管理システム

プロジェクトチーム

PM & 営業

工数予測モデル

機械学習

專 專 專 專 專

專 專 專 專 專 專 專

待辦事項

開始

PM700

專 專 專 專專 專 專 專 專 專

結束

專 專 專 專 專 專業務人員專案經理

專 專 專 專 專 專

專 專

專案經理

MA人員專案成員PM與主管

專案管理暨工時管理系統

專 專 專 專 專 專

MA專 專

專 專 專

1.廠商基本資料

2.專案編號

3.工作項目編號

PM100

專 專 專 專 專 專 專 專

PM200

專 專 專 專 專 專 專 專

PM300

專 專 專 專WBS專 專

PM400

專 專 專 專 專 專 專 專 專

專 專 專 專 專

PM500

專 專 專 專 專 專 專 專

廠商基本資料

專案編號資料

工作項目編號資料

業務人員專案經理

1.專案編號2.工作項目編號

3.待辦事項與周

報資料

PM600

專 專 專 專 專 專 專 專 專

專 專 專 專 專

專 專 專 專 專

公司成員

公司成員

專案經理

專 專 專 專 專

專 專 專 專 專 專

MA專 專

專 專 專

プロジェクト管理 及び工数管理システム

2019/10/2 79

小型資服業專案數據服務2.0平台

機器學習工具

數據科學的驗算分析

供應商管理(CMMI-SAM)

度量與分析

(CMMI-MA)

看板&媒合

管理及工時系統

專案管理

(CMMI-PP)

GCTBaseCode

伍、開發工時系統的執行

2019/10/2 80

小規模サービスプロジェクト向け

データサービス2.0プラットフォーム

機械学習ツール

ビッグデータ分析

供給者管理(CMMI-SAM)

測定分析

(CMMI-MA)

見える化&会社間連携の

管理及び工数システム

プロジェクト

管理

(CMMI-PP)

GCTBaseCode

5.開発工数予測システム実現の勧め

2019/10/2 81

伍、開發工時系統的執行

CMMI&Agile 的軟工知識

程式平台GCT BaseCode

專案管理、專案數據管理、工時系

2019/10/2 82

CMMI & Agile のソフトウェア開発知識

関数処理プラットフォーム

GCT BaseCode

プロジェクト管理,プロジェクトデータ管理,工数システム

5.開発工数予測システム実現の勧め

2019/10/2 83

陸、結論

1. 要有能定義預測或學習目標的專業領域人員

2.完整好資料特徵很重要

3.要重視初期目標資料統計與整理

4.找出適合的工具與演算法

機械學習個人的學習心得4要點

2019/10/2 84

6.結論

1.学習或いは予測する対象となる専門領域を明確に定めることができること

2.特徴量となる完全で整ったデータを集めることが重要

3.最初に目的となるデータを統計分析して整理することが重要

4.適切なツールと演算法を探し出すことが重要

機械学習を個人で学ぶ際の心構え4点

簡報資料引用來源

◼參考並引用Googleg搜尋到軟體工程的資料

◼引用並引用Google 照片AI及小圖示

◼引用並引用維基百科的照片與資料

◼參考逢甲軟工實驗室楊盛宇的資料

◼參考雲科大工商大數據實驗室的資料

◼參考集創科技王利倫的機械學習報告

2019/10/2 85

参考資料

◼参考及び引用:ソフトウェア工学資料のGoogle検索結果

◼引用: AIに関するGoogle検索結果の写真及びアイコン

◼引用:ウィキペディア掲載の写真と文章

◼参考:FCU Software Lab 楊盛宇氏の資料

◼參考:YunTech BigData Lab の資料

◼參考:集創科技王利倫氏の機械学習報告資料

2019/10/2 86

原文書の表題や記載形式を若干編集した部分有り

簡報結束 歡迎指教!

ご清聴ありがとうございました.