【初心者にもわかりやすく解説】正規化とは?
皆さんは「正規化」という言葉をご存知でしょうか?
データ分析や機械学習の世界では、頻繁に登場する言葉ですが、聞き慣れない方も多いかもしれません。
今日は、この「正規化」について、初心者の方にも分かりやすく解説していきます。 データ分析や機械学習を始める上で、正規化の理解は必須です。
1. データを整理して扱いやすくする「正規化」とは?
「正規化」とは、データを扱いやすくするために整理したり変形したりすることを指します。 例えば、Excelの表やデータベースなど、様々な場面で用いられます。
1.1 正規化の目的
正規化の目的は、大きく分けて3つあります。
- データの参照しやすさ: 整理されたデータは、目的の情報を探しやすくなり、分析や処理がスムーズに行えます。
- データの整合性: 冗長なデータを削減することで、データの矛盾を防ぎ、正確性を高めます。
- データの保守しやすさ: データの構造が明確になることで、データの修正や更新が容易になります。
1.2 正規化の具体的な例
具体的な例で見てみましょう。
例えば、以下のような顧客情報があったとします。
顧客ID | 氏名 | 電話番号 | 住所 | 購入商品 |
1 | 佐藤太郎 | 090-1234-5678 | 東京都渋谷区 | スマホ |
2 | 鈴木花子 | 080-9876-5432 | 東京都港区 | パソコン |
3 | 田中一郎 | 070-1111-2222 | 東京都千代田区 | スマホ |
4 | 佐藤太郎 | 03-1234-5678 | 東京都渋谷区 | イヤホン |
この表は、一見問題なさそうですが、いくつか課題があります。
- 顧客ID 1 と 4 は同じ佐藤太郎さんですが、電話番号が異なります。 これは、佐藤太郎さんが電話番号を変更した可能性もありますが、入力ミスなどの可能性も考えられます。
- 住所情報が重複しています。 例えば、渋谷区の住所を何回も入力する必要があります。
- 購入商品情報が顧客情報と紐付いていないため、どの顧客がどの商品を購入したのか分かりづらいです。
これらの課題を解決するために、正規化を行い、以下の様な表に変換します。
顧客情報表
顧客ID | 氏名 | 電話番号 | 住所ID |
1 | 佐藤太郎 | 090-1234-5678 | 1 |
2 | 鈴木花子 | 080-9876-5432 | 2 |
3 | 田中一郎 | 070-1111-2222 | 3 |
住所情報表
住所ID | 住所 |
1 | 東京都渋谷区 |
2 | 東京都港区 |
3 | 東京都千代田区 |
購入商品表
購入ID | 顧客ID | 商品名 |
1 | 1 | スマホ |
2 | 2 | パソコン |
3 | 3 | スマホ |
4 | 1 | イヤホン |
このように正規化を行うことで、以下の様なメリットがあります。
- データの重複が解消され、データの整合性が保たれます。
- 住所情報や商品情報は、それぞれの表で管理されるため、参照や更新が容易になります。
- どの顧客がどの商品を購入したのか、明確に把握できます。
2. 正規化の様々な種類
正規化には様々な種類があります。
正規化の種類
正規化の種類 | 説明 |
第1正規形 (1NF) | 各列がスカラ値である状態 |
第2正規形 (2NF) | 1NF を満たし、かつ非キー属性が主キーに完全従属している状態 |
第3正規形 (3NF) | 2NF を満たし、かつ非キー属性が他の非キー属性に推移従属していない状態 |
第4正規形 (4NF) | 3NF を満たし、かつ多値従属がない状態 |
第5正規形 (5NF) | 4NF を満たし、かつ結合従属がない状態 |
1NF (第1正規形)
1NF は、各列がスカラ値である状態を指します。 スカラ値とは、それ以上分割できない値のことです。 例えば、「住所」という列に「東京都渋谷区〇〇丁目△△番地」のように複数の情報が含まれている場合、1NF を満たしていません。 「都道府県」、「市区町村」、「番地」のように分割して、各列がスカラ値となるようにする必要があります。
2NF (第2正規形)
2NF は、1NF を満たし、かつ非キー属性が主キーに完全従属している状態を指します。 非キー属性とは、主キーではない属性のことです。 主キーに完全従属しているとは、主キーが変化すると非キー属性も必ず変化するということです。
例えば、以下のような表があったとします。
顧客ID | 氏名 | 購入商品 |
1 | 佐藤太郎 | スマホ |
1 | 佐藤太郎 | パソコン |
この表は、1NF を満たしていますが、2NF を満たしていません。 なぜなら、「購入商品」は主キーである「顧客ID」に完全従属していないからです。 顧客ID 1 に対して、複数の購入商品が存在するため、「購入商品」は「顧客ID」だけでは一意に決定できません。 この場合は、「購入ID」を新たに設定して、「購入商品」が「購入ID」に完全従属するようにします。
3NF (第3正規形)
3NF は、2NF を満たし、かつ非キー属性が他の非キー属性に推移従属していない状態を指します。 推移従属とは、非キー属性Aが非キー属性Bによって決定されるような関係のことです。
例えば、以下のような表があったとします。
顧客ID | 氏名 | 電話番号 | 郵便番号 |
1 | 佐藤太郎 | 090-1234-5678 | 150-0001 |
2 | 鈴木花子 | 080-9876-5432 | 108-0001 |
3 | 田中一郎 | 070-1111-2222 | 100-0001 |
この表は、2NF を満たしていますが、3NF を満たしていません。 なぜなら、「郵便番号」は「電話番号」によって決定されるからです。 電話番号によって郵便番号が一意に決定される場合、「郵便番号」は「電話番号」に推移従属しています。 この場合は、「住所情報表」を新たに作成して、「郵便番号」を「住所ID」に依存させるようにします。
4NF (第4正規形)と5NF (第5正規形)
4NF と 5NF は、さらに高度な正規化の概念であり、複雑なデータモデルや多値従属、結合従属を扱う際に必要となる場合が多いです。
3. 正規化はデータ分析や機械学習の前処理として重要
正規化は、データ分析や機械学習を行う上で非常に重要な前処理です。
- 分析の精度向上: データの整合性を高め、誤った情報や重複を排除することで、分析の精度を高めます。
- モデルの学習効率向上: 不要な情報を削除したり、適切な形式に変換することで、機械学習モデルの学習効率を向上させます。
例えば、機械学習モデルで顧客の購買行動を予測する場合、顧客情報や購入履歴などのデータを分析します。
この時、正規化されていないデータを使用すると、以下の様な問題が発生する可能性があります。
- 同じ顧客が異なるIDで登録されている: 顧客IDが重複しているため、同じ顧客の情報を統合することができません。
- 住所情報が不正確: 住所情報が異なる形式で入力されているため、同一の住所を認識することができません。
このような問題が発生すると、機械学習モデルは正確な予測を行うことができず、精度が低下してしまいます。 そのため、データ分析や機械学習を行う前に、必ず正規化を行い、データの品質を高めることが重要です。
4. 正規化は難しい?
正規化は、一見難しそうに見えるかもしれませんが、実際には様々なツールやライブラリが提供されています。
例えば、Excelでは、「データ」タブの「データツール」に正規化機能が搭載されています。 また、Pythonなどのプログラミング言語でも、PandasやSQLなどのライブラリを使用して正規化処理を行うことができます。
適切なツールやライブラリを使用することで、正規化処理はそれほど難しくありません
株式会社Elcamyは、データサイエンス、AI、機械学習の専門家集団です。 正規化を含むデータの前処理や、データ分析、機械学習モデルの構築など、様々な課題を解決することができます。
データ分析や機械学習でお困りの際は、ぜひお気軽にご相談ください。 専門スタッフが、お客様のニーズに合わせた最適なソリューションをご提案いたします。