忍者ブログ
統計、機械学習、AIを学んでいきたいと思います。 お役に立てば幸いです。

【機械学習の知識】データクレンジングの基本手順

機械学習モデルにどれだけ優れたアルゴリズムを使っても、入力するデータが汚れていては正しい予測結果は得られません。「ゴミを入れたらゴミが出てくる(Garbage In, Garbage Out)」を防ぐために、データを綺麗に整える必須のプロセスがデータクレンジングです。

1. 【 概要 】

データクレンジングとは、収集された生データの中に含まれる「欠損値(空欄)」「重複」「異常値(外れ値)」「表記ゆれ」などの不完全な部分を特定し、削除や修正を行う一連の処理です。機械学習の前処理において最も時間がかかり、かつモデルの精度を大きく左右する重要なプロセスです。


2. 【 基本手順 】

(1) 欠損値(データの空欄)の処理を行う
(2) 重複している不要なデータを削除する
(3) 異常値(外れ値)を検出して修正または削除する
(4) 単位や日付などのデータ形式を統一する
(5) 矛盾している不整合データを修正する

3. 整理:各ステップの具体的な処理内容

データクレンジングの具体的なアプローチと処理のポイントを、ステップごとに深く見ていきましょう。

【 各プロセスの具体的な処理内容 】

ステップ(1):欠損値の処理
データが存在しない空欄(欠損値)への対応は、大きく分けて3つあります。
1.1 削除:欠損値を含む行や列をまるごと消去する最もシンプルな方法です。
1.2 代表値で埋める:全体の「平均値」や「中央値」、カテゴリデータであれば最も頻出する「最頻値」で空欄を補填します。
1.3 予測補完:他の正常なデータをもとに、機械学習モデルなどを使って欠損している値を予測して埋める高度な手法です。

ステップ(2):重複データの削除
システムの不具合などで全く同じデータが複数回登録されてしまっている場合、モデルがそのデータを過剰に重視してしまう原因になります。一意な1件だけを残して重複を排除します。

ステップ(3):異常値の検出と修正
「年齢が150歳」「価格がマイナス」といった、現実的にあり得ない数値や、統計的に他から大きく外れた「外れ値」を検出します。これらは入力ミスであることが多いため、正しい値に修正するか、ノイズとして削除します。

ステップ(4):データ形式の統一
同じ「日付」でも「2026/06/27」と「2026年6月27日」が混在していると、コンピュータは別物と判断してしまいます。文字列の形式や数値の単位(円と千円など)を1つのフォーマットに一元化します。

ステップ(5):不整合データの修正
「ステータスは『退会済み』なのに、最終ログイン日が本日になっている」といった、データ間の矛盾(不整合)をチェックし、業務ルールや前後の文脈に合わせて正しい状態へと書き換えます。

4. 関連して押さえたい「データクレンジングと特徴量エンジニアリングの違い」

データ分析の現場では、「データクレンジング」と「特徴量エンジニアリング(特徴量生成)」という言葉がよく並んで登場しますが、これらは目的が異なります。

データクレンジングは、データに含まれるマイナス要素(間違い、汚れ、ノイズ)を取り除き、データを「マイナスからゼロ(正常な状態)」に戻す作業を指します。

一方で特徴量エンジニアリングは、正常になったデータ同士を掛け合わせたり加工したりして、AIが学習しやすい新しい項目を作り出す「ゼロからプラス(価値の向上)」にする作業です。強力な特徴量を作るためにも、まずは土台となるデータクレンジングが完璧に行われている必要があります。


5. 補足:Python(Pandas)での代表的なクレンジング関数

実際の機械学習開発(Python)で、データクレンジングを行う際によく使われる有名なPandasの関数をまとめました。
実務コードを読む際のカンペとしてお役立てください。

# 1. 欠損値の処理
df.dropna() # 欠損値を削除する
df.fillna(値) # 欠損値を指定した値(平均値など)で埋める

# 2. 重複データの処理
df.duplicated() # 重複しているデータを見つける
df.drop_duplicates() # 重複した行を削除する

# 3. データ形式の統一
pd.to_datetime(df['日付']) # 文字列を日付型に一括変換する

6. まとめ

データサイエンスや機械学習の現場において、モデルのポテンシャルを最大限に引き出すための最重要項目が、この「データクレンジング」です。欠損値処理(削除・代表値補填・予測補完)、重複削除、異常値修正、形式統一、不整合修正という5つの基本手順を徹底し、AIがスムーズに学習できる『綺麗で誠実なデータ』を用意できるようになりましょう!



PR

【Julia】Juliaでの変数宣言・演算・文字列補間の基本手順

前回はソースファイル(.jl)の作成と実行方法を学びました。今回はプログラムの基本中の基本である「変数の宣言」、数式を扱う「演算」、そして変数を綺麗に画面に出力するための「文字列補間」の手順をまとめて解説します。

※本記事の手順は、MacBook Air(macOS 15.7.7)の環境にて実際に動作を確認したログをベースに作成しています。

1. 【 概要 】

Juliaは数値計算や機械学習に強みを持つ言語であり、変数の扱いや計算(演算)が非常に直感的です。また、他の言語のように `+` 記号で文字列をダラダラと連結するのではなく、文字列の中に変数を直接埋め込める「文字列補間」という強力で美しい機能が用意されています。今回はこれらの基本操作を整理します。


2. 【 基本手順 】

(1) `変数名 = 値` の形で、型宣言なしで自由に変数を定義する
(2) 四則演算(`+`, `-`, `*`, `/`)などを使って計算を行う
(3) `"${変数名}"` の形式(文字列補間)を使い、文字列内へ埋め込んで出力する

3. 整理:各ステップの具体的な処理内容

各処理のポイントと、Juliaならではの特徴をステップごとに具体的に見ていきましょう。

【 変数・演算・文字列補間の具体的な処理内容 】

ステップ(1):変数の宣言
Juliaでは、事前にデータの型(数値や文字列など)を指定する必要はありません。
`x = 10` や `name = "Julia"` と書くだけで、自動的に適切な型として認識されます。

ステップ(2):演算(計算)
一般的な四則演算がそのまま使えます。足し算は `+`、引き算は `-`、掛け算は `*`、割り算は `/` です。
なお、文字列同士を結合させたい場合に `+` を使うとエラーになるため注意が必要です。

ステップ(3):文字列補間(${変数名})
変数を文章に混ぜて画面に出力したいとき、`${変数名}` という書き方が大本命の機能です。
ダブルクォーテーション `""` の中にそのまま変数を埋め込むことができます。
コードがすっきりして1行が短くなり、抜群に読みやすくなります。

4. 関連して押さえたい「JupyterやREPLでの効率的な確認方法」

機械学習のデータ前処理などでは、変数の値が正しく書き換わっているか、計算結果が意図通りかを頻繁に確認することになります。

変数をそのまま確認したい場合は、対話型環境(REPL)であれば `println()` を使わず、ただ変数名を入力してエンターキーを押すだけでもその中身を表示してくれます。これによってテンポよくデバッグを行うことが可能です。

また、Juliaの文字列補間は、単に変数を埋め込むだけでなく、`${ x + y }` のように**波括弧の中で直接計算をさせることも可能**です。わざわざ新しい変数を作って計算結果を代入しなくても、出力のタイミングでサクッと計算結果を表示させられるため、実務コードでも非常に多用されます。


5. 補足:実際のターミナル操作ログ

対話型環境(REPL)を起動し、変数の宣言から、演算、そして文字列補間(${変数名})を試した際の操作ログです。
1行の長さが短くなるように、改行を意識して実行しています。

% julia

# 1. 変数の宣言
julia> price = 250
250

julia> tax = 1.1
1.1

# 2. 演算(掛け算)
julia> total = price * tax
275.0

# 3. 文字列補間(${変数名})を使った出力
julia> println("合計は ${total} 円です")
合計は 275.0 円です

# 4. 応用:中で直接計算させる文字列補間
julia> println("100 + 200 = ${100 + 200}")
100 + 200 = 300

julia> exit()
%

6. まとめ

Juliaにおける「変数の定義」「計算(演算)」そして「`${変数名}` を使った文字列補間」の基本手順をマスターしました。この3つのセットがあれば、データを変数に格納し、必要な計算を施し、結果を綺麗な文章としてターミナルに表示するプログラムが簡単に作れるようになります。次回は、これらを応用した制御構文(条件分岐やループ処理)へとステップアップしていきましょう!


【Julia】Juliaでソースファイルを作成して実行する手順

前回はターミナルの対話型環境(REPL)を使ってその場でコードを実行しましたが、本格的なプログラム開発や機械学習のモデル構築では、コードをファイルに保存して実行するのが一般的です。今回は、拡張子「.jl」のソースファイルを作成し、ターミナルから一発で実行するまでの手順を解説します。

※本記事の手順は、MacBook Air(macOS 15.7.7)の環境にて実際に動作を確認したログをベースに作成しています。

1. 【 概要 】

Juliaのプログラムが書かれたテキストファイルは、ソースファイル(またはスクリプトファイル)と呼ばれ、拡張子「.jl」を付けて保存します。今回は、使い慣れたターミナルのコマンド操作を使ってソースファイルを作成し、対話型環境を起動することなく直接ファイルを指定してプログラムを実行する手順を整理します。


2. 【 基本手順 】

(1) 拡張子「.jl」を付けたソースファイルを作成する
(2) ファイル内に実行したいJuliaのコードを記述して保存する
(3) ターミナルから `julia ファイル名` コマンドで実行する

3. 整理:各ステップの具体的な処理内容

ターミナル上でのファイル操作と実行の流れを、ステップごとに具体的に見ていきましょう。

【 ファイル作成と実行の具体的な処理内容 】

ステップ(1)&(2):ソースファイルの作成と編集
作業用のディレクトリ(フォルダ)に移動し、`main.jl` という名前のファイルを作成します。
ターミナルから `nano` や `vim` などのエディタを開き、ファイル内にJuliaのコードを書き込んで保存します。

ステップ(3):ターミナルからの直接実行
ファイルが保存できたら、ターミナルで `julia main.jl` と入力してエンターキーを押します。
対話型環境(REPL)の画面を開くことなく、Juliaがファイルを読み込んで内部のコードを上から順に高速実行し、結果をターミナルに直接出力して処理が終了します。

4. 関連して押さえたい「対話型環境(REPL)とファイル実行の使い分け」

Juliaを使った開発では、これまでに学んだ「対話型環境(REPL)」と、今回の「ファイル実行」を目的や状況に応じて使い分けるのが鉄則です。

対話型環境(REPL)は、1行ずつコードを入力してその場で結果を確認できるため、「この関数はどんな動きをするだろう?」「このデータの形状はどうなっているだろう?」といった、試験的なコードの動作確認やデータの簡単な分析・可視化に向いています。

一方、ファイル実行は、一度記述した一連の処理(データの読み込み、前処理、学習、結果の保存など)を何度でも正確に再現できるため、本番用のプログラム構築や、長時間の計算を行う機械学習のバッチ処理などに向いています。実際の開発では、REPLでパーツごとにテストしたコードを、最終的に一つの `.jl` ファイルにまとめるという流れが主流になります。


5. 補足:実際のターミナル操作ログ

ターミナル上で簡単なソースファイルを作成し、それをJuliaで直接実行した際の操作ログをまとめました。
コードやコマンドが1行で長くなりすぎないよう、適宜改行を入れて読みやすくしています。

# 1. ファイルへコードを書き込み
% echo '
println("Hello from script file!")
' > main.jl

# 2. ファイルの中身を確認
% cat main.jl
println("Hello from script file!")

# 3. juliaコマンドで直接実行
% julia main.jl
Hello from script file!
%

6. まとめ

Juliaの環境構築、対話型環境での動作確認に続き、今回の「ソースファイル(.jl)からの実行」をマスターしたことで、本格的なプログラミングを行うための基本手順がすべて揃いました。これからはどれだけ長いコードや複雑な機械学習アルゴリズムであっても、ファイルに保存しておくことでいつでも一瞬で呼び出して実行できます。強力なJuliaスクリプトをガシガシ書いていきましょう!


【Julia】Julia的インストールとHello Worldまでの手順

機械学習やデータサイエンスの分野で、Pythonに続く次世代の高速なプログラミング言語として注目を集める「Julia」。環境構築と聞くと難しく感じるかもしれませんが、ターミナルが好きなMacユーザーなら、コマンド数発で驚くほどシンプルに導入が完了します。今回は、インストールから最初のプログラムを動かすまでをすべてターミナル完結で行う手順を解説します。

※本記事の手順は、MacBook Air(macOS 15.7.7)の環境にて実際に動作を確認したログをベースに作成しています。

1. 【 概要 】

Juliaは、Pythonのような「書きやすさ」と、C言語のような「圧倒的な実行速度」を両立したオープンソースのプログラミング言語です。今回は、Mac環境においてブラウザやインストーラーの画面を一切開かず、パッケージマネージャー(Homebrew)を利用してターミナルだけでJuliaを導入し、そのまま最速で「Hello World」を出力させるまでの手順を整理します。


2. 【 基本手順 】

(1) Homebrew(cask)を使ってJuliaをターミナルからインストールする
(2) インストールが成功したか、バージョン確認コマンドでチェックする
(3) ターミナルでJuliaの対話型環境を起動し、Hello Worldを出力する

3. 整理:各ステップの具体的な処理内容

GUIツールを一切使わず、コマンドラインだけでスマートに進めていきます。それぞれのステップを具体的に見ていきましょう。

【 インストールと実行の具体的な処理内容 】

ステップ(1):Homebrewでのインストール
Macの定番パッケージマネージャーであるHomebrewを利用します。ターミナルを開き、`brew install --cask julia` コマンドを実行します。これにより、自動的にMacの環境に合わせた最適なJuliaのバイナリがダウンロードされ、アプリケーションフォルダへの配置やパスの自動設定までがワンコマンドで完了します。

ステップ(2):動作とバージョンの確認
インストールが終わったら、無事にシステムがJuliaを認識しているかを確認します。ターミナルで `julia --version` を実行し、現在導入されたJuliaのバージョン番号が正常に返ってくるかを確認します。

ステップ(3):Hello Worldの出力
ターミナルに `julia` とだけ打ち込んでエンターキーを押すと、Juliaの対話型実行環境(REPL)が起動します。プロンプトが切り替わったら、文字列を出力する関数 `println()` を実行し、画面に「Hello, World!」が表示されることを確認します。最後は `exit()` でターミナルに戻ります。

4. 関連して押さえたい「Juliaが機械学習で注目される理由」

なぜ今、データサイエンスの現場でJuliaを学ぶ必要があるのでしょうか?それはJuliaが持つ「2つの言語の問題(Two-Language Problem)」の解決という特徴にあります。

従来の機械学習では、プログラミングのしやすさから「Python」でコードを書き、速度が必要な計算処理の内部(ライブラリ)は「C言語」や「C++」で開発するという、2つの言語を組み合わせるアプローチが一般的でした。しかし、これでは開発やメンテナンスが非常に複雑になります。

Juliaは、コード自体は非常にシンプルで読みやすいにもかかわらず、内部で高度なJITコンパイル(実行時コンパイル)を行うため、C言語並みの超高速処理を単体で実現できます。この「1つの言語で全て完結する」強みが、大規模なデータを扱う機械学習の現場で熱視線を浴びている理由です。


5. 補足:実際のターミナル操作ログ

ターミナル愛好家のために、実際に実行するコマンドと、その際に出力される実際のログをまとめました。エラーなく進めるためのカンペとしてご活用ください。

# 1. Juliaのインストール
% brew install --cask julia
==> Downloading https://julialang-s3.julialang.org/...
==> Installing Cask julia
julia was successfully installed!

# 2. バージョン確認でパスが通っているかチェック
% julia --version
julia version 1.12.6

# 3. Juliaを起動してHello Worldを実行
% julia
               _
   _       _ _(_)_     |  Documentation: https://docs.julialang.org
  (_)     | (_) (_)    |
   _ _   _| |_  __ _   |  Type "?" for help, "]?" for Pkg help.
  | | | | | | |/ _` |  |
  | | |_| | | | (_| |  |  Version 1.12.6 (2026-04-09)
&nbsp_/ |\__'_|_|_|\__'_|  |  Official https://julialang.org release
|__/                   |

julia> println("Hello, World!")
Hello, World!

julia> exit()
%

6. まとめ

データサイエンスや機械学習の新定番として期待されている言語「Julia」も、ターミナルとHomebrewを使えば、一切マウスに触れることなく一瞬で環境構築が完了します。パッケージ管理(Pkg)や外部ライブラリの呼び出しもすべてターミナル上で美しく完結させられるのがJuliaの魅力です。強力な計算環境が手に入ったところで、新しい言語の世界へ一歩踏み出してみましょう!



【機械学習の知識】数式なしでわかる統計モーメントの仕組みとアルゴリズム

データの集まり(分布)がどのような形をしているかを数値で表現したい。平均値や分散だけでなく、左右の非対称さや尖り具合までを系統的に捉えるための概念が、統計モーメント(積率)です。

1. 【 概要 】

統計モーメントとは、確率分布やデータの「形状の特徴」を段階的に切り出すための指標です。1次、2次、3次、4次と次数が上がるにつれて、データの中心位置から始まり、広がり方、非対称性、尖り具合といった、より詳細な形状の情報が得られるようになります。


2. 【 基本アルゴリズム 】

1次モーメント ・・ 中心の位置の分布(平均値)
データの重心がどこにあるかを表す、最も基本的な指標です。

2次モーメント ・・ ちらばり(分散)
データが中心(平均)からどれくらい広く散らばっているかを表します。

3次モーメント ・• 歪度(わいど)
分布の左右の「非対称さ」や傾き具合を表します。

4次モーメント ・• 尖度(せんど)
分布の頂点がどれくらい「尖っているか」、または裾野がどれくらい厚いかを表します。

3. 整理:各次数の具体的な処理内容

統計モーメントは、次数ごとにデータの異なる特徴を計算します。それぞれのステップと意味を具体的に見ていきましょう。

【 各モーメントの具体的な処理内容 】

1次モーメント(平均値)の処理
すべてのデータを足し合わせて、データの個数で割ることで、分布の「重心(中心の位置)」を特定します。

2次モーメント(分散)の処理
各データが「平均値からどれだけ離れているか(偏差)」を計算し、それを2乗したものの平均をとります。2乗することで、中心からの「距離(ちらばり)」を正の数として正しく評価できます。

3次モーメント(歪度)の処理
平均からの偏差を3乗して計算します。3乗するとプラスとマイナスの符号が残るため、分布の裾が右側に伸びているか、左側に伸びているかという「非対称さ」が分かります。

4次モーメント(尖度)の処理
平均からの偏差を4乗して計算します。4乗することで、中心から極端に離れたデータ(外れ値)の影響が強調され、分布の頂点の「尖り具合」や「裾野の厚み(外れ値の出やすさ)」を浮き彫りにします。

4. 関連して押さえたい「機械学習(特徴量エンジニアリング)への応用」

この統計モーメントは、機械学習において非常に重要な「特徴量エンジニアリング」の技術として応用されています。

例えば、音声データやセンサーデータ(時系列データ)を機械学習モデルに入力する際、そのままの波形データでは複雑すぎて学習がうまくいきません。そこで、一定時間ごとのデータの「平均(1次)」「分散(2次)」「歪度(3次)」「尖度(4次)」を計算し、波形の特徴をぎゅっと凝縮した数値(特徴量)に変換してからモデルに投入します。

このように、統計モーメントを使うことで、複雑なデータの性質をシンプルかつ強力に表現できるようになります。


5. 補足:正規分布を基準にする「歪度と尖度」の数値

データ分析で3次・4次モーメント(歪度・尖度)を扱う際、最も美しい対称の形である「正規分布」が基準になります。

歪度:完全に左右対称な正規分布では「0」になります。右に裾が長い分布(左側にデータが集中)ならプラス、左に裾が長い分布ならマイナスの値をとります。
尖度:数式の定義の仕方にもよりますが(正規分布の値を引く補正を行う場合)、正規分布の尖度を「0」とします。正規分布より頂点が鋭く尖っている分布はプラス(正)、平べったい分布はマイナス(負)の値をとるため、視覚的にデータの尖り具合を判断できます。


6. まとめ

データサイエンスや機械学習の現場において「データの形状を1次から4次の段階的な特徴で表す手法」と言えば、この統計モーメントです。中心(1次)、ちらばり(2次)、歪度(3次)、尖度(4次)というアルゴリズムの階層的な繋がりを理解し、データの性質を深く見極められるようになりましょう!